From 71c9b1273c890f06dd419996587615afa3d66beb Mon Sep 17 00:00:00 2001 From: dgtlmoon Date: Sat, 27 Jul 2024 19:47:03 +0200 Subject: [PATCH] Adding test for #1995 UTF-8 encoding in POST request body and post:// notifications (#2525) --- .../tests/test_add_replace_remove_filter.py | 9 +++++---- changedetectionio/tests/test_notification.py | 16 +++++++++------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/changedetectionio/tests/test_add_replace_remove_filter.py b/changedetectionio/tests/test_add_replace_remove_filter.py index 4d47f43e..72c19c37 100644 --- a/changedetectionio/tests/test_add_replace_remove_filter.py +++ b/changedetectionio/tests/test_add_replace_remove_filter.py @@ -112,7 +112,7 @@ def test_check_add_line_contains_trigger(client, live_server, measure_memory_usa res = client.post( url_for("settings_page"), data={"application-notification_title": "New ChangeDetection.io Notification - {{ watch_url }}", - "application-notification_body": 'triggered text was -{{triggered_text}}-', + "application-notification_body": 'triggered text was -{{triggered_text}}- 网站监测 内容更新了', # https://github.com/caronc/apprise/wiki/Notify_Custom_JSON#get-parameter-manipulation "application-notification_urls": test_notification_url, "application-minutes_between_check": 180, @@ -167,9 +167,10 @@ def test_check_add_line_contains_trigger(client, live_server, measure_memory_usa # Takes a moment for apprise to fire time.sleep(3) assert os.path.isfile("test-datastore/notification.txt"), "Notification fired because I can see the output file" - with open("test-datastore/notification.txt", 'r') as f: - response= f.read() - assert '-Oh yes please-' in response + with open("test-datastore/notification.txt", 'rb') as f: + response = f.read() + assert b'-Oh yes please-' in response + assert '网站监测 内容更新了'.encode('utf-8') in response res = client.get(url_for("form_delete", uuid="all"), follow_redirects=True) diff --git a/changedetectionio/tests/test_notification.py b/changedetectionio/tests/test_notification.py index d3408d5d..9e9c1c6f 100644 --- a/changedetectionio/tests/test_notification.py +++ b/changedetectionio/tests/test_notification.py @@ -291,11 +291,11 @@ def test_notification_custom_endpoint_and_jinja2(client, live_server, measure_me data={ "application-fetch_backend": "html_requests", "application-minutes_between_check": 180, - "application-notification_body": '{ "url" : "{{ watch_url }}", "secret": 444 }', + "application-notification_body": '{ "url" : "{{ watch_url }}", "secret": 444, "somebug": "网站监测 内容更新了" }', "application-notification_format": default_notification_format, "application-notification_urls": test_notification_url, # https://github.com/caronc/apprise/wiki/Notify_Custom_JSON#get-parameter-manipulation - "application-notification_title": "New ChangeDetection.io Notification - {{ watch_url }}", + "application-notification_title": "New ChangeDetection.io Notification - {{ watch_url }} ", }, follow_redirects=True ) @@ -324,6 +324,7 @@ def test_notification_custom_endpoint_and_jinja2(client, live_server, measure_me j = json.loads(x) assert j['url'].startswith('http://localhost') assert j['secret'] == 444 + assert j['somebug'] == '网站监测 内容更新了' # URL check, this will always be converted to lowercase assert os.path.isfile("test-datastore/notification-url.txt") @@ -354,9 +355,10 @@ def test_notification_custom_endpoint_and_jinja2(client, live_server, measure_me #2510 def test_global_send_test_notification(client, live_server, measure_memory_usage): - #live_server_setup(live_server) set_original_response() + if os.path.isfile("test-datastore/notification.txt"): + os.unlink("test-datastore/notification.txt") # otherwise other settings would have already existed from previous tests in this file res = client.post( @@ -364,7 +366,8 @@ def test_global_send_test_notification(client, live_server, measure_memory_usage data={ "application-fetch_backend": "html_requests", "application-minutes_between_check": 180, - "application-notification_body": 'change detection is cool', + #1995 UTF-8 content should be encoded + "application-notification_body": 'change detection is cool 网站监测 内容更新了', "application-notification_format": default_notification_format, "application-notification_urls": "", "application-notification_title": "New ChangeDetection.io Notification - {{ watch_url }}", @@ -399,8 +402,7 @@ def test_global_send_test_notification(client, live_server, measure_memory_usage with open("test-datastore/notification.txt", 'r') as f: x = f.read() - assert 'change detection is coo' in x - + assert 'change detection is cool 网站监测 内容更新了' in x os.unlink("test-datastore/notification.txt") @@ -420,7 +422,7 @@ def test_global_send_test_notification(client, live_server, measure_memory_usage with open("test-datastore/notification.txt", 'r') as f: x = f.read() # Should come from notification.py default handler when there is no notification body to pull from - assert 'change detection is coo' in x + assert 'change detection is cool 网站监测 内容更新了' in x client.get( url_for("form_delete", uuid="all"),