unit-tests: Test matching against some empty data identities
authorMartin Willi <martin@revosec.ch>
Tue, 8 Oct 2013 12:49:45 +0000 (14:49 +0200)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Thu, 31 Oct 2013 20:57:07 +0000 (21:57 +0100)
src/libstrongswan/tests/test_identification.c

index 43e3ff6..aca3c05 100644 (file)
@@ -619,6 +619,49 @@ START_TEST(test_matches_string)
 }
 END_TEST
 
+START_TEST(test_matches_empty)
+{
+       identification_t *a;
+
+       a = identification_create_from_encoding(_i, chunk_empty);
+
+       switch (_i)
+       {
+               case ID_ANY:
+                       ck_assert(id_matches(a, "%any", ID_MATCH_ANY));
+                       break;
+               case ID_IPV4_ADDR:
+                       ck_assert(id_matches(a, "192.168.1.1", ID_MATCH_NONE));
+                       break;
+               case ID_FQDN:
+                       ck_assert(id_matches(a, "moon.strongswan.org", ID_MATCH_NONE));
+                       break;
+               case ID_USER_FQDN:
+                       ck_assert(id_matches(a, "moon@strongswan.org", ID_MATCH_NONE));
+                       break;
+               case ID_IPV6_ADDR:
+                       ck_assert(id_matches(a, "fec0::1", ID_MATCH_NONE));
+                       break;
+               case ID_DER_ASN1_DN:
+                       ck_assert(id_matches(a, "C=CH, E=moon@strongswan.org, CN=moon",
+                                                                ID_MATCH_NONE));
+                       break;
+               case ID_KEY_ID:
+                       ck_assert(id_matches(a, "@#12345678", ID_MATCH_NONE));
+                       break;
+               case ID_DER_ASN1_GN:
+               case ID_IPV4_ADDR_SUBNET:
+               case ID_IPV6_ADDR_SUBNET:
+               case ID_IPV4_ADDR_RANGE:
+               case ID_IPV6_ADDR_RANGE:
+                       /* currently not tested */
+                       break;
+       }
+
+       a->destroy(a);
+}
+END_TEST
+
 /*******************************************************************************
  * identification part enumeration
  */
@@ -740,6 +783,7 @@ Suite *identification_suite_create()
        tcase_add_test(tc, test_matches_any);
        tcase_add_test(tc, test_matches_binary);
        tcase_add_test(tc, test_matches_string);
+       tcase_add_loop_test(tc, test_matches_empty, ID_ANY, ID_KEY_ID + 1);
        suite_add_tcase(s, tc);
 
        tc = tcase_create("part enumeration");