Blame SOURCES/0044-NSS-TESTS-Improve-setup-teardown-for-subdomains-test.patch

ecf709
From f318eff5277d783972ef0d585ff05c473db44714 Mon Sep 17 00:00:00 2001
ecf709
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fidencio@redhat.com>
ecf709
Date: Wed, 1 Mar 2017 20:46:10 +0000
ecf709
Subject: [PATCH 44/54] NSS/TESTS: Improve setup/teardown for subdomains tests
ecf709
MIME-Version: 1.0
ecf709
Content-Type: text/plain; charset=UTF-8
ecf709
Content-Transfer-Encoding: 8bit
ecf709
ecf709
This patch basically makes the getgrnam_members_subdom(),
ecf709
getgrnam_mix_dom(), getgrnam_mix_dom_fqdn() and getgrnam_mix_subdom()
ecf709
more independent of each other.
ecf709
ecf709
Related:
ecf709
https://pagure.io/SSSD/sssd/issue/3001
ecf709
ecf709
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
ecf709
ecf709
Reviewed-by: Sumit Bose <sbose@redhat.com>
ecf709
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
ecf709
---
ecf709
 src/tests/cmocka/test_nss_srv.c | 182 +++++++++++++++++++++++++++++++++-------
ecf709
 1 file changed, 150 insertions(+), 32 deletions(-)
ecf709
ecf709
diff --git a/src/tests/cmocka/test_nss_srv.c b/src/tests/cmocka/test_nss_srv.c
ecf709
index cbe0dccdc1d883eae1a9621f12997ef43d05178e..b468204fb1729618830513322f0d901c4c801e94 100644
ecf709
--- a/src/tests/cmocka/test_nss_srv.c
ecf709
+++ b/src/tests/cmocka/test_nss_srv.c
ecf709
@@ -418,6 +418,26 @@ static errno_t store_user(struct nss_test_ctx *ctx,
ecf709
     return ret;
ecf709
 }
ecf709
 
