#include "test.h"
#include "sab.h"
void register_sab_tests(
int argc,
char **argv, CxTestSuite *suite) {
cx_test_register(suite, test_sab_url_match);
cx_test_register(suite, test_sab_has_cookie);
}
CX_TEST(test_sab_url_match) {
CX_TEST_DO {
pool_handle_t *pool = pool_create();
pblock *pb = pblock_create_pool(pool,
4);
pblock_nvinsert(
"match",
"/hg/.*/rev.*", pb);
Request rq;
rq.headers = pblock_create_pool(pool,
4);
pblock_nvinsert(
"uri",
"/hg/webserver/rev/13432432/test", rq.headers);
int error;
int test = sab_url_match(pb, &rq, &error);
CX_TEST_ASSERT(test ==
1);
rq.headers = pblock_create_pool(pool,
4);
pblock_nvinsert(
"uri",
"/hello/world", rq.headers);
test = sab_url_match(pb, &rq, &error);
CX_TEST_ASSERT(test ==
0);
pool_destroy(pool);
}
}
CX_TEST(test_sab_has_cookie) {
CX_TEST_DO {
pool_handle_t *pool = pool_create();
pblock *pb = pblock_create_pool(pool,
4);
pblock_nvinsert(
"cookie",
"session", pb);
Request rq;
rq.headers = pblock_create_pool(pool,
4);
rq.vars = pblock_create_pool(pool,
4);
pblock_nvinsert(
"cookie",
"foo=bar; session=abc123; hello=world", rq.headers);
int ret = sab_has_cookie(pb,
NULL, &rq);
CX_TEST_ASSERT(ret ==
REQ_NOACTION);
CX_TEST_ASSERT(pblock_findval(
"is-bot", rq.vars) ==
NULL);
rq.headers = pblock_create_pool(pool,
4);
rq.vars = pblock_create_pool(pool,
4);
pblock_nvinsert(
"cookie",
"foo=bar; hello=world", rq.headers);
ret = sab_has_cookie(pb,
NULL, &rq);
CX_TEST_ASSERT(ret ==
REQ_NOACTION);
CX_TEST_ASSERT(strcmp(pblock_findval(
"is-bot", rq.vars),
"1") ==
0);
pblock_nvinsert(
"value",
"expected", pb);
rq.headers = pblock_create_pool(pool,
4);
rq.vars = pblock_create_pool(pool,
4);
pblock_nvinsert(
"cookie",
"foo=bar; session=abc123; hello=world", rq.headers);
rq.vars = pblock_create_pool(pool,
4);
ret = sab_has_cookie(pb,
NULL, &rq);
CX_TEST_ASSERT(ret ==
REQ_NOACTION);
CX_TEST_ASSERT(strcmp(pblock_findval(
"is-bot", rq.vars),
"1") ==
0);
pool_destroy(pool);
}
}