diff --git a/src/icalendar/tests/issue_355_url_unescaping.ics b/src/icalendar/tests/issue_355_url_unescaping.ics new file mode 100644 index 00000000..c9f413f9 --- /dev/null +++ b/src/icalendar/tests/issue_355_url_unescaping.ics @@ -0,0 +1,33 @@ +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ical.marudot.com//iCal Event Maker +CALSCALE:GREGORIAN +BEGIN:VTIMEZONE +TZID:Europe/Berlin +LAST-MODIFIED:20201011T015911Z +TZURL:http://tzurl.org/zoneinfo-outlook/Europe/Berlin +X-LIC-LOCATION:Europe/Berlin +BEGIN:DAYLIGHT +TZNAME:CEST +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +DTSTART:19700329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZNAME:CET +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +DTSTART:19701025T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20220822T164528Z +UID:1661186704812-62650@ical.marudot.com +DTSTART;TZID=Europe/Berlin:20220822T120000 +DTEND;TZID=Europe/Berlin:20220822T120000 +SUMMARY:test +DESCRIPTION:https://www.facebook.com/events/756119502186737/?acontext=%7B%22source%22%3A5%2C%22action_history%22%3A[%7B%22surface%22%3A%22page%22%2C%22mechanism%22%3A%22main_list%22%2C%22extra_data%22%3A%22%5C%22[]%5C%22%22%7D]%2C%22has_source%22%3Atrue%7D +END:VEVENT +END:VCALENDAR \ No newline at end of file diff --git a/src/icalendar/tests/test_fixed_issues.py b/src/icalendar/tests/test_fixed_issues.py index 423e71bf..0c137844 100644 --- a/src/icalendar/tests/test_fixed_issues.py +++ b/src/icalendar/tests/test_fixed_issues.py @@ -6,6 +6,8 @@ import os import pytz +HERE = os.path.dirname(__file__) + class TestIssues(unittest.TestCase): @@ -14,8 +16,7 @@ def test_issue_53(self): https://github.com/collective/icalendar/issues/53 """ - directory = os.path.dirname(__file__) - ics = open(os.path.join(directory, 'issue_53_parsing_failure.ics'), + ics = open(os.path.join(HERE, 'issue_53_parsing_failure.ics'), 'rb') cal = icalendar.Calendar.from_ical(ics.read()) ics.close() @@ -231,8 +232,7 @@ def test_issue_112(self): """Issue #112 - No timezone info on EXDATE https://github.com/collective/icalendar/issues/112 """ - directory = os.path.dirname(__file__) - path = os.path.join(directory, + path = os.path.join(HERE, 'issue_112_missing_tzinfo_on_exdate.ics') with open(path, 'rb') as ics: cal = icalendar.Calendar.from_ical(ics.read()) @@ -432,6 +432,18 @@ def test_issue_184(self): b'END:VEVENT\r\n' ) + def test_issue_356_url_escaping(self): + """Test that the URLs stay intact. + + see https://github.com/collective/icalendar/pull/356 + see https://github.com/collective/icalendar/issues/355 + """ + ics = open(os.path.join(HERE, 'issue_53_parsing_failure.ics'), 'rb') + cal = icalendar.Calendar.from_ical(ics) + event = cal.walk(name='VEVENT')[0] + URL = "https://www.facebook.com/events/756119502186737/?acontext=%7B%22source%22%3A5%2C%22action_history%22%3A[%7B%22surface%22%3A%22page%22%2C%22mechanism%22%3A%22main_list%22%2C%22extra_data%22%3A%22%5C%22[]%5C%22%22%7D]%2C%22has_source%22%3Atrue%7D" + self.assertEqual(event["DESCRIPTION"], URL) + def test_issue_237(self): """Issue #237 - Fail to parse timezone with non-ascii TZID"""