test-http-auth.c revision 7cb128dc4cae2a03a742f63ba7afee23c78e3af0
/* Copyright (c) 2013-2015 Dovecot authors, see the included COPYING file */
#include "test-lib.h"
#include "test-common.h"
#include "array.h"
#include "str-sanitize.h"
#include "http-auth.h"
struct http_auth_challenge_test {
const char *scheme;
const char *data;
struct http_auth_param *params;
};
struct http_auth_challenges_test {
const char *challenges_in;
struct http_auth_challenge_test *challenges;
};
/* Valid auth challenges tests */
static const struct http_auth_challenges_test
{
.challenges_in = "Basic realm=\"WallyWorld\"",
.challenges = (struct http_auth_challenge_test []) {
{ .scheme = "Basic",
.params = (struct http_auth_param []) {
}
},{
}
}
},{
.challenges_in = "Digest "
"realm=\"testrealm@host.com\", "
"qop=\"auth,auth-int\", "
"nonce=\"dcd98b7102dd2f0e8b11d0f600bfb0c093\", "
"opaque=\"5ccc069c403ebaf9f0171e9517f40e41\"",
.challenges = (struct http_auth_challenge_test []) {
{ .scheme = "Digest",
.params = (struct http_auth_param []) {
{ "realm", "testrealm@host.com" },
{ "qop", "auth,auth-int" },
{ "nonce", "dcd98b7102dd2f0e8b11d0f600bfb0c093" },
{ "opaque", "5ccc069c403ebaf9f0171e9517f40e41" },
}
},{
}
}
},{
.challenges_in = "Newauth realm=\"apps\", type=1, "
"title=\"Login to \\\"apps\\\"\", Basic realm=\"simple\"",
.challenges = (struct http_auth_challenge_test []) {
{ .scheme = "Newauth",
.params = (struct http_auth_param []) {
{ "realm", "apps" },
{ "type", "1" },
{ "title", "Login to \"apps\"" },
}
},{
.scheme = "Basic",
.params = (struct http_auth_param []) {
{ "realm", "simple" },
}
},{
}
}
}
};
static const unsigned int valid_auth_challenges_test_count =
static void test_http_auth_challenges_valid(void)
{
unsigned int i;
for (i = 0; i < valid_auth_challenges_test_count; i++) T_BEGIN {
const char *challenges_in;
const struct http_auth_challenges_test *test;
bool result;
test = &valid_auth_challenges_tests[i];
&out) > 0);
if (result) {
const struct http_auth_challenge *chalo;
const struct http_auth_challenge_test *chalt;
unsigned int index;
index = 0;
unsigned int pindex;
} else {
}
pindex = 0;
break;
} else {
paramt++;
}
pindex++;
}
chalt++;
}
index++;
}
}
test_end();
} T_END;
}
struct http_auth_credentials_test {
const char *credentials_in;
const char *scheme;
const char *data;
struct http_auth_param *params;
};
/* Valid auth credentials tests */
static const struct http_auth_credentials_test
{
.credentials_in = "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
.scheme = "Basic",
.data = "QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
},{
.credentials_in = "Digest username=\"Mufasa\", "
"realm=\"testrealm@host.com\", "
"nonce=\"dcd98b7102dd2f0e8b11d0f600bfb0c093\", "
"uri=\"/dir/index.html\", "
"qop=auth, "
"nc=00000001, "
"cnonce=\"0a4f113b\", "
"response=\"6629fae49393a05397450978507c4ef1\", "
"opaque=\"5ccc069c403ebaf9f0171e9517f40e41\"",
.scheme = "Digest",
.params = (struct http_auth_param []) {
{ "username", "Mufasa" },
{ "realm", "testrealm@host.com" },
{ "nonce", "dcd98b7102dd2f0e8b11d0f600bfb0c093" },
{ "uri", "/dir/index.html" },
{ "qop", "auth" },
{ "nc", "00000001" },
{ "cnonce", "0a4f113b" },
{ "response", "6629fae49393a05397450978507c4ef1" },
{ "opaque", "5ccc069c403ebaf9f0171e9517f40e41" },
}
}
};
static const unsigned int valid_auth_credentials_test_count =
static void test_http_auth_credentials_valid(void)
{
unsigned int i;
for (i = 0; i < valid_auth_credentials_test_count; i++) T_BEGIN {
const char *credentials_in;
struct http_auth_credentials out;
const struct http_auth_credentials_test *test;
bool result;
test = &valid_auth_credentials_tests[i];
&out) > 0);
if (result) {
unsigned int index;
} else {
}
index = 0;
break;
} else {
paramt++;
}
}
}
}
test_end();
} T_END;
}
int main(void)
{
static void (*test_functions[])(void) = {
};
return test_run(test_functions);
}