summaryrefslogtreecommitdiffstats
path: root/daemons/ipa-kdb/tests/ipa_kdb_tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'daemons/ipa-kdb/tests/ipa_kdb_tests.c')
-rw-r--r--daemons/ipa-kdb/tests/ipa_kdb_tests.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/daemons/ipa-kdb/tests/ipa_kdb_tests.c b/daemons/ipa-kdb/tests/ipa_kdb_tests.c
index edd4ae097..ac541ad91 100644
--- a/daemons/ipa-kdb/tests/ipa_kdb_tests.c
+++ b/daemons/ipa-kdb/tests/ipa_kdb_tests.c
@@ -465,6 +465,60 @@ void test_dom_sid_string(void **state)
str_sid = dom_sid_string(test_ctx, &test_sid);
}
+void test_ipadb_filter_escape(void **state)
+{
+ char *out;
+ size_t c;
+
+ struct test_data {
+ const char *in;
+ bool star;
+ bool canon;
+ const char *exp_out;
+ } test_data[] = {
+ {"abc", false, false, "abc"},
+ {"abc", false, true, "abc"},
+ {"abc", true, true, "abc"},
+ {"abc", true, false, "abc"},
+ {"abc@def", false, false, "abc@def"},
+ {"abc@def", false, true, "abc@DEF"},
+ {"abc@def", true, true, "abc@DEF"},
+ {"abc@def", true, false, "abc@def"},
+ {"abc@DEF", false, false, "abc@DEF"},
+ {"abc@DEF", false, true, "abc@DEF"},
+ {"abc@DEF", true, true, "abc@DEF"},
+ {"abc@DEF", true, false, "abc@DEF"},
+ {"ab*c@def", false, false, "ab*c@def"},
+ {"ab*c@def", false, true, "ab*c@DEF"},
+ {"ab*c@def", true, true, "ab\\2ac@DEF"},
+ {"ab*c@def", true, false, "ab\\2ac@def"},
+ {"\\a(b)c@def", false, false, "\\5ca\\28b\\29c@def"},
+ {"\\a(b)c@def", false, true, "\\5ca\\28b\\29c@DEF"},
+ {"\\a(b)c@def", true, true, "\\5ca\\28b\\29c@DEF"},
+ {"\\a(b)c@def", true, false, "\\5ca\\28b\\29c@def"},
+ {"abc@de*f", false, false, "abc@de*f"},
+ {"abc@de*f", false, true, "abc@DE*F"},
+ {"abc@de*f", true, true, "abc@DE\\2AF"},
+ {"abc@de*f", true, false, "abc@de\\2af"},
+ /* Special characters must be UTF-8 encoded, don't change encoding */
+ {"abc@öäü", false, false, "abc@öäü"},
+ {"abc@öäü", false, true, "abc@ÖÄÜ"},
+ {"abc@öäü", true, true, "abc@ÖÄÜ"},
+ {"abc@öäü", true, false, "abc@öäü"},
+ {NULL, false, false, NULL}
+ };
+
+ out = ipadb_filter_escape(NULL, false, false);
+ assert_null(out);
+
+ for (c = 0; test_data[c]. in != NULL; c++) {
+ out = ipadb_filter_escape(test_data[c].in, test_data[c].star,
+ test_data[c].canon);
+ assert_string_equal(out, test_data[c].exp_out);
+ free(out);
+ }
+}
+
int main(int argc, const char *argv[])
{
@@ -473,6 +527,7 @@ int main(int argc, const char *argv[])
unit_test_setup_teardown(test_filter_logon_info, setup, teardown),
unit_test(test_string_to_sid),
unit_test_setup_teardown(test_dom_sid_string, setup, teardown),
+ unit_test(test_ipadb_filter_escape),
};
return run_tests(tests);