about summary refs log tree commit diff stats
path: root/tests/unittests/test_common.c
diff options
context:
space:
mode:
authorWilliam Wennerström <william@wstrm.dev>2020-12-04 16:13:13 +0100
committerWilliam Wennerström <william@wstrm.dev>2020-12-04 16:13:13 +0100
commit1d2c0a8836123c3b484826b974f87a0061bc110b (patch)
tree21e926e71bd4ed7391f4d2d512a69802bf2ad17c /tests/unittests/test_common.c
parent3a6597ee2967f91f49a1b4e17cf0595f37064587 (diff)
downloadprofani-tty-1d2c0a8836123c3b484826b974f87a0061bc110b.tar.gz
Move unique_filename_from_url functions to common
Diffstat (limited to 'tests/unittests/test_common.c')
-rw-r--r--tests/unittests/test_common.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/tests/unittests/test_common.c b/tests/unittests/test_common.c
index b8958dda..462676cc 100644
--- a/tests/unittests/test_common.c
+++ b/tests/unittests/test_common.c
@@ -330,6 +330,83 @@ strip_quotes_strips_both(void** state)
     free(result);
 }
 
+typedef struct
+{
+    char* url;
+    char* path;
+    char* filename;
+} unique_filename_from_url_t;
+
+void
+unique_filename_from_url_td(void** state)
+{
+    enum table { num_tests = 11 };
+
+    unique_filename_from_url_t tests[num_tests] = {
+        (unique_filename_from_url_t){
+            .url = "https://host.test/image.jpeg",
+            .path = "./",
+            .filename = "./image.jpeg",
+        },
+        (unique_filename_from_url_t){
+            .url = "https://host.test/image.jpeg#somefragment",
+            .path = "./",
+            .filename = "./image.jpeg",
+        },
+        (unique_filename_from_url_t){
+            .url = "https://host.test/image.jpeg?query=param",
+            .path = "./",
+            .filename = "./image.jpeg",
+        },
+        (unique_filename_from_url_t){
+            .url = "https://host.test/image.jpeg?query=param&another=one",
+            .path = "./",
+            .filename = "./image.jpeg",
+        },
+        (unique_filename_from_url_t){
+            .url = "https://host.test/images/",
+            .path = "./",
+            .filename = "./images",
+        },
+        (unique_filename_from_url_t){
+            .url = "https://host.test/images/../../file",
+            .path = "./",
+            .filename = "./file",
+        },
+        (unique_filename_from_url_t){
+            .url = "https://host.test/images/../../file/..",
+            .path = "./",
+            .filename = "./index.html",
+        },
+        (unique_filename_from_url_t){
+            .url = "https://host.test/images/..//",
+            .path = "./",
+            .filename = "./index.html",
+        },
+        (unique_filename_from_url_t){
+            .url = "https://host.test/",
+            .path = "./",
+            .filename = "./index.html",
+        },
+        (unique_filename_from_url_t){
+            .url = "https://host.test",
+            .path = "./",
+            .filename = "./index.html",
+        },
+        (unique_filename_from_url_t){
+            .url = "aesgcm://host.test",
+            .path = "./",
+            .filename = "./index.html",
+        },
+    };
+
+    char* filename;
+    for (int i = 0; i < num_tests; i++) {
+        filename = unique_filename_from_url(tests[i].url, tests[i].path);
+        assert_string_equal(filename, tests[i].filename);
+    }
+}
+
 gboolean
 _lists_equal(GSList* a, GSList* b)
 {