diff options
Diffstat (limited to 'tests/unittests/test_http_common.c')
-rw-r--r-- | tests/unittests/test_http_common.c | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/unittests/test_http_common.c b/tests/unittests/test_http_common.c new file mode 100644 index 00000000..195f370b --- /dev/null +++ b/tests/unittests/test_http_common.c @@ -0,0 +1,75 @@ +#include <stdarg.h> +#include <stddef.h> +#include <setjmp.h> +#include <cmocka.h> +#include <stdlib.h> +#include <string.h> +#include <glib.h> + +#include "config.h" + +#include "tools/http_common.c" + +typedef struct +{ + char* url; + char* basename; +} url_test_t; + +void +http_basename_from_url_td(void** state) +{ + int num_tests = 11; + url_test_t tests[] = { + (url_test_t){ + .url = "https://host.test/image.jpeg", + .basename = "image.jpeg", + }, + (url_test_t){ + .url = "https://host.test/image.jpeg#somefragment", + .basename = "image.jpeg", + }, + (url_test_t){ + .url = "https://host.test/image.jpeg?query=param", + .basename = "image.jpeg", + }, + (url_test_t){ + .url = "https://host.test/image.jpeg?query=param&another=one", + .basename = "image.jpeg", + }, + (url_test_t){ + .url = "https://host.test/images/", + .basename = "images", + }, + (url_test_t){ + .url = "https://host.test/images/../../file", + .basename = "file", + }, + (url_test_t){ + .url = "https://host.test/images/../../file/..", + .basename = "index.html", + }, + (url_test_t){ + .url = "https://host.test/images/..//", + .basename = "index.html", + }, + (url_test_t){ + .url = "https://host.test/", + .basename = "index.html", + }, + (url_test_t){ + .url = "https://host.test", + .basename = "index.html", + }, + (url_test_t){ + .url = "aesgcm://host.test", + .basename = "index.html", + }, + }; + + char* basename; + for (int i = 0; i < num_tests; i++) { + basename = http_basename_from_url(tests[i].url); + assert_string_equal(basename, tests[i].basename); + } +} |