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

45 lines
1.5 KiB
Python

"""
Test bouncer management: pre-installed, run-time installation and removal.
"""
import json
from http import HTTPStatus
import pytest
pytestmark = pytest.mark.docker
def test_register_bouncer_env(crowdsec, flavor: str) -> None:
"""Test installing bouncers at startup, from envvar"""
env = {"BOUNCER_KEY_bouncer1name": "bouncer1key", "BOUNCER_KEY_bouncer2name": "bouncer2key"}
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 bouncers list -o json")
assert res.exit_code == 0
j = json.loads(res.output)
assert len(j) == 2
bouncer1, bouncer2 = j
assert bouncer1["name"] == "bouncer1name"
assert bouncer2["name"] == "bouncer2name"
# add a second bouncer at runtime
res = cs.cont.exec_run("cscli bouncers add bouncer3name -k bouncer3key")
assert res.exit_code == 0
res = cs.cont.exec_run("cscli bouncers list -o json")
assert res.exit_code == 0
j = json.loads(res.output)
assert len(j) == 3
bouncer3 = j[2]
assert bouncer3["name"] == "bouncer3name"
# remove all bouncers
res = cs.cont.exec_run("cscli bouncers delete bouncer1name bouncer2name bouncer3name")
assert res.exit_code == 0
res = cs.cont.exec_run("cscli bouncers list -o json")
assert res.exit_code == 0
j = json.loads(res.output)
assert len(j) == 0