From 0650cc3bc2490ad096ffee3b3af4f2121fa29853 Mon Sep 17 00:00:00 2001 From: Hugo Osvaldo Barrera Date: Fri, 23 Jul 2021 20:43:07 +0200 Subject: [PATCH] Add test for #918 We're doing something wrong with UID/href quoting/unquoting, but I've yet to figure out what. --- tests/storage/__init__.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/storage/__init__.py b/tests/storage/__init__.py index 6a5cadf..c28da83 100644 --- a/tests/storage/__init__.py +++ b/tests/storage/__init__.py @@ -310,6 +310,26 @@ class StorageTests: if self.storage_class.storage_name.endswith("dav"): assert urlquote(uid, "/@:") in href + @pytest.mark.asyncio + async def test_newline_in_uid( + self, monkeypatch, requires_collections, get_storage_args, get_item + ): + monkeypatch.setattr("vdirsyncer.utils.generate_href", lambda x: x) + + uid = "20210609T084907Z-@synaps-web-54fddfdf7-7kcfm%0A.ics" + + s = self.storage_class(**await get_storage_args()) + item = get_item(uid=uid) + + href, etag = await s.upload(item) + item2, etag2 = await s.get(href) + if etag is not None: + assert etag2 == etag + assert_item_equals(item2, item) + + ((_, etag3),) = await aiostream.stream.list(s.list()) + assert etag2 == etag3 + @pytest.mark.asyncio async def test_empty_metadata(self, requires_metadata, s): if getattr(self, "dav_server", ""):