ecf709
+static errno_t delete_user(struct nss_test_ctx *ctx,
ecf709
+                           struct sss_domain_info *dom,
ecf709
+                           struct passwd *user)
ecf709
+{
ecf709
+    errno_t ret;
ecf709
+    char *fqname;
ecf709
+
ecf709
+    fqname = sss_create_internal_fqname(ctx,
ecf709
+                                        user->pw_name,
ecf709
+                                        dom->name);
ecf709
+    if (fqname == NULL) {
ecf709
+        return ENOMEM;
ecf709
+    }
ecf709
+
ecf709
+    ret = sysdb_delete_user(dom, fqname, user->pw_uid);
ecf709
+
ecf709
+    talloc_free(fqname);
ecf709
+    return ret;
ecf709
+}
ecf709
+
ecf709
 static errno_t set_user_attr(struct nss_test_ctx *ctx,
ecf709
                              struct sss_domain_info *dom,
ecf709
                              struct passwd *user,
ecf709
@@ -491,6 +511,27 @@ static errno_t store_group(struct nss_test_ctx *ctx,
ecf709
     return ret;
ecf709
 }
ecf709
 
ecf709
+static errno_t delete_group(struct nss_test_ctx *ctx,
ecf709
+                            struct sss_domain_info *dom,
ecf709
+                            struct group *group)
ecf709
+{
ecf709
+    errno_t ret;
ecf709
+    char *fqname;
ecf709
+
ecf709
+    fqname = sss_create_internal_fqname(ctx,
ecf709
+                                        group->gr_name,
ecf709
+                                        dom->name);
ecf709
+
ecf709
+    if (fqname == NULL) {
ecf709
+        return ENOMEM;
ecf709
+    }
ecf709
+
ecf709
+    ret = sysdb_delete_group(dom, fqname, group->gr_gid);
ecf709
+
ecf709
+    talloc_free(fqname);
ecf709
+    return ret;
ecf709
+}
ecf709
+
ecf709
 static void assert_groups_equal(struct group *expected,
ecf709
                                 struct group *gr, const int nmem)
ecf709
 {
ecf709
@@ -540,6 +581,42 @@ static errno_t store_group_member(struct nss_test_ctx *ctx,
ecf709
     return ret;
ecf709
 }
ecf709
 
ecf709
+static errno_t remove_group_member(struct nss_test_ctx *ctx,
ecf709
+                                   const char *shortname_group,
ecf709
+                                   struct sss_domain_info *group_dom,
ecf709
+                                   const char *shortname_member,
ecf709
+                                   struct sss_domain_info *member_dom,
ecf709
+                                   enum sysdb_member_type type)
ecf709
+{
ecf709
+    errno_t ret;
ecf709
+    char *group_fqname = NULL;
ecf709
+    char *member_fqname = NULL;
ecf709
+
ecf709
+    group_fqname = sss_create_internal_fqname(ctx,
ecf709
+                                        shortname_group,
ecf709
+                                        group_dom->name);
ecf709
+    if (group_fqname == NULL) {
ecf709
+        return ENOMEM;
ecf709
+    }
ecf709
+
ecf709
+    member_fqname = sss_create_internal_fqname(ctx,
ecf709
+                                        shortname_member,
ecf709
+                                        member_dom->name);
ecf709
+    if (member_fqname == NULL) {
ecf709
+        talloc_free(group_fqname);
ecf709
+        return ENOMEM;
ecf709
+    }
ecf709
+
ecf709
+    ret = sysdb_remove_group_member(group_dom,
ecf709
+                                    group_fqname,
ecf709
+                                    member_fqname,
ecf709
+                                    type,
ecf709
+                                    false);
ecf709
+
ecf709
+    talloc_free(group_fqname);
ecf709
+    talloc_free(member_fqname);
ecf709
+    return ret;
ecf709
+}
ecf709
 
ecf709
 /* ====================== The tests =============================== */
ecf709
 struct passwd getpwnam_usr = {
ecf709
@@ -1599,34 +1676,6 @@ void test_nss_getgrnam_members_subdom(void **state)
ecf709
 {
ecf709
     errno_t ret;
ecf709
 
ecf709
-    ret = store_group(nss_test_ctx, nss_test_ctx->subdom,
ecf709
-                      &testsubdomgroup, 0);
ecf709
-    assert_int_equal(ret, EOK);
ecf709
-
ecf709
-    ret = store_user(nss_test_ctx, nss_test_ctx->subdom,
ecf709
-                     &submember1, NULL, 0);
ecf709
-    assert_int_equal(ret, EOK);
ecf709
-
ecf709
-    ret = store_user(nss_test_ctx, nss_test_ctx->subdom,
ecf709
-                     &submember2, NULL, 0);
ecf709
-    assert_int_equal(ret, EOK);
ecf709
-
ecf709
-    ret = store_group_member(nss_test_ctx,
ecf709
-                             testsubdomgroup.gr_name,
ecf709
-                             nss_test_ctx->subdom,
ecf709
-                             submember1.pw_name,
ecf709
-                             nss_test_ctx->subdom,
ecf709
-                             SYSDB_MEMBER_USER);
ecf709
-    assert_int_equal(ret, EOK);
ecf709
-
ecf709
-    ret = store_group_member(nss_test_ctx,
ecf709
-                             testsubdomgroup.gr_name,
ecf709
-                             nss_test_ctx->subdom,
ecf709
-                             submember2.pw_name,
ecf709
-                             nss_test_ctx->subdom,
ecf709
-                             SYSDB_MEMBER_USER);
ecf709
-    assert_int_equal(ret, EOK);
ecf709
-
ecf709
     mock_input_user_or_group("testsubdomgroup@"TEST_SUBDOM_NAME);
ecf709
     will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETGRNAM);
ecf709
     will_return_always(__wrap_sss_packet_get_body, WRAP_CALL_REAL);
ecf709
@@ -1757,6 +1806,14 @@ void test_nss_getgrnam_mix_dom_fqdn(void **state)
ecf709
 {
ecf709
     errno_t ret;
ecf709
 
ecf709
+    ret = store_group_member(nss_test_ctx,
ecf709
+                             testgroup_members.gr_name,
ecf709
+                             nss_test_ctx->tctx->dom,
ecf709
+                             submember1.pw_name,
ecf709
+                             nss_test_ctx->subdom,
ecf709
+                             SYSDB_MEMBER_USER);
ecf709
+    assert_int_equal(ret, EOK);
ecf709
+
ecf709
     nss_test_ctx->tctx->dom->fqnames = true;
ecf709
 
ecf709
     mock_input_user_or_group("testgroup_members@"TEST_DOM_NAME);
ecf709
@@ -3220,6 +3277,35 @@ static int nss_subdom_test_setup(void **state)
ecf709
     assert_int_equal(ret, EOK);
ecf709
 
ecf709
     nss_test_ctx->subdom = nss_test_ctx->tctx->dom->subdomains;
ecf709
+
ecf709
+    ret = store_group(nss_test_ctx, nss_test_ctx->subdom,
ecf709
+                      &testsubdomgroup, 0);
ecf709
+    assert_int_equal(ret, EOK);
ecf709
+
ecf709
+    ret = store_user(nss_test_ctx, nss_test_ctx->subdom,
ecf709
+                     &submember1, NULL, 0);
ecf709
+    assert_int_equal(ret, EOK);
ecf709
+
ecf709
+    ret = store_user(nss_test_ctx, nss_test_ctx->subdom,
ecf709
+                     &submember2, NULL, 0);
ecf709
+    assert_int_equal(ret, EOK);
ecf709
+
ecf709
+    ret = store_group_member(nss_test_ctx,
ecf709
+                             testsubdomgroup.gr_name,
ecf709
+                             nss_test_ctx->subdom,
ecf709
+                             submember1.pw_name,
ecf709
+                             nss_test_ctx->subdom,
ecf709
+                             SYSDB_MEMBER_USER);
ecf709
+    assert_int_equal(ret, EOK);
ecf709
+
ecf709
+    ret = store_group_member(nss_test_ctx,
ecf709
+                             testsubdomgroup.gr_name,
ecf709
+                             nss_test_ctx->subdom,
ecf709
+                             submember2.pw_name,
ecf709
+                             nss_test_ctx->subdom,
ecf709
+                             SYSDB_MEMBER_USER);
ecf709
+    assert_int_equal(ret, EOK);
ecf709
+
ecf709
     return 0;
ecf709
 }
ecf709
 
ecf709
@@ -3241,6 +3327,38 @@ static int nss_test_teardown(void **state)
ecf709
     return 0;
ecf709
 }
ecf709
 
ecf709
+static int nss_subdom_test_teardown(void **state)
ecf709
+{
ecf709
+    errno_t ret;
ecf709
+
ecf709
+    ret = remove_group_member(nss_test_ctx,
ecf709
+                              testsubdomgroup.gr_name,
ecf709
+                              nss_test_ctx->subdom,
ecf709
+                              submember2.pw_name,
ecf709
+                              nss_test_ctx->subdom,
ecf709
+                              SYSDB_MEMBER_USER);
ecf709
+    assert_int_equal(ret, EOK);
ecf709
+
ecf709
+    ret = remove_group_member(nss_test_ctx,
ecf709
+                              testsubdomgroup.gr_name,
ecf709
+                              nss_test_ctx->subdom,
ecf709
+                              submember1.pw_name,
ecf709
+                              nss_test_ctx->subdom,
ecf709
+                              SYSDB_MEMBER_USER);
ecf709
+    assert_int_equal(ret, EOK);
ecf709
+
ecf709
+    ret = delete_user(nss_test_ctx, nss_test_ctx->subdom, &submember2);
ecf709
+    assert_int_equal(ret, EOK);
ecf709
+
ecf709
+    ret = delete_user(nss_test_ctx, nss_test_ctx->subdom, &submember1);
ecf709
+    assert_int_equal(ret, EOK);
ecf709
+
ecf709
+    ret = delete_group(nss_test_ctx, nss_test_ctx->subdom, &testsubdomgroup);
ecf709
+    assert_int_equal(ret, EOK);
ecf709
+
ecf709
+    return nss_test_teardown(state);
ecf709
+}
ecf709
+
ecf709
 struct passwd testbysid = {
ecf709
     .pw_name = discard_const("testsiduser"),
ecf709
     .pw_uid = 12345,
ecf709
@@ -3904,16 +4022,16 @@ int main(int argc, const char *argv[])
ecf709
                                         nss_fqdn_test_setup, nss_test_teardown),
ecf709
         cmocka_unit_test_setup_teardown(test_nss_getgrnam_members_subdom,
ecf709
                                         nss_subdom_test_setup,
ecf709
-                                        nss_test_teardown),
ecf709
+                                        nss_subdom_test_teardown),
ecf709
         cmocka_unit_test_setup_teardown(test_nss_getgrnam_mix_dom,
ecf709
                                         nss_subdom_test_setup,
ecf709
-                                        nss_test_teardown),
ecf709
+                                        nss_subdom_test_teardown),
ecf709
         cmocka_unit_test_setup_teardown(test_nss_getgrnam_mix_dom_fqdn,
ecf709
                                         nss_subdom_test_setup,
ecf709
-                                        nss_test_teardown),
ecf709
+                                        nss_subdom_test_teardown),
ecf709
         cmocka_unit_test_setup_teardown(test_nss_getgrnam_mix_subdom,
ecf709
                                         nss_subdom_test_setup,
ecf709
-                                        nss_test_teardown),
ecf709
+                                        nss_subdom_test_teardown),
ecf709
         cmocka_unit_test_setup_teardown(test_nss_getgrnam_space,
ecf709
                                         nss_test_setup, nss_test_teardown),
ecf709
         cmocka_unit_test_setup_teardown(test_nss_getgrnam_space_sub,
ecf709
-- 
ecf709
2.9.3
ecf709