crowdsec/docker/test/tests/test_hub_postoverflows.py
mmetc 301782ae18
Docker tests: use pytest-cs 0.2 (#2079)
* Use pytest-cs 0.2

* fix pipenv cache key

* Cache docker layers

* Load build images from buildx to docker

* CI: commit Pipfile.lock

* Add full docker tag

* Cache only amd64 docker layers

* Cache layer mode=min
2023-02-28 17:49:32 +01:00

59 lines
1.9 KiB
Python

#!/usr/bin/env python
"""
Test postoverflow management
"""
from http import HTTPStatus
import json
import pytest
pytestmark = pytest.mark.docker
def test_install_two_postoverflows(crowdsec, flavor):
"""Test installing postoverflows at startup"""
it1 = 'crowdsecurity/cdn-whitelist'
it2 = 'crowdsecurity/ipv6_to_range'
env = {
'POSTOVERFLOWS': f'{it1} {it2}'
}
with crowdsec(flavor=flavor, environment=env) as cs:
cs.wait_for_log([
f'*postoverflows install "{it1}"*',
f'*postoverflows install "{it2}"*',
"*Starting processing data*"
])
cs.wait_for_http(8080, '/health', want_status=HTTPStatus.OK)
res = cs.cont.exec_run('cscli postoverflows list -o json')
assert res.exit_code == 0
j = json.loads(res.output)
items = {c['name']: c for c in j['postoverflows']}
assert items[it1]['status'] == 'enabled'
assert items[it2]['status'] == 'enabled'
def test_disable_postoverflow():
"""Test removing a pre-installed postoverflow at startup"""
pytest.skip("we don't preinstall postoverflows")
def test_install_and_disable_postoverflow(crowdsec, flavor):
"""Declare a postoverflow to install AND disable: disable wins"""
it = 'crowdsecurity/cdn-whitelist'
env = {
'POSTOVERFLOWS': it,
'DISABLE_POSTOVERFLOWS': it,
}
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 postoverflows list -o json')
assert res.exit_code == 0
j = json.loads(res.output)
items = {c['name'] for c in j['postoverflows']}
assert it not in items
logs = cs.log_lines()
# check that there was no attempt to install
assert not any(f'postoverflows install "{it}"' in line for line in logs)