diff options
author | Sumit Bose <sbose@redhat.com> | 2014-10-28 19:40:02 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-11-05 15:17:19 +0100 |
commit | 115de6d50f0d0bdd5745a5d8eb0d067be9128528 (patch) | |
tree | 6b2e279725dcf5b606e1b1694ff796b926ce3809 /src/tests/cmocka/test_ifp.c | |
parent | 1f7844eb0aa4b19247533aa83f1cb4876396c738 (diff) | |
download | sssd-115de6d50f0d0bdd5745a5d8eb0d067be9128528.tar.gz sssd-115de6d50f0d0bdd5745a5d8eb0d067be9128528.tar.xz sssd-115de6d50f0d0bdd5745a5d8eb0d067be9128528.zip |
Add parse_attr_list_ex() helper function
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src/tests/cmocka/test_ifp.c')
-rw-r--r-- | src/tests/cmocka/test_ifp.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/tests/cmocka/test_ifp.c b/src/tests/cmocka/test_ifp.c index b0f6e0990..d6e41706d 100644 --- a/src/tests/cmocka/test_ifp.c +++ b/src/tests/cmocka/test_ifp.c @@ -246,6 +246,29 @@ static void attr_parse_test(const char *expected[], const char *input) talloc_free(test_ctx); } +static void attr_parse_test_ex(const char *expected[], const char *input, + const char **defaults) +{ + const char **res; + TALLOC_CTX *test_ctx; + + test_ctx = talloc_new(NULL); + assert_non_null(test_ctx); + + res = parse_attr_list_ex(test_ctx, input, defaults); + + if (expected) { + /* Positive test */ + assert_non_null(res); + assert_string_list_equal(res, expected); + } else { + /* Negative test */ + assert_null(res); + } + + talloc_free(test_ctx); +} + void test_attr_acl(void **state) { /* Test defaults */ @@ -296,6 +319,33 @@ void test_attr_acl(void **state) attr_parse_test(NULL, "missing_plus_or_minus"); } +void test_attr_acl_ex(void **state) +{ + /* Test defaults */ + const char *exp_defaults[] = { "abc", "123", "xyz", NULL }; + attr_parse_test_ex(exp_defaults, NULL, exp_defaults); + + /* Test adding some attributes to the defaults */ + const char *exp_add[] = { "telephoneNumber", "streetAddress", + "abc", "123", "xyz", + NULL }; + attr_parse_test_ex(exp_add, "+telephoneNumber, +streetAddress", + exp_defaults); + + /* Test removing some attributes to the defaults */ + const char *exp_rm[] = { "123", NULL }; + attr_parse_test_ex(exp_rm, "-abc, -xyz", exp_defaults); + + /* Test adding with empty defaults */ + const char *exp_add_empty[] = { "telephoneNumber", "streetAddress", + NULL }; + attr_parse_test_ex(exp_add_empty, "+telephoneNumber, +streetAddress", NULL); + + /* Test removing with empty defaults */ + const char *rm_all[] = { NULL }; + attr_parse_test_ex(rm_all, "-telephoneNumber, -streetAddress", NULL); +} + void test_attr_allowed(void **state) { const char *whitelist[] = { "name", "gecos", NULL }; @@ -452,6 +502,7 @@ int main(int argc, const char *argv[]) unit_test(test_path_prefix), unit_test(test_el_to_dict), unit_test(test_attr_acl), + unit_test(test_attr_acl_ex), unit_test(test_attr_allowed), unit_test(test_path_escape_unescape), unit_test_setup_teardown(test_reply_path, |