@ -21,10 +21,11 @@ def set_response_with_filter():
f . write ( test_return_data )
return None
def run_filter_test ( client , content_filter ) :
def run_filter_test ( client , live_server , content_filter ) :
# Response WITHOUT the filter ID element
set_original_response ( )
# Give the endpoint time to spin up
time . sleep ( 1 )
# cleanup for the next
client . get (
url_for ( " form_delete " , uuid = " all " ) ,
@ -79,6 +80,7 @@ def run_filter_test(client, content_filter):
" include_filters " : content_filter ,
" fetch_backend " : " html_requests " } )
# A POST here will also reset the filter failure counter (filter_failure_notification_threshold_attempts)
res = client . post (
url_for ( " edit_page " , uuid = " first " ) ,
data = notification_form_data ,
@ -91,20 +93,21 @@ def run_filter_test(client, content_filter):
# Now the notification should not exist, because we didnt reach the threshold
assert not os . path . isfile ( " test-datastore/notification.txt " )
# -2 because we would have checked twice above (on adding and on edit )
# recheck it up to just before the threshold, including the fact that in the previous POST it would have rechecked (and incremented )
for i in range ( 0 , App . _FILTER_FAILURE_THRESHOLD_ATTEMPTS_DEFAULT - 2 ) :
res = client. get ( url_for ( " form_watch_checknow " ) , follow_redirects = True )
client. get ( url_for ( " form_watch_checknow " ) , follow_redirects = True )
wait_for_all_checks ( client )
assert not os . path . isfile ( " test-datastore/notification.txt " ) , f " test-datastore/notification.txt should not exist - Attempt { i } "
time . sleep ( 2 ) # delay for apprise to fire
assert not os . path . isfile ( " test-datastore/notification.txt " ) , f " test-datastore/notification.txt should not exist - Attempt { i } when threshold is { App . _FILTER_FAILURE_THRESHOLD_ATTEMPTS_DEFAULT } "
# We should see something in the frontend
res = client . get ( url_for ( " index " ) )
assert b ' Warning, no filters were found ' in res . data
# One more check should trigger it (see -2 above)
client . get ( url_for ( " form_watch_checknow " ) , follow_redirects = True )
wait_for_all_checks ( client )
# One more check should trigger the _FILTER_FAILURE_THRESHOLD_ATTEMPTS_DEFAULT threshold
client . get ( url_for ( " form_watch_checknow " ) , follow_redirects = True )
wait_for_all_checks ( client )
time . sleep ( 2 ) # delay for apprise to fire
# Now it should exist and contain our "filter not found" alert
assert os . path . isfile ( " test-datastore/notification.txt " )
@ -149,13 +152,9 @@ def test_setup(live_server):
live_server_setup ( live_server )
def test_check_include_filters_failure_notification ( client , live_server ) :
set_original_response ( )
wait_for_all_checks ( client )
run_filter_test ( client , ' #nope-doesnt-exist ' )
run_filter_test ( client , live_server , ' #nope-doesnt-exist ' )
def test_check_xpath_filter_failure_notification ( client , live_server ) :
set_original_response ( )
time . sleep ( 1 )
run_filter_test ( client , ' //*[@id= " nope-doesnt-exist " ] ' )
run_filter_test ( client , live_server , ' //*[@id= " nope-doesnt-exist " ] ' )
# Test that notification is never sent