summaryrefslogtreecommitdiffstats
path: root/src/tests
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2014-10-28 19:40:02 +0100
committerJakub Hrozek <jhrozek@redhat.com>2014-11-05 15:17:19 +0100
commit115de6d50f0d0bdd5745a5d8eb0d067be9128528 (patch)
tree6b2e279725dcf5b606e1b1694ff796b926ce3809 /src/tests
parent1f7844eb0aa4b19247533aa83f1cb4876396c738 (diff)
downloadsssd-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')
-rw-r--r--src/tests/cmocka/test_ifp.c51
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,