*** Settings *** Documentation Ban History feature coverage — table, filters, ... per-IP timeline, archive vs fail2ban source. Resource ${CURDIR}/../resources/common.resource Resource ${CURDIR}/../resources/auth.resource Suite Setup Wait For Backend Health *** Test Cases *** History Page Renders Login As Admin Go To ${FRONTEND_URL}/history Wait For Elements State css=[data-testid="history-page"] visible timeout=15s Page Should Contain History Close Browser History Page Shows Archive Source Badge By Default [Documentation] Per Features.md, default source on history page is BanGUI archive. Login As Admin Go To ${FRONTEND_URL}/history Wait For Elements State css=[data-testid="history-page"] visible timeout=15s Sleep 2s ${has_arch}= Run Keyword And Return Status ... Get Text body contains BanGUI DB ${has_live}= Run Keyword And Return Status ... Get Text body contains fail2ban DB Should Be True ${has_arch} or ${has_live} msg=No source badge visible on history page Close Browser History Page Default 7d Range Login As Admin Go To ${FRONTEND_URL}/history Wait For Elements State css=[data-testid="history-page"] visible timeout=15s Sleep 1s ${has_7d}= Run Keyword And Return Status ... Get Text body contains Last 7 days Close Browser History Endpoint Returns Paginated Data Set Random Xff Header Login Via HTTP ${headers}= Create Dictionary X-BanGUI-Request 1 Set To Dictionary ${headers} X-Forwarded-For ${XFF_HEADER} ${resp}= GET On Session bangsess /api/v1/history ... headers=${headers} expected_status=any Should Be True ${resp.status_code} in [200, 204] History Archive Endpoint Returns Data Set Random Xff Header Login Via HTTP ${headers}= Create Dictionary X-BanGUI-Request 1 Set To Dictionary ${headers} X-Forwarded-For ${XFF_HEADER} ${resp}= GET On Session bangsess /api/v1/history/archive ... headers=${headers} expected_status=any Should Be True ${resp.status_code} in [200, 204] History Per IP Endpoint Returns Data Set Random Xff Header Login Via HTTP ${ip}= Generate Unique Ip ${headers}= Create Dictionary X-BanGUI-Request 1 Set To Dictionary ${headers} X-Forwarded-For ${XFF_HEADER} ${resp}= GET On Session bangsess /api/v1/history/${ip} ... headers=${headers} expected_status=any Should Be True ${resp.status_code} in [200, 204] History Filter By Jail Returns Data Set Random Xff Header Login Via HTTP ${headers}= Create Dictionary X-BanGUI-Request 1 Set To Dictionary ${headers} X-Forwarded-For ${XFF_HEADER} ${resp}= GET On Session bangsess /api/v1/history ... params=jail=sshd&range=7d headers=${headers} expected_status=any Should Be True ${resp.status_code} in [200, 204] History Filter By Source Fail2ban Set Random Xff Header Login Via HTTP ${headers}= Create Dictionary X-BanGUI-Request 1 Set To Dictionary ${headers} X-Forwarded-For ${XFF_HEADER} ${resp}= GET On Session bangsess /api/v1/history ... params=source=fail2ban&range=24h headers=${headers} expected_status=any Should Be True ${resp.status_code} in [200, 204] History Filter By Source Archive Set Random Xff Header Login Via HTTP ${headers}= Create Dictionary X-BanGUI-Request 1 Set To Dictionary ${headers} X-Forwarded-For ${XFF_HEADER} ${resp}= GET On Session bangsess /api/v1/history ... params=source=archive&range=7d headers=${headers} expected_status=any Should Be True ${resp.status_code} in [200, 204] History URL Params Honored [Documentation] Page should load with ?page_size=500&source=fail2ban params. Login As Admin Go To ${FRONTEND_URL}/history?page_size=500&source=fail2ban Wait For Load State domcontentloaded Sleep 2s ${url}= Get URL Should Contain ${url} page_size=500 Should Contain ${url} source=fail2ban Close Browser