diff options
author | Claudio Saavedra <csaavedra@igalia.com> | 2019-08-02 18:55:02 +0300 |
---|---|---|
committer | Claudio Saavedra <csaavedra@igalia.com> | 2019-08-05 14:19:10 +0000 |
commit | 6c06d60074a808ded76b9fd47d77c3562ee0330f (patch) | |
tree | b33d900c9a876b3c023d0d2efafb2b8d63c3bd29 /tests/hsts-test.c | |
parent | 2a8daff431ad6d094a0640cc0ffd762b8db572bf (diff) | |
download | libsoup-6c06d60074a808ded76b9fd47d77c3562ee0330f.tar.gz |
HSTS: add API to get domains with policies
Add soup_hsts_enforcer_get_domains() which returns a list of domains
for which there are HSTS policies. This API is needed to allow
WebKit's data manager to handle HSTS policies.
Diffstat (limited to 'tests/hsts-test.c')
-rw-r--r-- | tests/hsts-test.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/hsts-test.c b/tests/hsts-test.c index 6e383c08..5918ee39 100644 --- a/tests/hsts-test.c +++ b/tests/hsts-test.c @@ -461,6 +461,48 @@ do_hsts_idna_addresses_test (void) g_object_unref (enforcer); } +static void +do_hsts_get_domains_test (void) +{ + SoupHSTSEnforcer *enforcer = soup_hsts_enforcer_new (); + SoupHSTSPolicy *policy; + GList* domains; + + g_assert_null (soup_hsts_enforcer_get_domains (enforcer, TRUE)); + g_assert_null (soup_hsts_enforcer_get_domains (enforcer, FALSE)); + + policy = soup_hsts_policy_new ("gnome.org", 3600, FALSE); + g_assert_nonnull (policy); + soup_hsts_enforcer_set_policy (enforcer, policy); + soup_hsts_policy_free (policy); + + policy = soup_hsts_policy_new_session_policy ("freedesktop.org", FALSE); + g_assert_nonnull (policy); + soup_hsts_enforcer_set_policy (enforcer, policy); + soup_hsts_policy_free (policy); + + domains = soup_hsts_enforcer_get_domains (enforcer, TRUE); + g_assert_nonnull (domains); + g_assert_cmpint (g_list_length (domains), ==, 2); + g_list_free_full (domains, (GDestroyNotify)g_free); + + domains = soup_hsts_enforcer_get_domains (enforcer, FALSE); + g_assert_nonnull (domains); + g_assert_cmpint (g_list_length (domains), ==, 1); + g_assert_cmpstr ((char*)domains->data, ==, "gnome.org"); + g_list_free_full (domains, (GDestroyNotify)g_free); + + policy = soup_hsts_policy_new ("gnome.org", SOUP_HSTS_POLICY_MAX_AGE_PAST, FALSE); + soup_hsts_enforcer_set_policy (enforcer, policy); + soup_hsts_policy_free (policy); + + domains = soup_hsts_enforcer_get_domains (enforcer, TRUE); + g_assert_cmpint (g_list_length (domains), ==, 1); + g_assert_cmpstr ((char*)domains->data, ==, "freedesktop.org"); + g_list_free_full (domains, g_free); + g_object_unref (enforcer); +} + int main (int argc, char **argv) { @@ -506,6 +548,7 @@ main (int argc, char **argv) g_test_add_func ("/hsts/utf8-address", do_hsts_utf8_address_test); g_test_add_func ("/hsts/session-policy", do_hsts_session_policy_test); g_test_add_func ("/hsts/idna-addresses", do_hsts_idna_addresses_test); + g_test_add_func ("/hsts/get-domains", do_hsts_get_domains_test); ret = g_test_run (); |