crowdsec/docker/test/tests/test_capi.py
2025-02-17 11:04:26 +01:00

46 lines
1.5 KiB
Python

from http import HTTPStatus
import pytest
pytestmark = pytest.mark.docker
def test_no_capi(crowdsec, flavor: str) -> None:
"""Test no CAPI (disabled by default in tests)"""
env = {
"DISABLE_ONLINE_API": "true",
}
with crowdsec(flavor=flavor, environment=env) as cs:
cs.wait_for_log("*Starting processing data*")
cs.wait_for_http(8080, "/health", want_status=HTTPStatus.OK)
res = cs.cont.exec_run("cscli capi status")
assert res.exit_code == 1
assert "You can successfully interact with Central API (CAPI)" not in res.output.decode()
logs = cs.log_lines()
assert not any("Successfully registered to Central API (CAPI)" in line for line in logs)
assert not any("Registration to online API done" in line for line in logs)
def test_capi(crowdsec, flavor: str) -> None:
"""Test CAPI"""
env = {
"DISABLE_ONLINE_API": "false",
}
with crowdsec(flavor=flavor, environment=env) as cs:
cs.wait_for_log("*Starting processing data*")
cs.wait_for_http(8080, "/health", want_status=HTTPStatus.OK)
res = cs.cont.exec_run("cscli capi status")
assert res.exit_code == 0
assert "You can successfully interact with Central API (CAPI)" in res.output.decode()
cs.wait_for_log(
[
"*Successfully registered to Central API (CAPI)*",
"*Registration to online API done*",
]
)