From: Dan Fandrich Date: Wed, 7 May 2025 06:39:22 +0000 (-0700) Subject: test1621: Improve stripcredentials tests X-Git-Tag: curl-8_14_0~115 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=38865c8282d8d91e60ed8661043052723e80e9e1;p=thirdparty%2Fcurl.git test1621: Improve stripcredentials tests - add more unusual input cases - add a valid non-http protocol - fix tests so an input that should be stripped but isn't is a failure - fix detection of when stripcredentials() would be available to test - avoid using a NULL pointer Closes #17304 --- diff --git a/tests/data/test1621 b/tests/data/test1621 index cfd6ccbd9d..4a6ad5e9b0 100644 --- a/tests/data/test1621 +++ b/tests/data/test1621 @@ -15,6 +15,7 @@ none unittest https +pop3s unit tests for stripcredentials from URL diff --git a/tests/tunit/tool1621.c b/tests/tunit/tool1621.c index c384e044d7..b6135e4e64 100644 --- a/tests/tunit/tool1621.c +++ b/tests/tunit/tool1621.c @@ -37,9 +37,9 @@ static void unit_stop(void) { } -#if defined(__MINGW32__) || \ - (!defined(HAVE_FSETXATTR) && \ - (!defined(__FreeBSD_version) || (__FreeBSD_version < 500000))) +#ifndef USE_XATTR +/* stripcredentials isn't available in this case */ + UNITTEST_START UNITTEST_STOP #else @@ -52,13 +52,24 @@ struct checkthis { }; static const struct checkthis tests[] = { - { "ninja://foo@example.com", "ninja://foo@example.com" }, + { "ninja://foo@example.com", "(null)" }, /* unsupported scheme */ + { "pop3s://foo@example.com", "pop3s://example.com/" }, + { "ldap://foo@example.com", "ldap://example.com/" }, { "https://foo@example.com", "https://example.com/" }, { "https://localhost:45", "https://localhost:45/" }, { "https://foo@localhost:45", "https://localhost:45/" }, { "http://daniel:password@localhost", "http://localhost/" }, { "http://daniel@localhost", "http://localhost/" }, + { "https://user:pass@localhost:45", "https://localhost:45/" }, { "http://localhost/", "http://localhost/" }, + { "http://odd%40host/", "(null)" }, /* bad host */ + { "http://user@odd%40host/", "(null)" }, /* bad host */ + { "http://host/@path/", "http://host/@path/" }, + { "http://emptypw:@host/", "http://host/" }, + { "http://:emptyuser@host/", "http://host/" }, + { "http://odd%40user@host/", "http://host/" }, + { "http://only%40one%40host/", "(null)" }, /* bad host */ + { "http://odder%3auser@host/", "http://host/" }, { NULL, NULL } /* end marker */ }; @@ -69,11 +80,11 @@ UNITTEST_START for(i = 0; tests[i].input; i++) { const char *url = tests[i].input; char *stripped = stripcredentials(url); + char *strippedstr = stripped ? stripped : "(null)"; printf("Test %u got input \"%s\", output: \"%s\"\n", - i, tests[i].input, stripped); + i, tests[i].input, strippedstr); - fail_if(stripped && strcmp(tests[i].output, stripped), - tests[i].output); + fail_if(strcmp(tests[i].output, strippedstr), tests[i].output); curl_free(stripped); } }