summaryrefslogtreecommitdiff
path: root/tests/hsts-test.c
diff options
context:
space:
mode:
authorClaudio Saavedra <csaavedra@igalia.com>2019-08-02 18:55:02 +0300
committerClaudio Saavedra <csaavedra@igalia.com>2019-08-05 14:19:10 +0000
commit6c06d60074a808ded76b9fd47d77c3562ee0330f (patch)
treeb33d900c9a876b3c023d0d2efafb2b8d63c3bd29 /tests/hsts-test.c
parent2a8daff431ad6d094a0640cc0ffd762b8db572bf (diff)
downloadlibsoup-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.c43
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 ();