diff options
Diffstat (limited to 'daemons/ipa-kdb/tests/ipa_kdb_tests.c')
-rw-r--r-- | daemons/ipa-kdb/tests/ipa_kdb_tests.c | 55 |
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); |