mirror of
https://github.com/curl/curl.git
synced 2025-09-09 13:49:44 +03:00
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
This commit is contained in:
parent
674836399f
commit
38865c8282
|
@ -15,6 +15,7 @@ none
|
||||||
<features>
|
<features>
|
||||||
unittest
|
unittest
|
||||||
https
|
https
|
||||||
|
pop3s
|
||||||
</features>
|
</features>
|
||||||
<name>
|
<name>
|
||||||
unit tests for stripcredentials from URL
|
unit tests for stripcredentials from URL
|
||||||
|
|
|
@ -37,9 +37,9 @@ static void unit_stop(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__MINGW32__) || \
|
#ifndef USE_XATTR
|
||||||
(!defined(HAVE_FSETXATTR) && \
|
/* stripcredentials isn't available in this case */
|
||||||
(!defined(__FreeBSD_version) || (__FreeBSD_version < 500000)))
|
|
||||||
UNITTEST_START
|
UNITTEST_START
|
||||||
UNITTEST_STOP
|
UNITTEST_STOP
|
||||||
#else
|
#else
|
||||||
|
@ -52,13 +52,24 @@ struct checkthis {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct checkthis tests[] = {
|
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://foo@example.com", "https://example.com/" },
|
||||||
{ "https://localhost:45", "https://localhost:45/" },
|
{ "https://localhost:45", "https://localhost:45/" },
|
||||||
{ "https://foo@localhost:45", "https://localhost:45/" },
|
{ "https://foo@localhost:45", "https://localhost:45/" },
|
||||||
{ "http://daniel:password@localhost", "http://localhost/" },
|
{ "http://daniel:password@localhost", "http://localhost/" },
|
||||||
{ "http://daniel@localhost", "http://localhost/" },
|
{ "http://daniel@localhost", "http://localhost/" },
|
||||||
|
{ "https://user:pass@localhost:45", "https://localhost:45/" },
|
||||||
{ "http://localhost/", "http://localhost/" },
|
{ "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 */
|
{ NULL, NULL } /* end marker */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -69,11 +80,11 @@ UNITTEST_START
|
||||||
for(i = 0; tests[i].input; i++) {
|
for(i = 0; tests[i].input; i++) {
|
||||||
const char *url = tests[i].input;
|
const char *url = tests[i].input;
|
||||||
char *stripped = stripcredentials(url);
|
char *stripped = stripcredentials(url);
|
||||||
|
char *strippedstr = stripped ? stripped : "(null)";
|
||||||
printf("Test %u got input \"%s\", output: \"%s\"\n",
|
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),
|
fail_if(strcmp(tests[i].output, strippedstr), tests[i].output);
|
||||||
tests[i].output);
|
|
||||||
curl_free(stripped);
|
curl_free(stripped);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user