diff --git a/changedetectionio/tests/conftest.py b/changedetectionio/tests/conftest.py index 754ec1fc..a38117cb 100644 --- a/changedetectionio/tests/conftest.py +++ b/changedetectionio/tests/conftest.py @@ -13,22 +13,14 @@ global app def cleanup(datastore_path): + import glob # Unlink test output files - files = [ - 'count.txt', - 'endpoint-content.txt' - 'headers.txt', - 'headers-testtag.txt', - 'notification.txt', - 'secret.txt', - 'url-watches.json', - 'output.txt', - ] - for file in files: - try: - os.unlink("{}/{}".format(datastore_path, file)) - except FileNotFoundError: - pass + + for g in ["*.txt", "*.json", "*.pdf"]: + files = glob.glob(os.path.join(datastore_path, g)) + for f in files: + if os.path.isfile(f): + os.unlink(f) @pytest.fixture(scope='session') def app(request): diff --git a/changedetectionio/tests/test_notification.py b/changedetectionio/tests/test_notification.py index 7d0e5ff2..3c6674f8 100644 --- a/changedetectionio/tests/test_notification.py +++ b/changedetectionio/tests/test_notification.py @@ -281,7 +281,8 @@ def test_notification_custom_endpoint_and_jinja2(client, live_server): # CUSTOM JSON BODY CHECK for POST:// set_original_response() - test_notification_url = url_for('test_notification_endpoint', _external=True).replace('http://', 'post://')+"?xxx={{ watch_url }}" + # https://github.com/caronc/apprise/wiki/Notify_Custom_JSON#header-manipulation + test_notification_url = url_for('test_notification_endpoint', _external=True).replace('http://', 'post://')+"?xxx={{ watch_url }}&+custom-header=123" res = client.post( url_for("settings_page"), @@ -297,10 +298,7 @@ def test_notification_custom_endpoint_and_jinja2(client, live_server): follow_redirects=True ) assert b'Settings updated' in res.data - client.get( - url_for("form_delete", uuid="all"), - follow_redirects=True - ) + # Add a watch and trigger a HTTP POST test_url = url_for('test_endpoint', _external=True) res = client.post( @@ -315,7 +313,9 @@ def test_notification_custom_endpoint_and_jinja2(client, live_server): set_modified_response() client.get(url_for("form_watch_checknow"), follow_redirects=True) - time.sleep(2) + wait_for_all_checks(client) + + time.sleep(2) # plus extra delay for notifications to fire with open("test-datastore/notification.txt", 'r') as f: x = f.read() @@ -328,6 +328,13 @@ def test_notification_custom_endpoint_and_jinja2(client, live_server): with open("test-datastore/notification-url.txt", 'r') as f: notification_url = f.read() assert 'xxx=http' in notification_url + # apprise style headers should be stripped + assert 'custom-header' not in notification_url + + with open("test-datastore/notification-headers.txt", 'r') as f: + notification_headers = f.read() + assert 'custom-header: 123' in notification_headers.lower() + # Should always be automatically detected as JSON content type even when we set it as 'Text' (default) assert os.path.isfile("test-datastore/notification-content-type.txt") @@ -335,3 +342,8 @@ def test_notification_custom_endpoint_and_jinja2(client, live_server): assert 'application/json' in f.read() os.unlink("test-datastore/notification-url.txt") + + client.get( + url_for("form_delete", uuid="all"), + follow_redirects=True + ) diff --git a/changedetectionio/tests/util.py b/changedetectionio/tests/util.py index 904c1b62..ed1e424e 100644 --- a/changedetectionio/tests/util.py +++ b/changedetectionio/tests/util.py @@ -205,6 +205,9 @@ def live_server_setup(live_server): with open("test-datastore/notification-url.txt", "w") as f: f.write(request.url) + with open("test-datastore/notification-headers.txt", "w") as f: + f.write(str(request.headers)) + if request.content_type: with open("test-datastore/notification-content-type.txt", "w") as f: f.write(request.content_type)