|
Packit Service |
ca3877 |
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
|
Packit Service |
ca3877 |
/*
|
|
Packit Service |
ca3877 |
* Copyright (C) 2012 Igalia S.L.
|
|
Packit Service |
ca3877 |
*/
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
#include "test-utils.h"
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
/* From http://publicsuffix.org/list/test.txt */
|
|
Packit Service |
ca3877 |
static struct {
|
|
Packit Service |
ca3877 |
const char *hostname;
|
|
Packit Service |
ca3877 |
const char *result;
|
|
Packit Service |
ca3877 |
SoupTLDError error;
|
|
Packit Service |
ca3877 |
} tld_tests[] = {
|
|
Packit Service |
ca3877 |
/* NULL input. Not checked here because the API requires a valid hostname. */
|
|
Packit Service |
ca3877 |
/* { NULL, NULL, -1 }, */
|
|
Packit Service |
ca3877 |
/* Mixed case. Not checked because the API requires a valid hostname. */
|
|
Packit Service |
ca3877 |
/* { "COM", NULL, -1 }, */
|
|
Packit Service |
ca3877 |
/* { "example.COM", "example.com", -1 }, */
|
|
Packit Service |
ca3877 |
/* { "WwW.example.COM", "example.com", -1 }, */
|
|
Packit Service |
ca3877 |
/* Leading dot. */
|
|
Packit Service |
ca3877 |
{ ".com", NULL, SOUP_TLD_ERROR_INVALID_HOSTNAME },
|
|
Packit Service |
ca3877 |
{ ".example", NULL, SOUP_TLD_ERROR_INVALID_HOSTNAME },
|
|
Packit Service |
ca3877 |
{ ".example.com", NULL, SOUP_TLD_ERROR_INVALID_HOSTNAME },
|
|
Packit Service |
ca3877 |
{ ".example.example", NULL, SOUP_TLD_ERROR_INVALID_HOSTNAME },
|
|
Packit Service |
ca3877 |
/* Trailing dot. */
|
|
Packit Service |
ca3877 |
{ ".com.", NULL, SOUP_TLD_ERROR_INVALID_HOSTNAME },
|
|
Packit Service |
ca3877 |
{ "domain.biz.", "domain.biz.", -1 },
|
|
Packit Service |
ca3877 |
/* TLD with only 1 rule. */
|
|
Packit Service |
ca3877 |
{ "biz", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "domain.biz", "domain.biz", -1 },
|
|
Packit Service |
ca3877 |
{ "b.domain.biz", "domain.biz", -1 },
|
|
Packit Service |
ca3877 |
{ "a.b.domain.biz", "domain.biz", -1 },
|
|
Packit Service |
ca3877 |
/* TLD with some 2-level rules. */
|
|
Packit Service |
ca3877 |
{ "com", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "example.com", "example.com", -1 },
|
|
Packit Service |
ca3877 |
{ "b.example.com", "example.com", -1 },
|
|
Packit Service |
ca3877 |
{ "a.b.example.com", "example.com", -1 },
|
|
Packit Service |
ca3877 |
{ "uk.com", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "example.uk.com", "example.uk.com", -1 },
|
|
Packit Service |
ca3877 |
{ "b.example.uk.com", "example.uk.com", -1 },
|
|
Packit Service |
ca3877 |
{ "a.b.example.uk.com", "example.uk.com", -1 },
|
|
Packit Service |
ca3877 |
{ "test.ac", "test.ac", -1 },
|
|
Packit Service |
ca3877 |
/* TLD with only 1 (wildcard) rule. */
|
|
Packit Service |
ca3877 |
{ "bn", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "c.bn", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "b.c.bn", "b.c.bn", -1 },
|
|
Packit Service |
ca3877 |
{ "a.b.c.bn", "b.c.bn", -1 },
|
|
Packit Service |
ca3877 |
/* More complex TLD. */
|
|
Packit Service |
ca3877 |
{ "jp", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "test.jp", "test.jp", -1 },
|
|
Packit Service |
ca3877 |
{ "www.test.jp", "test.jp", -1 },
|
|
Packit Service |
ca3877 |
{ "ac.jp", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "test.ac.jp", "test.ac.jp", -1 },
|
|
Packit Service |
ca3877 |
{ "www.test.ac.jp", "test.ac.jp", -1 },
|
|
Packit Service |
ca3877 |
{ "kyoto.jp", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "minami.kyoto.jp", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "b.minami.kyoto.jp", "b.minami.kyoto.jp", -1 },
|
|
Packit Service |
ca3877 |
{ "a.b.minami.kyoto.jp", "b.minami.kyoto.jp", -1 },
|
|
Packit Service |
ca3877 |
{ "pref.kyoto.jp", "pref.kyoto.jp", -1 },
|
|
Packit Service |
ca3877 |
{ "www.pref.kyoto.jp", "pref.kyoto.jp", -1 },
|
|
Packit Service |
ca3877 |
{ "city.kyoto.jp", "city.kyoto.jp", -1 },
|
|
Packit Service |
ca3877 |
{ "www.city.kyoto.jp", "city.kyoto.jp", -1 },
|
|
Packit Service |
ca3877 |
/* TLD with a wildcard rule and exceptions. */
|
|
Packit Service |
ca3877 |
{ "ck", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "test.ck", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "b.test.ck", "b.test.ck", -1 },
|
|
Packit Service |
ca3877 |
{ "a.b.test.ck", "b.test.ck", -1 },
|
|
Packit Service |
ca3877 |
{ "www.ck", "www.ck", -1 },
|
|
Packit Service |
ca3877 |
{ "www.www.ck", "www.ck", -1 },
|
|
Packit Service |
ca3877 |
/* US K12. */
|
|
Packit Service |
ca3877 |
{ "us", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "test.us", "test.us", -1 },
|
|
Packit Service |
ca3877 |
{ "www.test.us", "test.us", -1 },
|
|
Packit Service |
ca3877 |
{ "ak.us", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "test.ak.us", "test.ak.us", -1 },
|
|
Packit Service |
ca3877 |
{ "www.test.ak.us", "test.ak.us", -1 },
|
|
Packit Service |
ca3877 |
{ "k12.ak.us", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "test.k12.ak.us", "test.k12.ak.us", -1 },
|
|
Packit Service |
ca3877 |
{ "www.test.k12.ak.us", "test.k12.ak.us", -1 },
|
|
Packit Service |
ca3877 |
/* IDN labels. */
|
|
Packit Service |
ca3877 |
{ "食狮.com.cn", "食狮.com.cn", -1 },
|
|
Packit Service |
ca3877 |
{ "食狮.公司.cn", "食狮.公司.cn", -1 },
|
|
Packit Service |
ca3877 |
{ "www.食狮.公司.cn", "食狮.公司.cn", -1 },
|
|
Packit Service |
ca3877 |
{ "shishi.公司.cn", "shishi.公司.cn", -1 },
|
|
Packit Service |
ca3877 |
{ "公司.cn", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "食狮.中国", "食狮.中国", -1 },
|
|
Packit Service |
ca3877 |
{ "www.食狮.中国", "食狮.中国", -1 },
|
|
Packit Service |
ca3877 |
{ "shishi.中国", "shishi.中国", -1 },
|
|
Packit Service |
ca3877 |
{ "中国", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
/* Same as above, but punycoded. */
|
|
Packit Service |
ca3877 |
{ "xn--85x722f.com.cn", "xn--85x722f.com.cn", -1 },
|
|
Packit Service |
ca3877 |
{ "xn--85x722f.xn--55qx5d.cn", "xn--85x722f.xn--55qx5d.cn", -1 },
|
|
Packit Service |
ca3877 |
{ "www.xn--85x722f.xn--55qx5d.cn", "xn--85x722f.xn--55qx5d.cn", -1 },
|
|
Packit Service |
ca3877 |
{ "shishi.xn--55qx5d.cn", "shishi.xn--55qx5d.cn", -1 },
|
|
Packit Service |
ca3877 |
{ "xn--55qx5d.cn", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "xn--85x722f.xn--fiqs8s", "xn--85x722f.xn--fiqs8s", -1 },
|
|
Packit Service |
ca3877 |
{ "www.xn--85x722f.xn--fiqs8s", "xn--85x722f.xn--fiqs8s", -1 },
|
|
Packit Service |
ca3877 |
{ "shishi.xn--fiqs8s", "shishi.xn--fiqs8s", -1 },
|
|
Packit Service |
ca3877 |
{ "xn--fiqs8s", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
/* End of publicsuffix.org tests */
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
/* Let's just double-check this one... */
|
|
Packit Service |
ca3877 |
{ "co.uk", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "test.co.uk", "test.co.uk", -1 },
|
|
Packit Service |
ca3877 |
{ "www.test.co.uk", "test.co.uk", -1 },
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
/* Two levels of non-ASCII */
|
|
Packit Service |
ca3877 |
{ "våler.østfold.no", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "test.våler.østfold.no", "test.våler.østfold.no", -1 },
|
|
Packit Service |
ca3877 |
{ "www.test.våler.østfold.no", "test.våler.østfold.no", -1 },
|
|
Packit Service |
ca3877 |
{ "xn--vler-qoa.xn--stfold-9xa.no", NULL, SOUP_TLD_ERROR_NOT_ENOUGH_DOMAINS },
|
|
Packit Service |
ca3877 |
{ "test.xn--vler-qoa.xn--stfold-9xa.no", "test.xn--vler-qoa.xn--stfold-9xa.no", -1 },
|
|
Packit Service |
ca3877 |
{ "www.test.xn--vler-qoa.xn--stfold-9xa.no", "test.xn--vler-qoa.xn--stfold-9xa.no", -1 },
|
|
Packit Service |
ca3877 |
},
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
/* Non Internet TLDs have NULL as expected result
|
|
Packit Service |
ca3877 |
*/
|
|
Packit Service |
ca3877 |
non_inet_tld_tests[] = {
|
|
Packit Service |
ca3877 |
/* Unlisted TLD.*/
|
|
Packit Service |
ca3877 |
{ "example", NULL },
|
|
Packit Service |
ca3877 |
{ "example.example", NULL },
|
|
Packit Service |
ca3877 |
{ "b.example.example", NULL },
|
|
Packit Service |
ca3877 |
{ "a.b.example.example", NULL },
|
|
Packit Service |
ca3877 |
/* Listed, but non-Internet, TLD. */
|
|
Packit Service |
ca3877 |
{ "local", NULL },
|
|
Packit Service |
ca3877 |
{ "example.local", NULL },
|
|
Packit Service |
ca3877 |
{ "b.example.local", NULL },
|
|
Packit Service |
ca3877 |
{ "a.b.example.local", NULL }
|
|
Packit Service |
ca3877 |
};
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
static void
|
|
Packit Service |
ca3877 |
do_inet_tests (void)
|
|
Packit Service |
ca3877 |
{
|
|
Packit Service |
ca3877 |
int i;
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
for (i = 0; i < G_N_ELEMENTS (tld_tests); i++) {
|
|
Packit Service |
ca3877 |
GError *error = NULL;
|
|
Packit Service |
ca3877 |
gboolean is_public;
|
|
Packit Service |
ca3877 |
const char *base_domain;
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
debug_printf (1, "Testing %s\n", tld_tests[i].hostname);
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
is_public = soup_tld_domain_is_public_suffix (tld_tests[i].hostname);
|
|
Packit Service |
ca3877 |
base_domain = soup_tld_get_base_domain (tld_tests[i].hostname, &error);
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
if (base_domain) {
|
|
Packit Service |
ca3877 |
g_assert_no_error (error);
|
|
Packit Service |
ca3877 |
g_assert_false (is_public);
|
|
Packit Service |
ca3877 |
g_assert_cmpstr (base_domain, ==, tld_tests[i].result);
|
|
Packit Service |
ca3877 |
} else {
|
|
Packit Service |
ca3877 |
g_assert_null (tld_tests[i].result);
|
|
Packit Service |
ca3877 |
g_assert_error (error, SOUP_TLD_ERROR, tld_tests[i].error);
|
|
Packit Service |
ca3877 |
g_clear_error (&error);
|
|
Packit Service |
ca3877 |
}
|
|
Packit Service |
ca3877 |
}
|
|
Packit Service |
ca3877 |
}
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
static void
|
|
Packit Service |
ca3877 |
do_non_inet_tests (void)
|
|
Packit Service |
ca3877 |
{
|
|
Packit Service |
ca3877 |
int i;
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
g_test_bug ("679230");
|
|
Packit Service |
ca3877 |
g_test_bug ("681085");
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
for (i = 0; i < G_N_ELEMENTS (non_inet_tld_tests); i++) {
|
|
Packit Service |
ca3877 |
gboolean is_public;
|
|
Packit Service |
ca3877 |
const char *base_domain;
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
debug_printf (1, "Testing %s\n", non_inet_tld_tests[i].hostname);
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
is_public = soup_tld_domain_is_public_suffix (non_inet_tld_tests[i].hostname);
|
|
Packit Service |
ca3877 |
base_domain = soup_tld_get_base_domain (non_inet_tld_tests[i].hostname, NULL);
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
g_assert_false (is_public);
|
|
Packit Service |
ca3877 |
g_assert_null (base_domain);
|
|
Packit Service |
ca3877 |
}
|
|
Packit Service |
ca3877 |
}
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
int
|
|
Packit Service |
ca3877 |
main (int argc, char **argv)
|
|
Packit Service |
ca3877 |
{
|
|
Packit Service |
ca3877 |
int ret;
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
test_init (argc, argv, NULL);
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
g_test_add_func ("/tld/inet", do_inet_tests);
|
|
Packit Service |
ca3877 |
g_test_add_func ("/tld/non-inet", do_non_inet_tests);
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
ret = g_test_run ();
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
test_cleanup ();
|
|
Packit Service |
ca3877 |
|
|
Packit Service |
ca3877 |
return ret;
|
|
Packit Service |
ca3877 |
}
|