Write tests #5
This commit is contained in:
parent
87252b6c5d
commit
5f7a0a4abd
103
tests/test_list.py
Normal file
103
tests/test_list.py
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
'''
|
||||||
|
Tests for /list route
|
||||||
|
'''
|
||||||
|
from types import SimpleNamespace
|
||||||
|
|
||||||
|
|
||||||
|
_PF_TABLE_LIST = b''' 192.0.2.66
|
||||||
|
Cleared: Sat Jan 7 12:50:36 2023
|
||||||
|
In/Block: [ Packets: 0 Bytes: 0 ]
|
||||||
|
In/Pass: [ Packets: 0 Bytes: 0 ]
|
||||||
|
Out/Block: [ Packets: 0 Bytes: 0 ]
|
||||||
|
Out/Pass: [ Packets: 0 Bytes: 0 ]
|
||||||
|
2001:db8::abad:cafe
|
||||||
|
Cleared: Sat Jan 7 05:13:53 2023
|
||||||
|
In/Block: [ Packets: 4 Bytes: 240 ]
|
||||||
|
In/Pass: [ Packets: 0 Bytes: 0 ]
|
||||||
|
Out/Block: [ Packets: 0 Bytes: 0 ]
|
||||||
|
Out/Pass: [ Packets: 0 Bytes: 0 ]
|
||||||
|
2001:db8::abad:f00d:cafe
|
||||||
|
Cleared: Sat Jan 7 05:05:16 2023
|
||||||
|
In/Block: [ Packets: 48 Bytes: 2880 ]
|
||||||
|
In/Pass: [ Packets: 0 Bytes: 0 ]
|
||||||
|
Out/Block: [ Packets: 0 Bytes: 0 ]
|
||||||
|
Out/Pass: [ Packets: 0 Bytes: 0 ]'''
|
||||||
|
|
||||||
|
_LIST_RESULT = [{'addr': '192.0.2.66',
|
||||||
|
'date': 'Sat Jan 7 12:50:36 2023',
|
||||||
|
'in_pckt_block': '0',
|
||||||
|
'in_bytes_block': '0',
|
||||||
|
'in_pckt_pass': '0',
|
||||||
|
'in_bytes_pass': '0',
|
||||||
|
'out_pckt_block': '0',
|
||||||
|
'out_bytes_block': '0',
|
||||||
|
'out_pckt_pass': '0',
|
||||||
|
'out_bytes_pass': '0'},
|
||||||
|
{'addr': '2001:db8::abad:cafe',
|
||||||
|
'date': 'Sat Jan 7 05:13:53 2023',
|
||||||
|
'in_pckt_block': '4',
|
||||||
|
'in_bytes_block': '240',
|
||||||
|
'in_pckt_pass': '0',
|
||||||
|
'in_bytes_pass': '0',
|
||||||
|
'out_pckt_block': '0',
|
||||||
|
'out_bytes_block': '0',
|
||||||
|
'out_pckt_pass': '0',
|
||||||
|
'out_bytes_pass': '0'},
|
||||||
|
{'addr': '2001:db8::abad:f00d:cafe',
|
||||||
|
'date': 'Sat Jan 7 05:05:16 2023',
|
||||||
|
'in_pckt_block': '48',
|
||||||
|
'in_bytes_block': '2880',
|
||||||
|
'in_pckt_pass': '0',
|
||||||
|
'in_bytes_pass': '0',
|
||||||
|
'out_pckt_block': '0',
|
||||||
|
'out_bytes_block': '0',
|
||||||
|
'out_pckt_pass': '0',
|
||||||
|
'out_bytes_pass': '0'}]
|
||||||
|
|
||||||
|
|
||||||
|
def test_list_single_table(client, mocker, valid_credentials):
|
||||||
|
'''
|
||||||
|
List a single pf table using the fail2ban jail name
|
||||||
|
'''
|
||||||
|
|
||||||
|
def noop():
|
||||||
|
pass
|
||||||
|
|
||||||
|
run_res = SimpleNamespace()
|
||||||
|
run_res.stdout = _PF_TABLE_LIST
|
||||||
|
run_res.stderr = b'No ALTQ support in kernel\nALTQ related functions disabled\n'
|
||||||
|
run_res.returncode = 0
|
||||||
|
run_res.check_returncode = noop
|
||||||
|
|
||||||
|
mocker.patch('jail2ban.pfctl.run', return_value=run_res)
|
||||||
|
|
||||||
|
response = client.get("/list/sshd",
|
||||||
|
headers={"Authorization":
|
||||||
|
"Basic " + valid_credentials})
|
||||||
|
|
||||||
|
assert response.json['anchor'] == 'f2b-sshd/test.example.com'
|
||||||
|
assert response.json['result'] == _LIST_RESULT
|
||||||
|
|
||||||
|
|
||||||
|
def test_list_nonexistent_table(client, mocker, valid_credentials):
|
||||||
|
'''
|
||||||
|
Test for nonexistent table. Should result in a 404 not found
|
||||||
|
'''
|
||||||
|
def noop():
|
||||||
|
pass
|
||||||
|
|
||||||
|
run_res = SimpleNamespace()
|
||||||
|
run_res.stdout = b''
|
||||||
|
run_res.stderr = b'No ALTQ support in kernel\nALTQ related functions disabled\n'
|
||||||
|
run_res.returncode = 255
|
||||||
|
run_res.check_returncode = noop
|
||||||
|
|
||||||
|
mocker.patch('jail2ban.pfctl.run', return_value=run_res)
|
||||||
|
|
||||||
|
response = client.get("/list/nonexistent",
|
||||||
|
headers={"Authorization":
|
||||||
|
"Basic " + valid_credentials})
|
||||||
|
|
||||||
|
assert response.status_code == 404
|
||||||
|
assert response.json['error'] == "'nonexistent' is not " \
|
||||||
|
"a known fail2ban jail"
|
Loading…
x
Reference in New Issue
Block a user