github.com/crowdsecurity/crowdsec@v1.6.1/docker/test/tests/test_agent.py (about) 1 #!/usr/bin/env python 2 3 from http import HTTPStatus 4 5 import pytest 6 7 pytestmark = pytest.mark.docker 8 9 10 def test_no_agent(crowdsec, flavor): 11 """Test DISABLE_AGENT=true""" 12 env = { 13 'DISABLE_AGENT': 'true', 14 } 15 with crowdsec(flavor=flavor, environment=env) as cs: 16 cs.wait_for_log("*CrowdSec Local API listening on *:8080*") 17 cs.wait_for_http(8080, '/health', want_status=HTTPStatus.OK) 18 res = cs.cont.exec_run('cscli lapi status') 19 assert res.exit_code == 0 20 stdout = res.output.decode() 21 assert "You can successfully interact with Local API (LAPI)" in stdout 22 23 24 def test_machine_register(crowdsec, flavor, tmp_path_factory): 25 """A local agent is always registered for use by cscli""" 26 27 data_dir = tmp_path_factory.mktemp('data') 28 29 env = { 30 'DISABLE_AGENT': 'true', 31 } 32 33 volumes = { 34 data_dir: {'bind': '/var/lib/crowdsec/data', 'mode': 'rw'}, 35 } 36 37 with crowdsec(flavor=flavor, environment=env, volumes=volumes) as cs: 38 cs.wait_for_log([ 39 "*Generate local agent credentials*", 40 "*CrowdSec Local API listening on *:8080*", 41 ]) 42 cs.wait_for_http(8080, '/health', want_status=HTTPStatus.OK) 43 res = cs.cont.exec_run('cscli lapi status') 44 assert res.exit_code == 0 45 stdout = res.output.decode() 46 assert "You can successfully interact with Local API (LAPI)" in stdout 47 48 # The local agent is not registered, because we didn't persist local_api_credentials.yaml 49 50 with crowdsec(flavor=flavor, environment=env, volumes=volumes) as cs: 51 cs.wait_for_log([ 52 "*Generate local agent credentials*", 53 "*CrowdSec Local API listening on *:8080*", 54 ]) 55 cs.wait_for_http(8080, '/health', want_status=HTTPStatus.OK) 56 res = cs.cont.exec_run('cscli lapi status') 57 assert res.exit_code == 0 58 stdout = res.output.decode() 59 assert "You can successfully interact with Local API (LAPI)" in stdout 60 61 config_dir = tmp_path_factory.mktemp('config') 62 63 volumes[config_dir] = {'bind': '/etc/crowdsec', 'mode': 'rw'} 64 65 with crowdsec(flavor=flavor, environment=env, volumes=volumes) as cs: 66 cs.wait_for_log([ 67 "*Generate local agent credentials*", 68 "*CrowdSec Local API listening on *:8080*", 69 ]) 70 cs.wait_for_http(8080, '/health', want_status=HTTPStatus.OK) 71 res = cs.cont.exec_run('cscli lapi status') 72 assert res.exit_code == 0 73 stdout = res.output.decode() 74 assert "You can successfully interact with Local API (LAPI)" in stdout 75 76 # The local agent is now already registered 77 78 with crowdsec(flavor=flavor, environment=env, volumes=volumes) as cs: 79 cs.wait_for_log([ 80 "*Local agent already registered*", 81 "*CrowdSec Local API listening on *:8080*", 82 ]) 83 cs.wait_for_http(8080, '/health', want_status=HTTPStatus.OK) 84 res = cs.cont.exec_run('cscli lapi status') 85 assert res.exit_code == 0 86 stdout = res.output.decode() 87 assert "You can successfully interact with Local API (LAPI)" in stdout