extend urldb tests with url creation, setting and getting operations

This commit is contained in:
Vincent Sanders 2017-03-13 16:44:30 +00:00
parent 5078bffad7
commit 44ad580a75
1 changed files with 105 additions and 43 deletions

View File

@ -65,6 +65,17 @@ const char *wikipedia_url = "http://www.wikipedia.org/";
struct netsurf_table *guit = NULL;
struct test_triplets {
const char* url;
const char* title;
const char* res;
};
#define NELEMS(x) (sizeof(x) / sizeof((x)[0]))
/**
* generate test output filenames
*/
@ -248,14 +259,6 @@ START_TEST(urldb_original_test)
nsurl *url;
nsurl *urlr;
/* ensure title can be set */
url = make_url("http://intranet/");
urldb_add_url(url);
urldb_set_url_title(url, "foo");
u = urldb_get_url_data(url);
ck_assert(u && strcmp(u->title, "foo") == 0);
nsurl_unref(url);
/* fragments */
url = make_url("http://netsurf.strcprstskrzkrk.co.uk/path/to/resource.htm?a=b");
@ -274,9 +277,6 @@ START_TEST(urldb_original_test)
ck_assert(urldb_add_url(url) == true);
nsurl_unref(url);
url = make_url("file:///home/");
ck_assert(urldb_add_url(url) == true);
nsurl_unref(url);
/* set cookies on urls */
url = make_url("http://www.minimarcos.org.uk/cgi-bin/forum/Blah.pl?,v=login,p=2");
@ -311,37 +311,6 @@ START_TEST(urldb_original_test)
urldb_get_cookie(url, true);
nsurl_unref(url);
/* Mantis bug #993 */
url = make_url("http:moodle.org");
ck_assert(urldb_add_url(url) == true);
ck_assert(urldb_get_url(url) != NULL);
nsurl_unref(url);
/* Mantis bug #993 */
url = make_url("http://a_a/");
ck_assert(urldb_add_url(url) == true);
ck_assert(urldb_get_url(url) != NULL);
nsurl_unref(url);
/* Mantis bug #996 */
url = make_url("http://foo@moose.com/");
if (urldb_add_url(url)) {
LOG("added %s", nsurl_access(url));
ck_assert(urldb_get_url(url) != NULL);
}
nsurl_unref(url);
/* Mantis bug #913 */
url = make_url("http://www2.2checkout.com/");
ck_assert(urldb_add_url(url) == true);
ck_assert(urldb_get_url(url) != NULL);
nsurl_unref(url);
/* Numeric subdomains */
url = make_url("http://2.bp.blogspot.com/_448y6kVhntg/TSekubcLJ7I/AAAAAAAAHJE/yZTsV5xT5t4/s1600/covers.jpg");
ck_assert(urldb_add_url(url) == true);
ck_assert(urldb_get_url(url) != NULL);
nsurl_unref(url);
/* Valid path */
ck_assert(test_urldb_set_cookie("name=value;Path=/\r\n", "http://www.google.com/", NULL));
@ -420,6 +389,12 @@ START_TEST(urldb_original_test)
}
END_TEST
/**
* test case comprised of tests historicaly found in netsurf
*
* These tests are carried forward from original open coded tests
* found in the url database code.
*/
static TCase *urldb_original_case_create(void)
{
TCase *tc;
@ -435,6 +410,90 @@ static TCase *urldb_original_case_create(void)
return tc;
}
/**
* add set and get tests
*/
static const struct test_triplets add_set_get_tests[] = {
{ "http://intranet/", "foo", NULL }, /* from legacy tests */
{ "http:moodle.org", "buggy", NULL }, /* Mantis bug #993 */
{ "http://a_a/", "buggsy", NULL }, /* Mantis bug #993 */
{ "http://www2.2checkout.com/" , "foobar", NULL }, /* Mantis bug #913 */
{ "http://2.bp.blogspot.com/_448y6kVhntg/TSekubcLJ7I/AAAAAAAAHJE/yZTsV5xT5t4/s1600/covers.jpg",
"a more complex title" , NULL }, /* Numeric subdomains */
{ "file:///home/", NULL, NULL}, /* no title */
{ "http://foo@moose.com/", NULL, NULL }, /* Mantis bug #996 */
{ "http://a.xn--11b4c3d/a", "a title", NULL },
{ "https://smog.大众汽车/test", "unicode title 大众汽车", NULL},
};
/**
* add set and get test
*/
START_TEST(urldb_add_set_get_test)
{
nserror err;
nsurl *url;
nsurl *res_url;
struct url_data *data;
const struct test_triplets *tst = &add_set_get_tests[_i];
/* not testing create, this should always succeed */
err = nsurl_create(tst->url, &url);
ck_assert(err == NSERROR_OK);
/* add the url to the database */
ck_assert(urldb_add_url(url) == true);
/* set title */
err = urldb_set_url_title(url, tst->title);
ck_assert(err == NSERROR_OK);
/* retrieve the url from the database and check it matches */
res_url = urldb_get_url(url);
ck_assert(res_url != NULL);
ck_assert(nsurl_compare(url, res_url, NSURL_COMPLETE) == true);
/* retrieve url data and check title matches */
data = urldb_get_url_data(url);
ck_assert(data != NULL);
/* ensure title matches */
if (tst->title != NULL) {
ck_assert_str_eq(data->title, tst->title);
} else {
ck_assert(data->title == NULL);
}
/* release test url */
nsurl_unref(url);
}
END_TEST
/**
* test cases that simply add and then get a url
*
* these tests exercise the adding and retrival of urls verifying the
* data added.
*/
static TCase *urldb_add_get_case_create(void)
{
TCase *tc;
tc = tcase_create("Add Get tests");
/* ensure corestrings are initialised and finalised for every test */
tcase_add_checked_fixture(tc,
urldb_create,
urldb_teardown);
tcase_add_loop_test(tc,
urldb_add_set_get_test,
0, NELEMS(add_set_get_tests));
return tc;
}
/**
* Session basic test case
*
@ -899,7 +958,9 @@ static TCase *urldb_api_case_create(void)
return tc;
}
/**
* Test suite for url database
*/
static Suite *urldb_suite_create(void)
{
Suite *s;
@ -909,6 +970,7 @@ static Suite *urldb_suite_create(void)
suite_add_tcase(s, urldb_session_case_create());
suite_add_tcase(s, urldb_case_create());
suite_add_tcase(s, urldb_cookie_case_create());
suite_add_tcase(s, urldb_add_get_case_create());
suite_add_tcase(s, urldb_original_case_create());
return s;