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