summaryrefslogtreecommitdiffstats
path: root/src/tests/sysdb-tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/sysdb-tests.c')
-rw-r--r--src/tests/sysdb-tests.c1564
1 files changed, 797 insertions, 767 deletions
diff --git a/src/tests/sysdb-tests.c b/src/tests/sysdb-tests.c
index d0560f4d6..429aa3953 100644
--- a/src/tests/sysdb-tests.c
+++ b/src/tests/sysdb-tests.c
@@ -185,26 +185,117 @@ struct test_data {
struct tevent_context *ev;
struct sysdb_test_ctx *ctx;
- const char *username;
- const char *groupname;
+ const char *username; /* fqname */
+ const char *groupname; /* fqname */
const char *netgrname;
const char *autofsmapname;
uid_t uid;
gid_t gid;
const char *shell;
+ const char *orig_dn;
+ const char *sid_str;
bool finished;
int error;
struct sysdb_attrs *attrs;
const char **attrlist;
- char **memberlist;
+ char **ghostlist;
struct ldb_message *msg;
size_t msgs_count;
struct ldb_message **msgs;
};
+static struct test_data *test_data_new(struct sysdb_test_ctx *test_ctx)
+{
+ struct test_data *data;
+
+ data = talloc_zero(test_ctx, struct test_data);
+ if (data == NULL) {
+ return NULL;
+ }
+
+ data->attrs = sysdb_new_attrs(data);
+ if (data->attrs == NULL) {
+ talloc_free(data);
+ return NULL;
+ }
+
+ data->ctx = test_ctx;
+ data->ev = test_ctx->ev;
+
+ return data;
+}
+
+static char *test_asprintf_fqname(TALLOC_CTX *mem_ctx,
+ struct sss_domain_info *dom,
+ const char *fmt,
+ ...)
+{
+ char *shortname;
+ char *fqname;
+ va_list ap;
+
+ va_start(ap, fmt);
+ shortname = talloc_vasprintf(mem_ctx, fmt, ap);
+ va_end(ap);
+ if (shortname == NULL) {
+ return NULL;
+ }
+
+ fqname = sss_create_internal_fqname(mem_ctx, shortname, dom->name);
+ talloc_free(shortname);
+ if (fqname == NULL) {
+ return NULL;
+ }
+
+ return fqname;
+}
+
+static struct test_data *test_data_new_user(struct sysdb_test_ctx *test_ctx,
+ uid_t uid)
+{
+ struct test_data *data;
+
+ data = test_data_new(test_ctx);
+ if (data == NULL) {
+ return NULL;
+ }
+
+ data->uid = uid;
+ data->gid = uid;
+ data->username = test_asprintf_fqname(data, test_ctx->domain,
+ "testuser%d", uid);
+ if (data->username == NULL) {
+ talloc_free(data);
+ return NULL;
+ }
+
+ return data;
+}
+
+static struct test_data *test_data_new_group(struct sysdb_test_ctx *test_ctx,
+ gid_t gid)
+{
+ struct test_data *data;
+
+ data = test_data_new(test_ctx);
+ if (data == NULL) {
+ return NULL;
+ }
+
+ data->gid = gid;
+ data->groupname = test_asprintf_fqname(data, test_ctx->domain,
+ "testgroup%d", gid);
+ if (data->groupname == NULL) {
+ talloc_free(data);
+ return NULL;
+ }
+
+ return data;
+}
+
static int test_add_user(struct test_data *data)
{
char *homedir;
@@ -212,11 +303,18 @@ static int test_add_user(struct test_data *data)
int ret;
homedir = talloc_asprintf(data, "/home/testuser%d", data->uid);
+ if (homedir == NULL) {
+ return ENOMEM;
+ }
+
gecos = talloc_asprintf(data, "Test User %d", data->uid);
+ if (gecos == NULL) {
+ return ENOMEM;
+ }
ret = sysdb_add_user(data->ctx->domain, data->username,
data->uid, 0, gecos, homedir, "/bin/bash",
- NULL, NULL, 0, 0);
+ data->orig_dn, data->attrs, 0, 0);
return ret;
}
@@ -227,7 +325,9 @@ static int test_store_user(struct test_data *data)
int ret;
homedir = talloc_asprintf(data, "/home/testuser%d", data->uid);
+ fail_if(homedir == NULL, "OOM");
gecos = talloc_asprintf(data, "Test User %d", data->uid);
+ fail_if(gecos == NULL, "OOM");
ret = sysdb_store_user(data->ctx->domain,
data->username, "x",
@@ -241,31 +341,23 @@ static int test_remove_user(struct test_data *data)
{
struct ldb_dn *user_dn;
int ret;
+ struct ldb_result *res;
user_dn = sysdb_user_dn(data, data->ctx->domain, data->username);
if (!user_dn) return ENOMEM;
- ret = sysdb_delete_entry(data->ctx->sysdb, user_dn, true);
- return ret;
-}
-
-static int test_remove_user_by_uid(struct test_data *data)
-{
- int ret;
+ ret = sysdb_delete_entry(data->ctx->sysdb, user_dn, false);
+ if (ret != EOK) return ret;
- ret = sysdb_delete_user(data->ctx->domain, NULL, data->uid);
- return ret;
-}
+ ret = sysdb_getpwnam(data, data->ctx->domain, data->username, &res);
+ if (ret != EOK) return ret;
-static int test_remove_nonexistent_group(struct test_data *data)
-{
- int ret;
+ if (res->count != 0) return E2BIG;
- ret = sysdb_delete_group(data->ctx->domain, NULL, data->uid);
- return ret;
+ return EOK;
}
-static int test_remove_nonexistent_user(struct test_data *data)
+static int test_remove_user_by_uid(struct test_data *data)
{
int ret;
@@ -287,21 +379,17 @@ static int test_add_incomplete_group(struct test_data *data)
int ret;
ret = sysdb_add_incomplete_group(data->ctx->domain, data->groupname,
- data->gid, NULL, NULL, NULL, true, 0);
+ data->gid, data->orig_dn,
+ data->sid_str, NULL, true, 0);
return ret;
}
static int test_store_group(struct test_data *data)
{
int ret;
- char *internal_fqname;
- internal_fqname = sss_create_internal_fqname(data->ctx,
- data->groupname,
- data->ctx->domain->name);
ret = sysdb_store_group(data->ctx->domain,
- internal_fqname, data->gid, data->attrs, -1, 0);
- talloc_free(internal_fqname);
+ data->groupname, data->gid, data->attrs, -1, 0);
return ret;
}
@@ -309,12 +397,20 @@ static int test_remove_group(struct test_data *data)
{
struct ldb_dn *group_dn;
int ret;
+ struct ldb_result *res;
group_dn = sysdb_group_dn(data, data->ctx->domain, data->groupname);
if (!group_dn) return ENOMEM;
ret = sysdb_delete_entry(data->ctx->sysdb, group_dn, true);
- return ret;
+ if (ret != EOK) return ret;
+
+ ret = sysdb_getgrnam(data, data->ctx->domain, data->groupname, &res);
+ if (ret != EOK) return ret;
+
+ if (res->count != 0) return E2BIG;
+
+ return EOK;
}
static int test_remove_group_by_gid(struct test_data *data)
@@ -322,9 +418,6 @@ static int test_remove_group_by_gid(struct test_data *data)
int ret;
ret = sysdb_delete_group(data->ctx->domain, NULL, data->gid);
- if (ret == ENOENT) {
- ret = EOK;
- }
return ret;
}
@@ -339,39 +432,37 @@ static int test_set_user_attr(struct test_data *data)
static int test_add_group_member(struct test_data *data)
{
- const char *fq_username;
int ret;
- fq_username = talloc_asprintf(data, "testuser%d@%s", data->uid,
- data->ctx->domain->name);
- if (fq_username == NULL) {
- return ENOMEM;
- }
-
ret = sysdb_add_group_member(data->ctx->domain,
data->groupname,
- fq_username,
+ data->username,
SYSDB_MEMBER_USER, false);
return ret;
}
static int test_remove_group_member(struct test_data *data)
{
- const char *username;
- char *user_fqname;
int ret;
+ struct ldb_result *res_pre;
+ struct ldb_result *res_post;
- username = talloc_asprintf(data, "testuser%d", data->uid);
- if (username == NULL) {
- return ENOMEM;
- }
-
- user_fqname = sss_create_internal_fqname(data, username,
- data->ctx->domain->name);
+ ret = sysdb_initgroups(data, data->ctx->domain, data->username, &res_pre);
+ if (ret) return ret;
ret = sysdb_remove_group_member(data->ctx->domain,
- data->groupname, user_fqname,
+ data->groupname,
+ data->username,
SYSDB_MEMBER_USER, false);
+
+ ret = sysdb_initgroups(data, data->ctx->domain, data->username, &res_post);
+ if (ret) return ret;
+
+ /* assert the member was removed */
+ if (res_post->count + 1 != res_pre->count) {
+ return E2BIG;
+ }
+
return ret;
}
@@ -435,33 +526,22 @@ static int test_delete_recursive(struct test_data *data)
static int test_memberof_store_group(struct test_data *data)
{
int ret;
- struct sysdb_attrs *attrs = NULL;
char *member;
int i;
- char *gr_fqname;
- attrs = sysdb_new_attrs(data);
- if (!attrs) {
- return ENOMEM;
- }
for (i = 0; data->attrlist && data->attrlist[i]; i++) {
member = sysdb_group_strdn(data, data->ctx->domain->name,
data->attrlist[i]);
if (!member) {
return ENOMEM;
}
- ret = sysdb_attrs_steal_string(attrs, SYSDB_MEMBER, member);
+ ret = sysdb_attrs_steal_string(data->attrs, SYSDB_MEMBER, member);
if (ret != EOK) {
return ret;
}
}
- gr_fqname = sss_create_internal_fqname(data->ctx, data->groupname,
- data->ctx->domain->name);
- ret = sysdb_store_group(data->ctx->domain,
- gr_fqname, data->gid, attrs, -1, 0);
- talloc_free(gr_fqname);
- return ret;
+ return test_store_group(data);
}
static int test_memberof_store_group_with_ghosts(struct test_data *data)
@@ -470,7 +550,6 @@ static int test_memberof_store_group_with_ghosts(struct test_data *data)
struct sysdb_attrs *attrs = NULL;
char *member;
int i;
- char *gr_fqname;
attrs = sysdb_new_attrs(data);
if (!attrs) {
@@ -489,22 +568,16 @@ static int test_memberof_store_group_with_ghosts(struct test_data *data)
}
}
- for (i = 0; data->memberlist && data->memberlist[i]; i++) {
+ for (i = 0; data->ghostlist && data->ghostlist[i]; i++) {
ret = sysdb_attrs_steal_string(attrs, SYSDB_GHOST,
- data->memberlist[i]);
+ data->ghostlist[i]);
if (ret != EOK) {
return ret;
}
}
- gr_fqname = sss_create_internal_fqname(data->ctx, data->groupname,
- data->ctx->domain->name);
- if (gr_fqname == NULL) {
- return ENOMEM;
- }
-
ret = sysdb_store_group(data->ctx->domain,
- gr_fqname, data->gid, attrs, -1, 0);
+ data->groupname, data->gid, attrs, -1, 0);
return ret;
}
@@ -514,6 +587,7 @@ static int test_add_basic_netgroup(struct test_data *data)
int ret;
description = talloc_asprintf(data, "Test Netgroup %d", data->uid);
+ if (description == NULL) return ENOMEM;
ret = sysdb_add_basic_netgroup(data->ctx->domain, data->netgrname,
description);
@@ -547,6 +621,7 @@ static int test_set_netgroup_attr(struct test_data *data)
struct sysdb_attrs *attrs = NULL;
description = talloc_asprintf(data, "Sysdb Netgroup %d", data->uid);
+ if (description == NULL) return ENOMEM;
attrs = sysdb_new_attrs(data);
if (!attrs) {
@@ -563,16 +638,47 @@ static int test_set_netgroup_attr(struct test_data *data)
return ret;
}
+static struct ldb_result *test_getpwnam(struct test_data *data)
+{
+ int ret;
+ struct ldb_result *res;
+
+ ret = sysdb_getpwnam(data,
+ data->ctx->domain,
+ data->username, &res);
+ if (ret != EOK) {
+ return NULL;
+ }
+
+ return res;
+}
+
+static struct ldb_result *test_getgrnam(struct test_data *data)
+{
+ int ret;
+ struct ldb_result *res;
+
+ ret = sysdb_getgrnam(data,
+ data->ctx->domain,
+ data->groupname, &res);
+ if (ret != EOK) {
+ return NULL;
+ }
+
+ return res;
+}
+
START_TEST (test_sysdb_user_new_id)
{
struct sysdb_test_ctx *test_ctx;
int ret;
- const char *username;
+ const char *fqname;
struct sysdb_attrs *attrs = NULL;
struct ldb_message *msg;
const char *get_attrs[] = { SYSDB_DESCRIPTION, NULL };
const char *desc;
const char *desc_in = "testuser_new_id_desc";
+ const char *username = "testuser_newid";
/* Setup */
ret = setup_sysdb_tests(&test_ctx);
@@ -581,7 +687,10 @@ START_TEST (test_sysdb_user_new_id)
return;
}
- username = "testuser_newid@test.sub";
+ fqname = sss_create_internal_fqname(test_ctx,
+ username,
+ test_ctx->domain->name);
+ fail_if(fqname == NULL);
attrs = sysdb_new_attrs(test_ctx);
fail_if(attrs == NULL);
@@ -589,21 +698,21 @@ START_TEST (test_sysdb_user_new_id)
ret = sysdb_attrs_add_string(attrs, SYSDB_DESCRIPTION, desc_in);
fail_if(ret != EOK);
- ret = sysdb_add_user(test_ctx->domain, username,
- 0, 0, username, "/", "/bin/bash",
+ ret = sysdb_add_user(test_ctx->domain, fqname,
+ 0, 0, fqname, "/", "/bin/bash",
NULL, attrs, 0, 0);
- fail_if(ret != EOK, "Could not store user %s", username);
+ fail_if(ret != EOK, "Could not store user %s", fqname);
ret = sysdb_search_user_by_name(test_ctx,
test_ctx->domain,
- username, get_attrs, &msg);
- fail_if(ret != EOK, "Could not retrieve user %s", username);
+ fqname, get_attrs, &msg);
+ fail_if(ret != EOK, "Could not retrieve user %s", fqname);
desc = ldb_msg_find_attr_as_string(msg, SYSDB_DESCRIPTION, NULL);
fail_unless(desc != NULL);
ck_assert_str_eq(desc, desc_in);
- ret = sysdb_delete_user(test_ctx->domain, username, 0);
+ ret = sysdb_delete_user(test_ctx->domain, fqname, 0);
fail_unless(ret == EOK, "sysdb_delete_user error [%d][%s]",
ret, strerror(ret));
@@ -616,7 +725,6 @@ START_TEST (test_sysdb_store_user)
struct sysdb_test_ctx *test_ctx;
struct test_data *data;
int ret;
- char *shortname;
/* Setup */
ret = setup_sysdb_tests(&test_ctx);
@@ -625,15 +733,8 @@ START_TEST (test_sysdb_store_user)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->uid = _i;
- data->gid = _i;
- shortname = talloc_asprintf(data, "testuser%d", _i);
- data->username = sss_create_internal_fqname(data, shortname,
- data->ctx->domain->name);
- talloc_free(shortname);
+ data = test_data_new_user(test_ctx, _i);
+ fail_if(data == NULL);
ret = test_store_user(data);
@@ -647,7 +748,6 @@ START_TEST (test_sysdb_store_user_existing)
struct sysdb_test_ctx *test_ctx;
struct test_data *data;
int ret;
- char *shortname;
/* Setup */
ret = setup_sysdb_tests(&test_ctx);
@@ -656,16 +756,9 @@ START_TEST (test_sysdb_store_user_existing)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->uid = _i;
- data->gid = _i;
- shortname = talloc_asprintf(data, "testuser%d", _i);
- data->shell = talloc_asprintf(data, "/bin/ksh");
- data->username = sss_create_internal_fqname(data, shortname,
- data->ctx->domain->name);
- talloc_free(shortname);
+ data = test_data_new_user(test_ctx, _i);
+ fail_if(data == NULL);
+ data->shell = "/bin/ksh";
ret = test_store_user(data);
@@ -687,11 +780,8 @@ START_TEST (test_sysdb_store_group)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", _i, TEST_DOM_NAME);
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL, "OOM");
ret = test_store_group(data);
@@ -713,10 +803,8 @@ START_TEST (test_sysdb_remove_local_user)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->username = talloc_asprintf(data, "testuser%d", _i);
+ data = test_data_new_user(test_ctx, _i);
+ fail_if(data == NULL, "OOM");
ret = test_remove_user(data);
@@ -738,9 +826,8 @@ START_TEST (test_sysdb_remove_local_user_by_uid)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new(test_ctx);
+ fail_if(data == NULL);
data->uid = _i;
ret = test_remove_user_by_uid(data);
@@ -763,10 +850,8 @@ START_TEST (test_sysdb_remove_local_group)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", _i, TEST_DOM_NAME);
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
ret = test_remove_group(data);
@@ -788,10 +873,8 @@ START_TEST (test_sysdb_remove_local_group_by_gid)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i;
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
null_ctx_get_size(data->ctx);
ret = test_remove_group_by_gid(data);
@@ -815,12 +898,8 @@ START_TEST (test_sysdb_add_user)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->uid = _i;
- data->gid = _i;
- data->username = talloc_asprintf(data, "testuser%d", _i);
+ data = test_data_new_user(test_ctx, _i);
+ fail_if(data == NULL);
ret = test_add_user(data);
@@ -842,12 +921,8 @@ START_TEST (test_sysdb_add_group)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->uid = _i;
- data->gid = _i;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", _i, TEST_DOM_NAME);
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
ret = test_add_group(data);
@@ -861,7 +936,7 @@ START_TEST (test_sysdb_add_group_with_ghosts)
struct sysdb_test_ctx *test_ctx;
struct test_data *data;
int ret;
- char *membername;
+ char *member_fqname;
int j;
/* Setup */
@@ -871,25 +946,13 @@ START_TEST (test_sysdb_add_group_with_ghosts)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->uid = _i;
- data->gid = _i;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", _i,
- TEST_DOM_NAME);
- fail_unless(data->groupname != NULL, "Out of memory\n");
-
- data->attrs = sysdb_new_attrs(data);
- if (ret != EOK) {
- fail("Could not create the changeset");
- return;
- }
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
for (j = MBO_GROUP_BASE; j < _i; j++) {
- membername = talloc_asprintf(data, "testghost%d", j);
- fail_unless(membername != NULL, "Out of memory\n");
- ret = sysdb_attrs_steal_string(data->attrs, SYSDB_GHOST, membername);
+ member_fqname = test_asprintf_fqname(data, data->ctx->domain,
+ "testghost%d", j);
+ ret = sysdb_attrs_steal_string(data->attrs, SYSDB_GHOST, member_fqname);
if (ret != EOK) {
fail_unless(ret == EOK, "Cannot add attr\n");
}
@@ -915,12 +978,8 @@ START_TEST (test_sysdb_add_incomplete_group)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->uid = _i;
- data->gid = _i;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", _i, TEST_DOM_NAME);
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
ret = test_add_incomplete_group(data);
@@ -932,10 +991,11 @@ END_TEST
START_TEST (test_sysdb_getpwnam)
{
struct sysdb_test_ctx *test_ctx;
+ struct test_data *data;
struct ldb_result *res;
- const char *username;
uid_t uid;
int ret;
+ const char *username;
/* Setup */
ret = setup_sysdb_tests(&test_ctx);
@@ -944,42 +1004,29 @@ START_TEST (test_sysdb_getpwnam)
return;
}
- username = talloc_asprintf(test_ctx, "testuser%d", _i);
-
- ret = sysdb_getpwnam(test_ctx,
- test_ctx->domain,
- username, &res);
- if (ret) {
- fail("sysdb_getpwnam failed for username %s (%d: %s)",
- username, ret, strerror(ret));
- goto done;
- }
+ data = test_data_new_user(test_ctx, _i);
+ fail_if(data == NULL);
- if (res->count != 1) {
- fail("Invalid number of replies. Expected 1, got %d", res->count);
- goto done;
- }
+ res = test_getpwnam(data);
+ fail_if(res->count != 1,
+ "Invalid number of replies. Expected 1, got %d", res->count);
+ /* Check the user was found with the expected FQDN and UID */
uid = ldb_msg_find_attr_as_uint(res->msgs[0], SYSDB_UIDNUM, 0);
fail_unless(uid == _i, "Did not find the expected UID");
+ username = ldb_msg_find_attr_as_string(res->msgs[0], SYSDB_NAME, NULL);
+ ck_assert_str_eq(username, data->username);
/* Search for the user with the wrong case */
- username = talloc_asprintf(test_ctx, "TESTUSER%d", _i);
-
- ret = sysdb_getpwnam(test_ctx,
- test_ctx->domain,
- username, &res);
- if (ret) {
- fail("sysdb_getpwnam failed for username %s (%d: %s)",
- username, ret, strerror(ret));
- goto done;
- }
+ data->username = test_asprintf_fqname(data, test_ctx->domain,
+ "TESTUSER%d", _i);
+ fail_if(data->username == NULL, "OOM");
+ fail_if(ret != EOK);
- if (res->count != 0) {
- fail("The upper-case username search should fail.");
- }
+ res = test_getpwnam(data);
+ fail_if(res->count != 0,
+ "Invalid number of replies. Expected 0, got %d", res->count);
-done:
talloc_free(test_ctx);
}
END_TEST
@@ -987,6 +1034,7 @@ END_TEST
START_TEST (test_sysdb_getgrnam)
{
struct sysdb_test_ctx *test_ctx;
+ struct test_data *data;
struct ldb_result *res;
const char *groupname;
gid_t gid;
@@ -999,44 +1047,30 @@ START_TEST (test_sysdb_getgrnam)
return;
}
- groupname = talloc_asprintf(test_ctx, "testgroup%d", _i);
-
- ret = sysdb_getgrnam(test_ctx,
- test_ctx->domain,
- groupname, &res);
- if (ret) {
- fail("sysdb_getgrnam failed for groupname %s (%d: %s)",
- groupname, ret, strerror(ret));
- goto done;
- }
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
- if (res->count != 1) {
- fail("Invalid number of replies. Expected 1, got %d", res->count);
- goto done;
- }
+ res = test_getgrnam(data);
+ fail_if(res->count != 1,
+ "Invalid number of replies. Expected 1, got %d", res->count);
gid = ldb_msg_find_attr_as_uint(res->msgs[0], SYSDB_GIDNUM, 0);
fail_unless(gid == _i,
"Did not find the expected GID (found %d expected %d)",
gid, _i);
+ groupname = ldb_msg_find_attr_as_string(res->msgs[0], SYSDB_NAME, NULL);
+ ck_assert_str_eq(groupname, data->groupname);
/* Search for the group with the wrong case */
- groupname = talloc_asprintf(test_ctx, "TESTGROUP%d", _i);
-
- ret = sysdb_getgrnam(test_ctx,
- test_ctx->domain,
- groupname, &res);
- if (ret) {
- fail("sysdb_getgrnam failed for groupname %s (%d: %s)",
- groupname, ret, strerror(ret));
- goto done;
- }
+ data->groupname = test_asprintf_fqname(data, test_ctx->domain,
+ "TESTGROUP%d", _i);
+ fail_if(data->groupname == NULL, "OOM");
+ fail_if(ret != EOK);
- if (res->count != 0) {
- fail("The upper-case groupname search should fail.");
- }
+ res = test_getgrnam(data);
+ fail_if(res->count != 0,
+ "Invalid number of replies. Expected 1, got %d", res->count);
-done:
talloc_free(test_ctx);
}
END_TEST
@@ -1044,9 +1078,9 @@ END_TEST
START_TEST (test_sysdb_getgrgid)
{
struct sysdb_test_ctx *test_ctx;
+ struct test_data *data;
struct ldb_result *res;
- const char *e_groupname;
- const char *groupname;
+ const char *fqname;
int ret;
/* Setup */
@@ -1056,26 +1090,24 @@ START_TEST (test_sysdb_getgrgid)
return;
}
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL, "OOM");
+
ret = sysdb_getgrgid(test_ctx,
test_ctx->domain,
- _i, &res);
+ data->gid, &res);
if (ret) {
fail("sysdb_getgrgid failed for gid %d (%d: %s)",
- _i, ret, strerror(ret));
+ data->gid, ret, strerror(ret));
goto done;
}
- groupname = ldb_msg_find_attr_as_string(res->msgs[0], SYSDB_NAME, 0);
+ fqname = ldb_msg_find_attr_as_string(res->msgs[0], SYSDB_NAME, 0);
+ fail_unless(fqname != NULL, "No group name?\n");
- e_groupname = talloc_asprintf(test_ctx, "testgroup%d", _i);
- if (e_groupname == NULL) {
- fail("Cannot allocate memory");
- goto done;
- }
-
- fail_unless(strcmp(groupname, e_groupname) == 0,
+ fail_unless(strcmp(fqname, data->groupname) == 0,
"Did not find the expected groupname (found %s expected %s)",
- groupname, e_groupname);
+ fqname, data->groupname);
done:
talloc_free(test_ctx);
}
@@ -1110,9 +1142,9 @@ END_TEST
START_TEST (test_sysdb_getpwuid)
{
struct sysdb_test_ctx *test_ctx;
+ struct test_data *data;
struct ldb_result *res;
- const char *e_username;
- const char *username;
+ const char *fqname;
int ret;
/* Setup */
@@ -1122,6 +1154,9 @@ START_TEST (test_sysdb_getpwuid)
return;
}
+ data = test_data_new_user(test_ctx, _i);
+ fail_if(data == NULL);
+
ret = sysdb_getpwuid(test_ctx,
test_ctx->domain,
_i, &res);
@@ -1134,17 +1169,12 @@ START_TEST (test_sysdb_getpwuid)
fail_unless(res->count == 1, "Expected 1 user entry, found %d\n",
res->count);
- username = ldb_msg_find_attr_as_string(res->msgs[0], SYSDB_NAME, 0);
+ fqname = ldb_msg_find_attr_as_string(res->msgs[0], SYSDB_NAME, 0);
+ fail_unless(fqname != NULL, "No name?\n");
- e_username = talloc_asprintf(test_ctx, "testuser%d", _i);
- if (username == NULL) {
- fail("Cannot allocate memory");
- goto done;
- }
-
- fail_unless(strcmp(username, e_username) == 0,
+ fail_unless(strcmp(fqname, data->username) == 0,
"Did not find the expected username (found %s expected %s)",
- username, e_username);
+ fqname, data->username);
done:
talloc_free(test_ctx);
}
@@ -1217,10 +1247,8 @@ START_TEST (test_sysdb_set_user_attr)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->username = talloc_asprintf(data, "testuser%d@%s", _i, test_ctx->domain->name);
+ data = test_data_new_user(test_ctx, _i);
+ fail_if(data == NULL);
data->attrs = sysdb_new_attrs(test_ctx);
if (ret != EOK) {
@@ -1275,39 +1303,38 @@ END_TEST
START_TEST (test_sysdb_remove_attrs)
{
struct sysdb_test_ctx *test_ctx;
+ struct test_data *data;
int ret;
char *rmattrs[2];
- char *username;
struct ldb_result *res;
const char *shell;
ret = setup_sysdb_tests(&test_ctx);
fail_if(ret != EOK, "Could not set up the test");
- username = talloc_asprintf(test_ctx, "testuser%d@%s", _i,
- test_ctx->domain->name);
- fail_if(username == NULL, "OOM");
+ data = test_data_new_user(test_ctx, _i);
+ fail_if(data == NULL, "OOM");
ret = sysdb_getpwnam(test_ctx,
test_ctx->domain,
- username, &res);
- fail_if(ret != EOK, "sysdb_getpwnam failed for username %s (%d: %s)",
- username, ret, strerror(ret));
+ data->username, &res);
+ fail_if(ret != EOK, "sysdb_getpwnam failed for fqname %s (%d: %s)",
+ data->username, ret, strerror(ret));
shell = ldb_msg_find_attr_as_string(res->msgs[0], SYSDB_SHELL, NULL);
fail_unless(shell != NULL, "Did not find user shell before removal");
rmattrs[0] = discard_const(SYSDB_SHELL);
rmattrs[1] = NULL;
- ret = sysdb_remove_attrs(test_ctx->domain, username, SYSDB_MEMBER_USER,
- rmattrs);
+ ret = sysdb_remove_attrs(test_ctx->domain, data->username,
+ SYSDB_MEMBER_USER, rmattrs);
fail_if(ret != EOK, "Removing attributes failed: %d", ret);
ret = sysdb_getpwnam(test_ctx,
test_ctx->domain,
- username, &res);
- fail_if(ret != EOK, "sysdb_getpwnam failed for username %s (%d: %s)",
- username, ret, strerror(ret));
+ data->username, &res);
+ fail_if(ret != EOK, "sysdb_getpwnam failed for fqname %s (%d: %s)",
+ data->username, ret, strerror(ret));
shell = ldb_msg_find_attr_as_string(res->msgs[0], SYSDB_SHELL, NULL);
fail_unless(shell == NULL, "Found user shell after removal");
}
@@ -1316,10 +1343,10 @@ END_TEST
START_TEST (test_sysdb_get_user_attr)
{
struct sysdb_test_ctx *test_ctx;
+ struct test_data *data;
const char *attrs[] = { SYSDB_SHELL, NULL };
struct ldb_result *res;
const char *attrval;
- char *username;
int ret;
/* Setup */
@@ -1329,12 +1356,13 @@ START_TEST (test_sysdb_get_user_attr)
return;
}
- username = talloc_asprintf(test_ctx, "testuser%d", _i);
+ data = test_data_new_user(test_ctx, _i);
+ fail_if(data == NULL);
- ret = sysdb_get_user_attr(test_ctx, test_ctx->domain, username, attrs,
+ ret = sysdb_get_user_attr(test_ctx, test_ctx->domain, data->username, attrs,
&res);
if (ret) {
- fail("Could not get attributes for user %s", username);
+ fail("Could not get attributes for user %s", data->username);
goto done;
}
@@ -1343,7 +1371,7 @@ START_TEST (test_sysdb_get_user_attr)
attrval = ldb_msg_find_attr_as_string(res->msgs[0], SYSDB_SHELL, 0);
fail_if(strcmp(attrval, "/bin/ksh"),
- "Got bad attribute value for user %s", username);
+ "Got bad attribute value for user %s", data->username);
done:
talloc_free(test_ctx);
}
@@ -1387,7 +1415,7 @@ START_TEST (test_sysdb_get_user_attr_subdomain)
fail_if(ret != EOK, "sysdb_store_user failed.");
/* Test */
- ret = sysdb_get_user_attr(test_ctx, subdomain, username,
+ ret = sysdb_get_user_attr(test_ctx, subdomain, fq_name,
attrs, &res);
fail_if(ret != EOK, "Could not get user attributes.");
fail_if(res->count != 1, "Invalid number of entries, expected 1, got %d",
@@ -1413,11 +1441,13 @@ START_TEST (test_sysdb_add_group_member)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", _i, TEST_DOM_NAME);
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
+
data->uid = _i - 1000; /* the UID of user to add */
+ data->username = test_asprintf_fqname(data, test_ctx->domain,
+ "testuser%d", data->uid);
+ fail_if(data->username == NULL);
ret = test_add_group_member(data);
@@ -1429,8 +1459,8 @@ END_TEST
START_TEST (test_sysdb_initgroups)
{
struct sysdb_test_ctx *test_ctx;
+ struct test_data *data;
int ret;
- const char *username;
struct ldb_result *res;
struct ldb_message *user;
struct ldb_message *group;
@@ -1444,11 +1474,13 @@ START_TEST (test_sysdb_initgroups)
return;
}
- username = talloc_asprintf(test_ctx, "testuser%d", _i);
+ data = test_data_new_user(test_ctx, _i);
+ fail_if(data == NULL, "OOM\n");
ret = sysdb_initgroups(test_ctx,
test_ctx->domain,
- username, &res);
+ data->username,
+ &res);
fail_if(ret != EOK, "sysdb_initgroups failed\n");
/* result should contain 2 messages - user and his group */
@@ -1464,14 +1496,15 @@ START_TEST (test_sysdb_initgroups)
uid, _i);
fail_unless(strcmp(ldb_msg_find_attr_as_string(user, SYSDB_NAME, NULL),
- username) == 0,
+ data->username) == 0,
"Wrong username\n");
-
gid = ldb_msg_find_attr_as_uint(group, SYSDB_GIDNUM, 0);
fail_unless(gid == _i + 1000,
"Did not find the expected GID (found %d expected %d)",
gid, _i);
+
+ talloc_free(test_ctx);
}
END_TEST
@@ -1488,12 +1521,13 @@ START_TEST (test_sysdb_remove_group_member)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", _i,
- TEST_DOM_NAME);
- data->uid = _i - 1000; /* the UID of user to add */
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
+
+ data->uid = _i - 1000; /* the UID of user to remove */
+ data->username = test_asprintf_fqname(data, test_ctx->domain,
+ "testuser%d", data->uid);
+ fail_if(data->username == NULL);
ret = test_remove_group_member(data);
fail_if(ret != EOK, "Remove group member failed: %d", ret);
@@ -1515,12 +1549,11 @@ START_TEST (test_sysdb_remove_nonexistent_user)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new(test_ctx);
+ fail_if(data == NULL);
data->uid = 12345;
- ret = test_remove_nonexistent_user(data);
+ ret = test_remove_user_by_uid(data);
fail_if(ret != ENOENT, "Unexpected return code %d, expected ENOENT", ret);
talloc_free(test_ctx);
@@ -1540,12 +1573,11 @@ START_TEST (test_sysdb_remove_nonexistent_group)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->uid = 12345;
+ data = test_data_new(test_ctx);
+ fail_if(data == NULL);
+ data->gid = 12345;
- ret = test_remove_nonexistent_group(data);
+ ret = test_remove_group_by_gid(data);
fail_if(ret != ENOENT, "Unexpected return code %d, expected ENOENT", ret);
talloc_free(test_ctx);
@@ -1581,9 +1613,9 @@ START_TEST (test_sysdb_store_custom)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new(test_ctx);
+ fail_if(data == NULL);
+
data->uid = _i;
data->attrs = sysdb_new_attrs(test_ctx);
if (ret != EOK) {
@@ -1620,10 +1652,9 @@ START_TEST (test_sysdb_search_custom_by_name)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- fail_unless(data != NULL, "talloc_zero failed");
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new(test_ctx);
+ fail_if(data == NULL);
+
data->attrlist = talloc_array(test_ctx, const char *, 2);
fail_unless(data->attrlist != NULL, "talloc_array failed");
data->attrlist[0] = TEST_ATTR_NAME;
@@ -1674,9 +1705,9 @@ START_TEST (test_sysdb_update_custom)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new(test_ctx);
+ fail_if(data == NULL);
+
data->uid = 29010;
data->attrs = sysdb_new_attrs(test_ctx);
if (ret != EOK) {
@@ -1722,10 +1753,9 @@ START_TEST (test_sysdb_search_custom_update)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- fail_unless(data != NULL, "talloc_zero failed");
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new(test_ctx);
+ fail_if(data == NULL);
+
data->attrlist = talloc_array(test_ctx, const char *, 3);
fail_unless(data->attrlist != NULL, "talloc_array failed");
data->attrlist[0] = TEST_ATTR_NAME;
@@ -1791,10 +1821,9 @@ START_TEST (test_sysdb_search_custom)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- fail_unless(data != NULL, "talloc_zero failed");
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new(test_ctx);
+ fail_if(data == NULL);
+
data->attrlist = talloc_array(test_ctx, const char *, 3);
fail_unless(data->attrlist != NULL, "talloc_array failed");
data->attrlist[0] = TEST_ATTR_NAME;
@@ -1830,9 +1859,8 @@ START_TEST (test_sysdb_delete_custom)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new(test_ctx);
+ fail_if(data == NULL);
ret = test_delete_custom(data);
@@ -1851,14 +1879,12 @@ START_TEST (test_sysdb_cache_password)
ret = setup_sysdb_tests(&test_ctx);
fail_unless(ret == EOK, "Could not set up the test");
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->username = talloc_asprintf(data, "testuser%d", _i);
+ data = test_data_new_user(test_ctx, _i);
+ fail_if(data == NULL, "OOM\n");
- ret = sysdb_cache_password(test_ctx->domain, data->username,
+ ret = sysdb_cache_password(test_ctx->domain,
+ data->username,
data->username);
-
fail_unless(ret == EOK, "sysdb_cache_password request failed [%d].", ret);
talloc_free(test_ctx);
@@ -1879,10 +1905,8 @@ START_TEST (test_sysdb_cache_password_ex)
ret = setup_sysdb_tests(&test_ctx);
fail_unless(ret == EOK, "Could not set up the test");
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->username = talloc_asprintf(data, "testuser%d", _i);
+ data = test_data_new_user(test_ctx, _i);
+ fail_if(data == NULL, "OOM\n");
ret = sysdb_get_user_attr(test_ctx, test_ctx->domain, data->username,
attrs, &res);
@@ -1916,7 +1940,7 @@ START_TEST (test_sysdb_cache_password_ex)
}
END_TEST
-static void cached_authentication_without_expiration(const char *username,
+static void cached_authentication_without_expiration(uid_t uid,
const char *password,
int expected_result)
{
@@ -1932,10 +1956,8 @@ static void cached_authentication_without_expiration(const char *username,
ret = setup_sysdb_tests(&test_ctx);
fail_unless(ret == EOK, "Could not set up the test");
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->username = username;
+ data = test_data_new_user(test_ctx, uid);
+ fail_if(data == NULL);
val[0] = "0";
ret = confdb_add_param(test_ctx->confdb, true, CONFDB_PAM_CONF_ENTRY,
@@ -1947,7 +1969,8 @@ static void cached_authentication_without_expiration(const char *username,
}
ret = sysdb_cache_auth(test_ctx->domain, data->username,
- password, test_ctx->confdb, false,
+ password ? password : data->username,
+ test_ctx->confdb, false,
&expire_date, &delayed_until);
fail_unless(ret == expected_result, "sysdb_cache_auth request does not "
@@ -1963,7 +1986,7 @@ static void cached_authentication_without_expiration(const char *username,
talloc_free(test_ctx);
}
-static void cached_authentication_with_expiration(const char *username,
+static void cached_authentication_with_expiration(uid_t uid,
const char *password,
int expected_result)
{
@@ -1981,10 +2004,8 @@ static void cached_authentication_with_expiration(const char *username,
ret = setup_sysdb_tests(&test_ctx);
fail_unless(ret == EOK, "Could not set up the test");
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->username = username;
+ data = test_data_new_user(test_ctx, uid);
+ fail_if(data == NULL);
val[0] = "1";
ret = confdb_add_param(test_ctx->confdb, true, CONFDB_PAM_CONF_ENTRY,
@@ -2002,15 +2023,16 @@ static void cached_authentication_with_expiration(const char *username,
data->attrs = sysdb_new_attrs(data);
ret = sysdb_attrs_add_time_t(data->attrs, SYSDB_LAST_ONLINE_AUTH, now);
- fail_unless(ret == EOK, "Could not mdd attribute "SYSDB_LAST_ONLINE_AUTH
- ": %s", data->username);
+ fail_unless(ret == EOK, "Could not add attribute "SYSDB_LAST_ONLINE_AUTH
+ ": %s", sss_strerror(ret));
ret = sysdb_set_user_attr(data->ctx->domain, data->username, data->attrs,
SYSDB_MOD_REP);
fail_unless(ret == EOK, "Could not modify user %s", data->username);
ret = sysdb_cache_auth(data->ctx->domain, data->username,
- password, test_ctx->confdb, false,
+ password ? password : data->username,
+ test_ctx->confdb, false,
&expire_date, &delayed_until);
fail_unless(ret == expected_result,
@@ -2029,62 +2051,22 @@ static void cached_authentication_with_expiration(const char *username,
START_TEST (test_sysdb_cached_authentication_missing_password)
{
- TALLOC_CTX *tmp_ctx;
- char *username;
-
- tmp_ctx = talloc_new(NULL);
- fail_unless(tmp_ctx != NULL, "talloc_new failed.");
-
- username = talloc_asprintf(tmp_ctx, "testuser%d", _i);
- fail_unless(username != NULL, "talloc_asprintf failed.");
-
- cached_authentication_without_expiration(username, "abc",
- ERR_NO_CACHED_CREDS);
- cached_authentication_with_expiration(username, "abc",
- ERR_NO_CACHED_CREDS);
-
- talloc_free(tmp_ctx);
-
+ cached_authentication_without_expiration(_i, "abc", ERR_NO_CACHED_CREDS);
+ cached_authentication_with_expiration(_i, "abc", ERR_NO_CACHED_CREDS);
}
END_TEST
START_TEST (test_sysdb_cached_authentication_wrong_password)
{
- TALLOC_CTX *tmp_ctx;
- char *username;
-
- tmp_ctx = talloc_new(NULL);
- fail_unless(tmp_ctx != NULL, "talloc_new failed.");
-
- username = talloc_asprintf(tmp_ctx, "testuser%d", _i);
- fail_unless(username != NULL, "talloc_asprintf failed.");
-
- cached_authentication_without_expiration(username, "abc",
- ERR_AUTH_FAILED);
- cached_authentication_with_expiration(username, "abc",
- ERR_AUTH_FAILED);
-
- talloc_free(tmp_ctx);
-
+ cached_authentication_without_expiration(_i, "abc", ERR_AUTH_FAILED);
+ cached_authentication_with_expiration(_i, "abc", ERR_AUTH_FAILED);
}
END_TEST
START_TEST (test_sysdb_cached_authentication)
{
- TALLOC_CTX *tmp_ctx;
- char *username;
-
- tmp_ctx = talloc_new(NULL);
- fail_unless(tmp_ctx != NULL, "talloc_new failed.");
-
- username = talloc_asprintf(tmp_ctx, "testuser%d", _i);
- fail_unless(username != NULL, "talloc_asprintf failed.");
-
- cached_authentication_without_expiration(username, username, EOK);
- cached_authentication_with_expiration(username, username, EOK);
-
- talloc_free(tmp_ctx);
-
+ cached_authentication_without_expiration(_i, NULL, EOK);
+ cached_authentication_with_expiration(_i, NULL, EOK);
}
END_TEST
@@ -2101,12 +2083,13 @@ START_TEST (test_sysdb_prepare_asq_test_user)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", _i,
- TEST_DOM_NAME);
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
+
data->uid = ASQ_TEST_USER_UID;
+ data->username = test_asprintf_fqname(data, test_ctx->domain,
+ "testuser%u", data->uid);
+ fail_if(data->username == NULL);
ret = test_add_group_member(data);
@@ -2133,16 +2116,15 @@ START_TEST (test_sysdb_asq_search)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new_user(test_ctx, ASQ_TEST_USER_UID);
+ fail_if(data == NULL);
+
data->attrlist = talloc_array(data, const char *, 2);
fail_unless(data->attrlist != NULL, "talloc_array failed");
-
data->attrlist[0] = "gidNumber";
data->attrlist[1] = NULL;
- user_dn = sysdb_user_dn(data, data->ctx->domain, ASQ_TEST_USER);
+ user_dn = sysdb_user_dn(data, data->ctx->domain, data->username);
fail_unless(user_dn != NULL, "sysdb_user_dn failed");
ret = sysdb_asq_search(data, test_ctx->domain,
@@ -2192,12 +2174,11 @@ START_TEST (test_sysdb_search_all_users)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new(test_ctx);
+ fail_unless(data != NULL);
+
data->attrlist = talloc_array(data, const char *, 2);
fail_unless(data->attrlist != NULL, "talloc_array failed");
-
data->attrlist[0] = "uidNumber";
data->attrlist[1] = NULL;
@@ -2245,9 +2226,8 @@ START_TEST (test_sysdb_delete_recursive)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new(test_ctx);
+ fail_unless(data != NULL);
ret = test_delete_recursive(data);
@@ -2304,7 +2284,6 @@ START_TEST (test_sysdb_memberof_store_group)
struct sysdb_test_ctx *test_ctx;
struct test_data *data;
int ret;
- char *member_name;
/* Setup */
ret = setup_sysdb_tests(&test_ctx);
@@ -2313,20 +2292,18 @@ START_TEST (test_sysdb_memberof_store_group)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = MBO_GROUP_BASE + _i;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", data->gid,
- TEST_DOM_NAME);
+ data = test_data_new_group(test_ctx, MBO_GROUP_BASE + _i);
+ fail_if(data == NULL);
if (_i == 0) {
data->attrlist = NULL;
} else {
data->attrlist = talloc_array(data, const char *, 2);
fail_unless(data->attrlist != NULL, "talloc_array failed.");
- data->attrlist[0] = talloc_asprintf(data, "testgroup%d", data->gid - 1);
+ data->attrlist[0] = test_asprintf_fqname(data, data->ctx->domain,
+ "testgroup%d", data->gid - 1);
data->attrlist[1] = NULL;
+ fail_if(data->attrlist[0] == NULL);
}
ret = test_memberof_store_group(data);
@@ -2349,27 +2326,26 @@ START_TEST (test_sysdb_memberof_store_group_with_ghosts)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i;
- data->groupname = talloc_asprintf(data, "testgroup%d", data->gid);
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
if (_i == 0 || _i == MBO_GROUP_BASE) {
data->attrlist = NULL;
} else {
data->attrlist = talloc_array(data, const char *, 2);
fail_unless(data->attrlist != NULL, "talloc_array failed.");
- data->attrlist[0] = talloc_asprintf(data, "testgroup%d", data->gid - 1);
+ data->attrlist[0] = test_asprintf_fqname(data, data->ctx->domain,
+ "testgroup%d", data->gid - 1);
data->attrlist[1] = NULL;
+ fail_if(data->attrlist[0] == NULL);
}
- data->memberlist = talloc_array(data, char *, 2);
- fail_unless(data->memberlist != NULL, "talloc_array failed.");
- member_name = talloc_asprintf(data, "testuser%d", data->gid);
- data->memberlist[0] = sss_create_internal_fqname(data, member_name,
- test_ctx->domain->name);
- data->memberlist[1] = NULL;
+ data->ghostlist = talloc_array(data, char *, 2);
+ fail_unless(data->ghostlist != NULL, "talloc_array failed.");
+ data->ghostlist[0] = test_asprintf_fqname(data, data->ctx->domain,
+ "testuser%d", data->gid);
+ data->ghostlist[1] = NULL;
+ fail_if(data->ghostlist[0] == NULL);
ret = test_memberof_store_group_with_ghosts(data);
@@ -2391,27 +2367,26 @@ START_TEST (test_sysdb_memberof_store_group_with_double_ghosts)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", data->gid,
- TEST_DOM_NAME);
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
if (_i == 0) {
data->attrlist = NULL;
} else {
data->attrlist = talloc_array(data, const char *, 2);
fail_unless(data->attrlist != NULL, "talloc_array failed.");
- data->attrlist[0] = talloc_asprintf(data, "testgroup%d", data->gid - 1);
+ data->attrlist[0] = test_asprintf_fqname(data, data->ctx->domain,
+ "testgroup%d", data->gid - 1);
data->attrlist[1] = NULL;
}
- data->memberlist = talloc_array(data, char *, 3);
- fail_unless(data->memberlist != NULL, "talloc_array failed.");
- data->memberlist[0] = talloc_asprintf(data, "testusera%d", data->gid);
- data->memberlist[1] = talloc_asprintf(data, "testuserb%d", data->gid);
- data->memberlist[2] = NULL;
+ data->ghostlist = talloc_array(data, char *, 3);
+ fail_unless(data->ghostlist != NULL, "talloc_array failed.");
+ data->ghostlist[0] = test_asprintf_fqname(data, data->ctx->domain,
+ "testusera%d", data->gid);
+ data->ghostlist[1] = test_asprintf_fqname(data, data->ctx->domain,
+ "testuserb%d", data->gid);
+ data->ghostlist[2] = NULL;
ret = test_memberof_store_group_with_ghosts(data);
@@ -2437,21 +2412,13 @@ START_TEST (test_sysdb_memberof_mod_add)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", data->gid,
- TEST_DOM_NAME);
-
- data->attrs = sysdb_new_attrs(data);
- if (ret != EOK) {
- fail("Could not create the changeset");
- return;
- }
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
- ghostname = talloc_asprintf(data, "testghost%d", _i);
+ ghostname = test_asprintf_fqname(data, test_ctx->domain,
+ "testghost%d", _i);
fail_unless(ghostname != NULL, "Out of memory\n");
+
ret = sysdb_attrs_steal_string(data->attrs, SYSDB_GHOST, ghostname);
fail_unless(ret == EOK, "Cannot add attr\n");
@@ -2483,8 +2450,8 @@ START_TEST (test_sysdb_memberof_mod_add)
}
/* Perform the add operation */
- ret = sysdb_set_group_attr(test_ctx->domain,
- data->groupname, data->attrs, SYSDB_MOD_ADD);
+ ret = sysdb_set_group_attr(test_ctx->domain,
+ data->groupname, data->attrs, SYSDB_MOD_ADD);
fail_unless(ret == EOK, "Cannot set group attrs\n");
/* Before the delete, all groups with gid >= _i have the testuser%_i
@@ -2527,25 +2494,18 @@ START_TEST (test_sysdb_memberof_mod_replace)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", data->gid,
- TEST_DOM_NAME);
-
- data->attrs = sysdb_new_attrs(data);
- if (ret != EOK) {
- fail("Could not create the changeset");
- return;
- }
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
/* The test replaces the testuser%i attribute with testghost%i */
- ghostname_del = talloc_asprintf(data, "testuser%d", _i);
+ ghostname_del = test_asprintf_fqname(data, test_ctx->domain,
+ "testuser%d", _i);
fail_unless(ghostname_del != NULL, "Out of memory\n");
- ghostname_add = talloc_asprintf(data, "testghost%d", _i);
+ ghostname_add = test_asprintf_fqname(data, test_ctx->domain,
+ "testuser%d", _i);
fail_unless(ghostname_add != NULL, "Out of memory\n");
+
ret = sysdb_attrs_steal_string(data->attrs, SYSDB_GHOST, ghostname_add);
fail_unless(ret == EOK, "Cannot add attr\n");
@@ -2621,29 +2581,22 @@ START_TEST (test_sysdb_memberof_mod_replace_keep)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = MBO_GROUP_BASE + 10 - _i;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", data->gid,
- TEST_DOM_NAME);
-
- data->attrs = sysdb_new_attrs(data);
- if (ret != EOK) {
- fail("Could not create the changeset");
- return;
- }
+ data = test_data_new_group(test_ctx, MBO_GROUP_BASE + 10 - _i);
+ fail_if(data == NULL);
/* The test replaces the attributes (testusera$gid, testuserb$gid) with
* just testusera$gid. The result should be not only testusera, but also
* all ghost users inherited from child groups
*/
- ghostname_rep = talloc_asprintf(data, "testusera%d", data->gid);
+ ghostname_rep = test_asprintf_fqname(data, data->ctx->domain,
+ "testusera%d", data->gid);
fail_unless(ghostname_rep != NULL, "Out of memory\n");
+
ret = sysdb_attrs_steal_string(data->attrs, SYSDB_GHOST, ghostname_rep);
fail_unless(ret == EOK, "Cannot add attr\n");
- ghostname_del = talloc_asprintf(data, "testuserb%d", data->gid);
+ ghostname_del = test_asprintf_fqname(data, data->ctx->domain,
+ "testuserb%d", data->gid);
fail_unless(ghostname_del != NULL, "Out of memory\n");
data->attrlist = talloc_array(data, const char *, 2);
@@ -2677,7 +2630,10 @@ START_TEST (test_sysdb_memberof_mod_replace_keep)
/* inherited users must be there */
for (iteruid = MBO_GROUP_BASE ; iteruid < itergid ; iteruid++) {
- ghostname_check = talloc_asprintf(data, "testusera%d", iteruid);
+ ghostname_check = test_asprintf_fqname(data, data->ctx->domain,
+ "testusera%d", iteruid);
+ fail_unless(ghostname_rep != NULL, "Out of memory\n");
+
gv.data = (uint8_t *) ghostname_check;
gv.length = strlen(ghostname_check);
@@ -2687,7 +2643,8 @@ START_TEST (test_sysdb_memberof_mod_replace_keep)
if (iteruid < data->gid) {
/* Also check the B user if it hasn't been deleted yet */
- ghostname_check = talloc_asprintf(data, "testuserb%d", iteruid);
+ ghostname_check = test_asprintf_fqname(data, data->ctx->domain,
+ "testuserb%d", iteruid);
gv.data = (uint8_t *) ghostname_check;
gv.length = strlen(ghostname_check);
@@ -2700,8 +2657,8 @@ START_TEST (test_sysdb_memberof_mod_replace_keep)
}
/* Perform the replace operation */
- ret = sysdb_set_group_attr(test_ctx->domain,
- data->groupname, data->attrs, SYSDB_MOD_REP);
+ ret = sysdb_set_group_attr(test_ctx->domain,
+ data->groupname, data->attrs, SYSDB_MOD_REP);
fail_unless(ret == EOK, "Cannot set group attrs\n");
/* After the replace, testusera should still be there, but we also need
@@ -2732,7 +2689,8 @@ START_TEST (test_sysdb_memberof_mod_replace_keep)
/* inherited users must still be there */
for (iteruid = MBO_GROUP_BASE ; iteruid < itergid ; iteruid++) {
- ghostname_check = talloc_asprintf(data, "testusera%d", iteruid);
+ ghostname_check = test_asprintf_fqname(data, data->ctx->domain,
+ "testusera%d", iteruid);
gv.data = (uint8_t *) ghostname_check;
gv.length = strlen(ghostname_check);
@@ -2742,7 +2700,8 @@ START_TEST (test_sysdb_memberof_mod_replace_keep)
if (iteruid < data->gid) {
/* Also check the B user if it hasn't been deleted yet */
- ghostname_check = talloc_asprintf(data, "testuserb%d", iteruid);
+ ghostname_check = test_asprintf_fqname(data, data->ctx->domain,
+ "testuserb%d", iteruid);
gv.data = (uint8_t *) ghostname_check;
gv.length = strlen(ghostname_check);
@@ -2763,7 +2722,6 @@ START_TEST (test_sysdb_memberof_close_loop)
struct sysdb_test_ctx *test_ctx;
struct test_data *data;
int ret;
- char *shortname;
/* Setup */
ret = setup_sysdb_tests(&test_ctx);
@@ -2772,16 +2730,14 @@ START_TEST (test_sysdb_memberof_close_loop)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = MBO_GROUP_BASE;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", data->gid,
- TEST_DOM_NAME);
+ data = test_data_new_group(test_ctx, MBO_GROUP_BASE);
+ fail_if(data == NULL, "OOM");
data->attrlist = talloc_array(data, const char *, 2);
fail_unless(data->attrlist != NULL, "talloc_array failed.");
- data->attrlist[0] = talloc_asprintf(data, "testgroup%d", data->gid + 9);
+ data->attrlist[0] = test_asprintf_fqname(data, test_ctx->domain,
+ "testgroup%d", data->gid + 9);
+ fail_unless(data->attrlist[0], "talloc_array failed.");
data->attrlist[1] = NULL;
ret = test_memberof_store_group(data);
@@ -2804,17 +2760,10 @@ START_TEST (test_sysdb_memberof_store_user)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->uid = MBO_USER_BASE + _i;
- data->gid = 0; /* MPG domain */
- shortname = talloc_asprintf(data, "testuser%d", data->uid);
- data->username = sss_create_internal_fqname(data, shortname,
- data->ctx->domain->name);
- talloc_free(shortname);
- ret = test_store_user(data);
+ data = test_data_new_user(test_ctx, MBO_USER_BASE + _i);
+ fail_if(data == NULL);
+ ret = test_store_user(data);
fail_if(ret != EOK, "Could not store user %s", data->username);
talloc_free(test_ctx);
}
@@ -2833,16 +2782,15 @@ START_TEST (test_sysdb_memberof_add_group_member)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s",
- _i + MBO_GROUP_BASE,
- TEST_DOM_NAME);
+ data = test_data_new_group(test_ctx, MBO_GROUP_BASE + _i);
+ fail_if(data == NULL);
+
data->uid = MBO_USER_BASE + _i;
+ data->username = test_asprintf_fqname(data, test_ctx->domain,
+ "testuser%d", data->uid);
+ fail_if(data->username == NULL);
ret = test_add_group_member(data);
-
fail_if(ret != EOK, "Could not modify group %s", data->groupname);
talloc_free(test_ctx);
@@ -2862,10 +2810,8 @@ START_TEST (test_sysdb_memberof_check_memberuid_without_group_5)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i + MBO_GROUP_BASE;
+ data = test_data_new_group(test_ctx, MBO_GROUP_BASE + _i);
+ fail_if(data == NULL);
data->attrlist = talloc_array(data, const char *, 2);
fail_unless(data->attrlist != NULL, "tallo_array failed.");
@@ -2873,7 +2819,7 @@ START_TEST (test_sysdb_memberof_check_memberuid_without_group_5)
data->attrlist[1] = NULL;
ret = sysdb_search_group_by_gid(data, test_ctx->domain,
- _i + MBO_GROUP_BASE, data->attrlist,
+ data->gid, data->attrlist,
&data->msg);
if (_i == 5) {
fail_unless(ret == ENOENT,
@@ -2913,18 +2859,16 @@ START_TEST (test_sysdb_memberof_check_memberuid)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i + MBO_GROUP_BASE;
+ data = test_data_new_group(test_ctx, MBO_GROUP_BASE + _i);
+ fail_if(data == NULL);
data->attrlist = talloc_array(data, const char *, 2);
- fail_unless(data->attrlist != NULL, "tallo_array failed.");
+ fail_unless(data->attrlist != NULL, "talloc_array failed.");
data->attrlist[0] = "memberuid";
data->attrlist[1] = NULL;
ret = sysdb_search_group_by_gid(data, test_ctx->domain,
- _i + MBO_GROUP_BASE, data->attrlist,
+ data->gid, data->attrlist,
&data->msg);
fail_if(ret != EOK, "Could not check group %d", data->gid);
@@ -2955,18 +2899,16 @@ START_TEST (test_sysdb_memberof_check_memberuid_loop)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i + MBO_GROUP_BASE;
+ data = test_data_new_group(test_ctx, _i + MBO_GROUP_BASE);
+ fail_if(data == NULL);
data->attrlist = talloc_array(data, const char *, 2);
- fail_unless(data->attrlist != NULL, "tallo_array failed.");
+ fail_unless(data->attrlist != NULL, "talloc_array failed.");
data->attrlist[0] = "memberuid";
data->attrlist[1] = NULL;
ret = sysdb_search_group_by_gid(data, test_ctx->domain,
- _i + MBO_GROUP_BASE, data->attrlist,
+ data->gid, data->attrlist,
&data->msg);
fail_if(ret != EOK, "Could not check group %d", data->gid);
@@ -2997,10 +2939,8 @@ START_TEST (test_sysdb_memberof_check_memberuid_loop_without_group_5)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i + MBO_GROUP_BASE;
+ data = test_data_new_group(test_ctx, _i + MBO_GROUP_BASE);
+ fail_if(data == NULL);
data->attrlist = talloc_array(data, const char *, 2);
fail_unless(data->attrlist != NULL, "tallo_array failed.");
@@ -3008,7 +2948,7 @@ START_TEST (test_sysdb_memberof_check_memberuid_loop_without_group_5)
data->attrlist[1] = NULL;
ret = sysdb_search_group_by_gid(data, test_ctx->domain,
- _i + MBO_GROUP_BASE, data->attrlist,
+ data->gid, data->attrlist,
&data->msg);
if (_i == 5) {
@@ -3048,10 +2988,8 @@ START_TEST (test_sysdb_memberof_check_nested_ghosts)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i;
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
data->attrlist = talloc_array(data, const char *, 2);
fail_unless(data->attrlist != NULL, "talloc_array failed.");
@@ -3066,7 +3004,7 @@ START_TEST (test_sysdb_memberof_check_nested_ghosts)
"Wrong attribute name");
fail_unless(data->msg->elements[0].num_values == _i - MBO_GROUP_BASE + 1,
"Wrong number of attribute values, expected [%d] got [%d]",
- _i + 1, data->msg->elements[0].num_values);
+ _i - MBO_GROUP_BASE + 1, data->msg->elements[0].num_values);
talloc_free(test_ctx);
}
@@ -3085,10 +3023,8 @@ START_TEST (test_sysdb_memberof_check_nested_double_ghosts)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i;
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
data->attrlist = talloc_array(data, const char *, 2);
fail_unless(data->attrlist != NULL, "talloc_array failed.");
@@ -3124,10 +3060,8 @@ START_TEST (test_sysdb_memberof_remove_child_group_and_check_ghost)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i;
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
delgid = data->gid - 1;
data->attrlist = talloc_array(data, const char *, 2);
@@ -3188,20 +3122,10 @@ START_TEST (test_sysdb_memberof_mod_del)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", data->gid,
- TEST_DOM_NAME);
-
- data->attrs = sysdb_new_attrs(data);
- if (ret != EOK) {
- fail("Could not create the changeset");
- return;
- }
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
- ghostname = talloc_asprintf(data, "testuser%d", _i);
+ ghostname = test_asprintf_fqname(data, test_ctx->domain, "testuser%d", _i);
fail_unless(ghostname != NULL, "Out of memory\n");
ret = sysdb_attrs_steal_string(data->attrs, SYSDB_GHOST, ghostname);
fail_unless(ret == EOK, "Cannot add attr\n");
@@ -3277,10 +3201,8 @@ START_TEST (test_sysdb_memberof_check_ghost)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i;
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
data->attrlist = talloc_array(data, const char *, 2);
fail_unless(data->attrlist != NULL, "talloc_array failed.");
@@ -3314,7 +3236,7 @@ START_TEST (test_sysdb_memberof_check_ghost)
_i + 1, data->msg->elements[0].num_values);
for (j = MBO_GROUP_BASE; j < _i; j++) {
- expected = talloc_asprintf(data, "testghost%d", j);
+ expected = test_asprintf_fqname(data, test_ctx->domain, "testghost%d", j);
fail_if(expected == NULL, "OOM\n");
fail_unless(strcmp(expected,
(const char *) data->msg->elements[0].values[j-MBO_GROUP_BASE].data) == 0);
@@ -3330,7 +3252,6 @@ START_TEST (test_sysdb_memberof_convert_to_real_users)
struct sysdb_test_ctx *test_ctx;
struct test_data *data;
int ret;
- char *shortname;
/* Setup */
ret = setup_sysdb_tests(&test_ctx);
@@ -3339,15 +3260,12 @@ START_TEST (test_sysdb_memberof_convert_to_real_users)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->uid = _i * 2;
- data->gid = _i * 2;
- shortname = talloc_asprintf(data, "testghost%d", _i);
- data->username = sss_create_internal_fqname(data, shortname,
- data->ctx->domain->name);
- talloc_free(shortname);
+ data = test_data_new_user(test_ctx, _i * 2);
+ fail_if(data == NULL);
+ data->username = test_asprintf_fqname(data, test_ctx->domain,
+ "testghost%d", _i);
+ fail_if(data->username == NULL);
+
ret = test_store_user(data);
fail_if(ret != EOK, "Cannot add user %s\n", data->username);
}
@@ -3371,10 +3289,8 @@ START_TEST (test_sysdb_memberof_check_convert)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i;
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
data->attrlist = talloc_array(data, const char *, 3);
fail_unless(data->attrlist != NULL, "talloc_array failed.");
@@ -3396,7 +3312,6 @@ START_TEST (test_sysdb_memberof_check_convert)
return;
}
-
members = ldb_msg_find_element(data->msg, SYSDB_MEMBER);
exp_mem = _i - MBO_GROUP_BASE;
if (exp_mem > NUM_GHOSTS/2) {
@@ -3437,25 +3352,18 @@ START_TEST (test_sysdb_memberof_ghost_replace)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", data->gid,
- TEST_DOM_NAME);
-
- data->attrs = sysdb_new_attrs(data);
- if (ret != EOK) {
- fail("Could not create the changeset");
- return;
- }
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
/* The test replaces the testghost%i attribute with testuser%i */
- ghostname_del = talloc_asprintf(data, "testghost%d", _i - 1);
+ ghostname_del = test_asprintf_fqname(data, test_ctx->domain,
+ "testghost%d", data->gid - 1);
fail_unless(ghostname_del != NULL, "Out of memory\n");
- ghostname_add = talloc_asprintf(data, "testuser%d", _i - 1);
+ ghostname_add = test_asprintf_fqname(data, test_ctx->domain,
+ "testuser%d", data->gid - 1);
fail_unless(ghostname_add != NULL, "Out of memory\n");
+
ret = sysdb_attrs_steal_string(data->attrs, SYSDB_GHOST, ghostname_add);
fail_unless(ret == EOK, "Cannot add attr\n");
@@ -3518,25 +3426,18 @@ START_TEST (test_sysdb_memberof_ghost_replace_noop)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->gid = _i;
- data->groupname = talloc_asprintf(data, "testgroup%d@%s", data->gid,
- TEST_DOM_NAME);
-
- data->attrs = sysdb_new_attrs(data);
- if (ret != EOK) {
- fail("Could not create the changeset");
- return;
- }
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
/* The test replaces the testghost%i attribute with testuser%i */
- ghostname_del = talloc_asprintf(data, "testuser%d", _i - 1);
+ ghostname_del = test_asprintf_fqname(data, test_ctx->domain,
+ "testuser%d", data->gid - 1);
fail_unless(ghostname_del != NULL, "Out of memory\n");
- ghostname_add = talloc_asprintf(data, "testuser%d", _i - 1);
+ ghostname_add = test_asprintf_fqname(data, test_ctx->domain,
+ "testuser%d", data->gid - 1);
fail_unless(ghostname_add != NULL, "Out of memory\n");
+
ret = sysdb_attrs_steal_string(data->attrs, SYSDB_GHOST, ghostname_add);
fail_unless(ret == EOK, "Cannot add attr\n");
@@ -3595,10 +3496,8 @@ START_TEST (test_sysdb_memberof_user_cleanup)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
- data->uid = _i * 2;
+ data = test_data_new_user(test_ctx, _i * 2);
+ fail_if(data == NULL);
ret = test_remove_user_by_uid(data);
@@ -3850,8 +3749,8 @@ START_TEST(test_user_rename)
ret = setup_sysdb_tests(&test_ctx);
fail_unless(ret == EOK, "Could not set up the test");
- fromname = sss_create_internal_fqname(&test_ctx, "fromname", test_ctx->domain->name);
- toname = sss_create_internal_fqname(&test_ctx, "toname", test_ctx->domain->name);
+ fromname = sss_create_internal_fqname(test_ctx, "fromname", test_ctx->domain->name);
+ toname = sss_create_internal_fqname(test_ctx, "toname", test_ctx->domain->name);
fail_if(fromname == NULL, "sss_create_internal_fqname failed");
fail_if(toname == NULL, "sss_create_internal_fqname failed");
@@ -3921,7 +3820,10 @@ START_TEST (test_sysdb_update_members)
char **del_groups;
const char *user = "testuser27000";
char *user_fqname;
+ const char *group_fqname;
+ const char *check_fqname;
errno_t ret;
+ struct ldb_result *res;
/* Setup */
ret = setup_sysdb_tests(&test_ctx);
@@ -3931,18 +3833,38 @@ START_TEST (test_sysdb_update_members)
test_ctx->domain->name);
fail_if(user_fqname == NULL, "user_fqname returned NULL");
+ ret = sysdb_initgroups(test_ctx, test_ctx->domain, user_fqname, &res);
+ fail_if(ret != EOK);
+ fail_unless(res->count == 1); /* only the user itself */
+
/* Add a user to two groups */
add_groups = talloc_array(test_ctx, char *, 3);
add_groups[0] = sss_create_internal_fqname(add_groups, "testgroup28001",
test_ctx->domain->name);
+ fail_if(add_groups[0] == NULL);
add_groups[1] = sss_create_internal_fqname(add_groups, "testgroup28002",
test_ctx->domain->name);
+ fail_if(add_groups[1] == NULL);
add_groups[2] = NULL;
+ /* For later check */
+ group_fqname = talloc_strdup(test_ctx, add_groups[1]);
+ fail_if(group_fqname == NULL);
+
ret = sysdb_update_members(test_ctx->domain, user_fqname,
SYSDB_MEMBER_USER,
(const char *const *)add_groups, NULL);
fail_unless(ret == EOK, "Could not add groups");
+
+ ret = sysdb_initgroups(test_ctx, test_ctx->domain, user_fqname, &res);
+ fail_if(ret != EOK);
+ fail_unless(res->count == 3);
+
+ check_fqname = ldb_msg_find_attr_as_string(res->msgs[1], SYSDB_NAME, NULL);
+ ck_assert_str_eq(check_fqname, add_groups[0]);
+ check_fqname = ldb_msg_find_attr_as_string(res->msgs[2], SYSDB_NAME, NULL);
+ ck_assert_str_eq(check_fqname, add_groups[1]);
+
talloc_zfree(add_groups);
/* Remove a user from one group and add to another */
@@ -3959,9 +3881,23 @@ START_TEST (test_sysdb_update_members)
(const char *const *)add_groups,
(const char *const *)del_groups);
fail_unless(ret == EOK, "Group replace failed");
+
+ ret = sysdb_initgroups(test_ctx, test_ctx->domain, user_fqname, &res);
+ fail_if(ret != EOK);
+ fail_unless(res->count == 3);
+
+ check_fqname = ldb_msg_find_attr_as_string(res->msgs[1], SYSDB_NAME, NULL);
+ ck_assert_str_eq(check_fqname, group_fqname);
+ check_fqname = ldb_msg_find_attr_as_string(res->msgs[2], SYSDB_NAME, NULL);
+ ck_assert_str_eq(check_fqname, add_groups[0]);
+
talloc_zfree(add_groups);
talloc_zfree(del_groups);
+ ret = sysdb_initgroups(test_ctx, test_ctx->domain, user_fqname, &res);
+ fail_if(ret != EOK);
+ fail_unless(res->count == 3);
+
/* Remove a user from two groups */
del_groups = talloc_array(test_ctx, char *, 3);
del_groups[0] = sss_create_internal_fqname(del_groups, "testgroup28002",
@@ -3974,6 +3910,10 @@ START_TEST (test_sysdb_update_members)
NULL, (const char *const *)del_groups);
fail_unless(ret == EOK, "Could not remove groups");
+ ret = sysdb_initgroups(test_ctx, test_ctx->domain, user_fqname, &res);
+ fail_if(ret != EOK);
+ fail_unless(res->count == 1); /* only the user itself */
+
talloc_zfree(test_ctx);
}
END_TEST
@@ -3982,9 +3922,9 @@ END_TEST
START_TEST (test_sysdb_group_dn_name)
{
struct sysdb_test_ctx *test_ctx;
+ struct test_data *data;
int ret;
struct ldb_dn *group_dn;
- const char *groupname;
char *parsed;
/* Setup */
@@ -3994,18 +3934,17 @@ START_TEST (test_sysdb_group_dn_name)
return;
}
- groupname = talloc_asprintf(test_ctx, "testgroup%d@%s", _i, TEST_DOM_NAME);
- group_dn = sysdb_group_dn(test_ctx, test_ctx->domain, groupname);
- if (!group_dn || !groupname) {
- fail("Out of memory");
- return;
- }
+ data = test_data_new_group(test_ctx, _i);
+ fail_if(data == NULL);
+
+ group_dn = sysdb_group_dn(test_ctx, test_ctx->domain, data->groupname);
+ fail_if(group_dn == NULL, "OOM");
ret = sysdb_group_dn_name(test_ctx->sysdb, test_ctx,
ldb_dn_get_linearized(group_dn), &parsed);
fail_if(ret != EOK, "Cannot get the group name from DN");
- fail_if(strcmp(groupname, parsed) != 0,
+ fail_if(strcmp(data->groupname, parsed) != 0,
"Names don't match (got %s)", parsed);
talloc_free(test_ctx);
}
@@ -4024,9 +3963,8 @@ START_TEST (test_sysdb_add_basic_netgroup)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new(test_ctx);
+ fail_if(data == NULL);
data->uid = _i; /* This is kinda abuse of uid, though */
data->netgrname = talloc_asprintf(data, "testnetgr%d", _i);
@@ -4078,9 +4016,8 @@ START_TEST (test_sysdb_remove_netgroup_entry)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new(test_ctx);
+ fail_if(data == NULL);
data->netgrname = talloc_asprintf(data, "testnetgr%d", _i);
ret = test_remove_netgroup_entry(data);
@@ -4103,9 +4040,8 @@ START_TEST (test_sysdb_remove_netgroup_by_name)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new(test_ctx);
+ fail_if(data == NULL);
data->netgrname = talloc_asprintf(data, "testnetgr%d", _i);
ret = test_remove_netgroup_by_name(data);
@@ -4128,9 +4064,8 @@ START_TEST (test_sysdb_set_netgroup_attr)
return;
}
- data = talloc_zero(test_ctx, struct test_data);
- data->ctx = test_ctx;
- data->ev = test_ctx->ev;
+ data = test_data_new(test_ctx);
+ fail_if(data == NULL);
data->uid = _i; /* This is kinda abuse of uid, though */
data->netgrname = talloc_asprintf(data, "testnetgr%d", _i);
@@ -4368,7 +4303,8 @@ START_TEST(test_SSS_LDB_SEARCH)
struct sysdb_test_ctx *test_ctx;
struct ldb_dn *group_dn, *nonexist_dn;
struct ldb_result *res;
- const char groupname[] = "test_group@"TEST_DOM_NAME;
+ const char *groupname;
+ const char *groupname_neg;
const char *received_group;
/* Setup */
@@ -4380,11 +4316,18 @@ START_TEST(test_SSS_LDB_SEARCH)
check_leaks_push(test_ctx);
+ groupname = test_asprintf_fqname(test_ctx, test_ctx->domain,
+ "test_group");
+ fail_if(groupname == NULL);
+ groupname_neg = test_asprintf_fqname(test_ctx, test_ctx->domain,
+ "non_existing_test_group");
+ fail_if(groupname_neg == NULL);
+
group_dn = sysdb_group_dn(test_ctx, test_ctx->domain, groupname);
fail_if(group_dn == NULL, "sysdb_group_dn failed");
nonexist_dn = sysdb_group_dn(test_ctx, test_ctx->domain,
- "non-existing-group@"TEST_DOM_NAME);
+ groupname_neg);
fail_if(nonexist_dn == NULL, "sysdb_group_dn failed");
/* Add */
@@ -4439,6 +4382,8 @@ START_TEST(test_SSS_LDB_SEARCH)
talloc_zfree(nonexist_dn);
talloc_zfree(group_dn);
+ talloc_zfree(groupname);
+ talloc_zfree(groupname_neg);
fail_unless(check_leaks_pop(test_ctx) == true, "Memory leak");
}
END_TEST
@@ -5062,6 +5007,7 @@ START_TEST (test_sysdb_search_return_ENOENT)
struct ldb_result *res = NULL;
size_t count;
const char *str = NULL;
+ struct test_data *data;
/* Setup */
ret = setup_sysdb_tests(&test_ctx);
@@ -5074,49 +5020,93 @@ START_TEST (test_sysdb_search_return_ENOENT)
ret, strerror(ret));
talloc_zfree(res);
+ data = test_data_new_user(test_ctx, 1234);
+ fail_if(data == NULL);
+ data->sid_str = "S-5-4-3-2-1";
+
/* Search user */
ret = sysdb_search_user_by_name(test_ctx, test_ctx->domain,
- "nonexisting_user@"TEST_DOM_NAME,
+ data->username,
NULL, &msg);
fail_unless(ret == ENOENT, "sysdb_search_user_by_name error [%d][%s].",
ret, strerror(ret));
talloc_zfree(msg);
ret = sysdb_get_real_name(test_ctx, test_ctx->domain,
- "nonexisting_user", &str);
+ data->username, &str);
fail_unless(ret == ENOENT, "sysdb_get_real_name error [%d][%s].",
ret, strerror(ret));
talloc_zfree(str);
ret = sysdb_search_user_by_uid(test_ctx, test_ctx->domain,
- 1234, NULL, &msg);
+ data->uid, NULL, &msg);
fail_unless(ret == ENOENT, "sysdb_search_user_by_uid error [%d][%s].",
ret, strerror(ret));
talloc_zfree(msg);
ret = sysdb_search_user_by_sid_str(test_ctx, test_ctx->domain,
- "S-5-4-3-2-1", NULL, &msg);
+ data->sid_str, NULL, &msg);
fail_unless(ret == ENOENT, "sysdb_search_user_by_sid_str failed with "
"[%d][%s].", ret, strerror(ret));
+ /* General search */
+ user_dn = sysdb_user_dn(test_ctx, test_ctx->domain,
+ data->username);
+ fail_if(user_dn == NULL, "sysdb_user_dn failed");
+
+ ret = sysdb_asq_search(test_ctx, test_ctx->domain,
+ user_dn, NULL, "memberof", NULL,
+ &count, &msgs);
+ fail_unless(ret == ENOENT, "sysdb_asq_search failed: %d, %s",
+ ret, strerror(ret));
+ talloc_zfree(msgs);
+
+ ret = sysdb_search_entry(test_ctx, test_ctx->sysdb,
+ user_dn, LDB_SCOPE_SUBTREE,
+ "objectClass=user", NULL,
+ &count, &msgs);
+ fail_unless(ret == ENOENT, "sysdb_search_entry failed: %d, %s",
+ ret, strerror(ret));
+ talloc_zfree(msgs);
+ talloc_zfree(user_dn);
+
+ /* SSS_LDB_SEARCH */
+ user_dn = sysdb_user_dn(test_ctx, test_ctx->domain,
+ data->username);
+ fail_if(user_dn == NULL, "sysdb_user_dn failed");
+ SSS_LDB_SEARCH(ret, test_ctx->sysdb->ldb, test_ctx, &res, user_dn,
+ LDB_SCOPE_BASE, NULL, "objectClass=user");
+
+ fail_unless(ret == ENOENT, "SSS_LDB_SEARCH failed: %d, %s",
+ ret, strerror(ret));
+
+ talloc_zfree(res);
+ talloc_zfree(user_dn);
+
/* Search group */
+ talloc_zfree(data);
+ data = test_data_new_group(test_ctx, 1234);
+ fail_if(data == NULL);
+ data->sid_str = "S-5-4-3-2-1";
+
ret = sysdb_search_group_by_name(test_ctx, test_ctx->domain,
- "nonexisting_group", NULL, &msg);
+ data->groupname, NULL, &msg);
fail_unless(ret == ENOENT, "sysdb_search_group_by_name error [%d][%s].",
ret, strerror(ret));
talloc_zfree(msg);
ret = sysdb_search_group_by_gid(test_ctx, test_ctx->domain,
- 1234, NULL, &msg);
+ data->gid, NULL, &msg);
fail_unless(ret == ENOENT, "sysdb_search_group_by_gid error [%d][%s].",
ret, strerror(ret));
talloc_zfree(msg);
ret = sysdb_search_group_by_sid_str(test_ctx, test_ctx->domain,
- "S-5-4-3-2-1", NULL, &msg);
+ data->sid_str, NULL, &msg);
fail_unless(ret == ENOENT, "sysdb_search_group_by_sid_str failed with "
"[%d][%s].", ret, strerror(ret));
talloc_zfree(msg);
+ talloc_zfree(data);
/* Search netgroup */
ret = sysdb_search_netgroup_by_name(test_ctx, test_ctx->domain,
@@ -5177,40 +5167,6 @@ START_TEST (test_sysdb_search_return_ENOENT)
ret, strerror(ret));
talloc_zfree(msgs);
- /* General search */
- user_dn = sysdb_user_dn(test_ctx, test_ctx->domain,
- "nonexisting_user@"TEST_DOM_NAME);
- fail_if(user_dn == NULL, "sysdb_user_dn failed");
-
- ret = sysdb_asq_search(test_ctx, test_ctx->domain,
- user_dn, NULL, "memberof", NULL,
- &count, &msgs);
- fail_unless(ret == ENOENT, "sysdb_asq_search failed: %d, %s",
- ret, strerror(ret));
- talloc_zfree(msgs);
-
- ret = sysdb_search_entry(test_ctx, test_ctx->sysdb,
- user_dn, LDB_SCOPE_SUBTREE,
- "objectClass=user", NULL,
- &count, &msgs);
- fail_unless(ret == ENOENT, "sysdb_search_entry failed: %d, %s",
- ret, strerror(ret));
- talloc_zfree(msgs);
- talloc_zfree(user_dn);
-
- /* SSS_LDB_SEARCH */
- user_dn = sysdb_user_dn(test_ctx, test_ctx->domain,
- "nonexisting_user@"TEST_DOM_NAME);
- fail_if(user_dn == NULL, "sysdb_user_dn failed");
- SSS_LDB_SEARCH(ret, test_ctx->sysdb->ldb, test_ctx, &res, user_dn,
- LDB_SCOPE_BASE, NULL, "objectClass=user");
-
- fail_unless(ret == ENOENT, "SSS_LDB_SEARCH failed: %d, %s",
- ret, strerror(ret));
-
- talloc_zfree(res);
- talloc_zfree(user_dn);
-
/* TODO: test sysdb_search_selinux_config */
fail_unless(check_leaks_pop(test_ctx) == true, "Memory leak");
@@ -5252,33 +5208,51 @@ START_TEST(test_sysdb_original_dn_case_insensitive)
{
errno_t ret;
struct sysdb_test_ctx *test_ctx;
+ struct test_data *data;
const char *filter;
struct ldb_dn *base_dn;
const char *no_attrs[] = { NULL };
struct ldb_message **msgs;
size_t num_msgs;
+ char *c;
/* Setup */
ret = setup_sysdb_tests(&test_ctx);
fail_if(ret != EOK, "Could not set up the test");
- ret = sysdb_add_incomplete_group(test_ctx->domain,
- "case_sensitive_group1@"TEST_DOM_NAME, 29000,
- "cn=case_sensitive_group1@"TEST_DOM_NAME",cn=example,cn=com",
- NULL, NULL, true, 0);
+ data = test_data_new(test_ctx);
+ fail_if(data == NULL);
+ data->gid = 2900;
+
+ data->groupname = test_asprintf_fqname(data, test_ctx->domain,
+ "case_sensitive_group1");
+ fail_if(data->groupname == NULL);
+
+ data->orig_dn = talloc_asprintf(data, "cn=%s,cn=example,cn=com", data->groupname);
+ fail_if(data->orig_dn == NULL);
+
+ ret = test_add_incomplete_group(data);
fail_unless(ret == EOK, "sysdb_add_incomplete_group error [%d][%s]",
ret, strerror(ret));
- ret = sysdb_add_incomplete_group(test_ctx->domain,
- "case_sensitive_group2@"TEST_DOM_NAME, 29001,
- "cn=CASE_SENSITIVE_GROUP1@"TEST_DOM_NAME",cn=EXAMPLE,cn=COM",
- NULL, NULL, true, 0);
+ /* different name and GID, original DN differs only by case */
+ data->gid = 2901;
+ data->groupname = test_asprintf_fqname(data, test_ctx->domain,
+ "case_sensitive_group2");
+ fail_if(data->groupname == NULL);
+ c = discard_const(data->orig_dn);
+ while(*c != '\0') {
+ *c = toupper(*c);
+ c++;
+ }
+
+ ret = test_add_incomplete_group(data);
fail_unless(ret == EOK, "sysdb_add_incomplete_group error [%d][%s]",
ret, strerror(ret));
/* Search by originalDN should yield 2 entries */
- filter = talloc_asprintf(test_ctx, "%s=%s", SYSDB_ORIG_DN,
- "cn=case_sensitive_group1@"TEST_DOM_NAME",cn=example,cn=com");
+ filter = talloc_asprintf(test_ctx, "%s=%s",
+ SYSDB_ORIG_DN, data->orig_dn);
fail_if(filter == NULL, "Cannot construct filter\n");
base_dn = sysdb_domain_dn(test_ctx, test_ctx->domain);
@@ -5298,54 +5272,58 @@ START_TEST(test_sysdb_search_sid_str)
{
errno_t ret;
struct sysdb_test_ctx *test_ctx;
+ struct test_data *data;
struct ldb_message *msg;
- struct sysdb_attrs *attrs = NULL;
/* Setup */
ret = setup_sysdb_tests(&test_ctx);
fail_if(ret != EOK, "Could not set up the test");
- ret = sysdb_add_incomplete_group(test_ctx->domain,
- "group@"TEST_DOM_NAME, 29000,
- "cn=group@"TEST_DOM_NAME",cn=example,cn=com",
- "S-1-2-3-4", NULL, true, 0);
+ data = test_data_new_group(test_ctx, 2900);
+ fail_if(data == NULL);
+ data->sid_str = "S-1-2-3-4";
+
+ ret = test_add_incomplete_group(data);
fail_unless(ret == EOK, "sysdb_add_incomplete_group error [%d][%s]",
ret, strerror(ret));
ret = sysdb_search_group_by_sid_str(test_ctx, test_ctx->domain,
- "S-1-2-3-4", NULL, &msg);
+ data->sid_str, NULL, &msg);
fail_unless(ret == EOK, "sysdb_search_group_by_sid_str failed with [%d][%s].",
ret, strerror(ret));
/* Delete the group by SID */
- ret = sysdb_delete_by_sid(test_ctx->sysdb, test_ctx->domain, "S-1-2-3-4");
+ ret = sysdb_delete_by_sid(test_ctx->sysdb, test_ctx->domain, data->sid_str);
fail_unless(ret == EOK, "sysdb_delete_by_sid failed with [%d][%s].",
ret, strerror(ret));
/* Verify it's gone */
- ret = sysdb_search_group_by_sid_str(test_ctx, test_ctx->domain, "S-1-2-3-4",
- NULL, &msg);
- fail_unless(ret == ENOENT, "sysdb_search_group_by_sid_str failed with [%d][%s].",
+ ret = sysdb_search_group_by_sid_str(test_ctx, test_ctx->domain,
+ data->sid_str, NULL, &msg);
+ fail_unless(ret == ENOENT,
+ "sysdb_search_group_by_sid_str failed with [%d][%s].",
ret, strerror(ret));
talloc_free(msg);
msg = NULL;
- attrs = sysdb_new_attrs(test_ctx);
- fail_unless(attrs != NULL, "sysdb_new_attrs failed");
+ talloc_zfree(data);
+
+ data = test_data_new_user(test_ctx, 12345);
+ fail_if(data == NULL);
+ data->sid_str = "S-1-2-3-4-5";
+ fail_if(data->sid_str == NULL);
- ret = sysdb_attrs_add_string(attrs, SYSDB_SID_STR, "S-1-2-3-4-5");
+ ret = sysdb_attrs_add_string(data->attrs, SYSDB_SID_STR, data->sid_str);
fail_unless(ret == EOK, "sysdb_attrs_add_string failed with [%d][%s].",
ret, strerror(ret));
- ret = sysdb_add_user(test_ctx->domain, "SIDuser",
- 12345, 0, "SID user", "/home/siduser", "/bin/bash",
- NULL, attrs, 0, 0);
+ ret = test_add_user(data);
fail_unless(ret == EOK, "sysdb_add_user failed with [%d][%s].",
ret, strerror(ret));
ret = sysdb_search_user_by_sid_str(test_ctx, test_ctx->domain,
- "S-1-2-3-4-5", NULL, &msg);
+ data->sid_str, NULL, &msg);
fail_unless(ret == EOK, "sysdb_search_user_by_sid_str failed with [%d][%s].",
ret, strerror(ret));
@@ -5358,23 +5336,23 @@ START_TEST(test_sysdb_search_object_by_uuid)
errno_t ret;
struct sysdb_test_ctx *test_ctx;
struct ldb_result *res;
- struct sysdb_attrs *attrs = NULL;
+ const char *uuid;
+ struct test_data *data;
/* Setup */
ret = setup_sysdb_tests(&test_ctx);
fail_if(ret != EOK, "Could not set up the test");
- attrs = sysdb_new_attrs(test_ctx);
- fail_unless(attrs != NULL, "sysdb_new_attrs failed");
+ data = test_data_new_user(test_ctx, 123456);
+ fail_if(data == NULL);
- ret = sysdb_attrs_add_string(attrs, SYSDB_UUID,
- "11111111-2222-3333-4444-555555555555");
+ uuid = "11111111-2222-3333-4444-555555555555";
+
+ ret = sysdb_attrs_add_string(data->attrs, SYSDB_UUID, uuid);
fail_unless(ret == EOK, "sysdb_attrs_add_string failed with [%d][%s].",
ret, strerror(ret));
- ret = sysdb_add_user(test_ctx->domain, "UUIDuser",
- 123456, 0, "UUID user", "/home/uuiduser", "/bin/bash",
- NULL, attrs, 0, 0);
+ ret = test_add_user(data);
fail_unless(ret == EOK, "sysdb_add_user failed with [%d][%s].",
ret, strerror(ret));
@@ -5386,15 +5364,14 @@ START_TEST(test_sysdb_search_object_by_uuid)
"missing object, expected [%d], got [%d].", ENOENT, ret);
ret = sysdb_search_object_by_uuid(test_ctx, test_ctx->domain,
- "11111111-2222-3333-4444-555555555555",
- NULL, &res);
+ uuid, NULL, &res);
fail_unless(ret == EOK, "sysdb_search_object_by_uuid failed with [%d][%s].",
ret, strerror(ret));
fail_unless(res->count == 1, "Unexpected number of results, " \
"expected [%u], get [%u].", 1, res->count);
fail_unless(strcmp(ldb_msg_find_attr_as_string(res->msgs[0],
SYSDB_NAME, ""),
- "UUIDuser") == 0, "Unexpected object found, " \
+ data->username) == 0, "Unexpected object found, " \
"expected [%s], got [%s].", "UUIDuser",
ldb_msg_find_attr_as_string(res->msgs[0],SYSDB_NAME, ""));
talloc_free(test_ctx);
@@ -5408,26 +5385,24 @@ START_TEST(test_sysdb_search_user_by_cert)
errno_t ret;
struct sysdb_test_ctx *test_ctx;
struct ldb_result *res;
- struct sysdb_attrs *attrs = NULL;
struct ldb_val val;
+ struct test_data *data;
/* Setup */
ret = setup_sysdb_tests(&test_ctx);
fail_if(ret != EOK, "Could not set up the test");
+ data = test_data_new_user(test_ctx, 234567);
+ fail_if(data == NULL);
+
val.data = sss_base64_decode(test_ctx, TEST_USER_CERT_DERB64, &val.length);
fail_unless(val.data != NULL, "sss_base64_decode failed.");
- attrs = sysdb_new_attrs(test_ctx);
- fail_unless(attrs != NULL, "sysdb_new_attrs failed");
-
- ret = sysdb_attrs_add_val(attrs, SYSDB_USER_CERT, &val);
+ ret = sysdb_attrs_add_val(data->attrs, SYSDB_USER_CERT, &val);
fail_unless(ret == EOK, "sysdb_attrs_add_val failed with [%d][%s].",
ret, strerror(ret));
- ret = sysdb_add_user(test_ctx->domain, "certuser",
- 234567, 0, "cert user", "/home/certuser", "/bin/bash",
- NULL, attrs, 0, 0);
+ ret = test_add_user(data);
fail_unless(ret == EOK, "sysdb_add_user failed with [%d][%s].",
ret, strerror(ret));
@@ -5444,8 +5419,8 @@ START_TEST(test_sysdb_search_user_by_cert)
"expected [%u], get [%u].", 1, res->count);
fail_unless(strcmp(ldb_msg_find_attr_as_string(res->msgs[0],
SYSDB_NAME, ""),
- "certuser") == 0, "Unexpected object found, " \
- "expected [%s], got [%s].", "certuser",
+ data->username) == 0, "Unexpected object found, " \
+ "expected [%s], got [%s].", data->username,
ldb_msg_find_attr_as_string(res->msgs[0],SYSDB_NAME, ""));
talloc_free(test_ctx);
}
@@ -5484,8 +5459,9 @@ START_TEST(test_sysdb_subdomain_store_user)
struct ldb_dn *base_dn = NULL;
struct ldb_dn *check_dn = NULL;
const char *attrs[] = { SYSDB_NAME, SYSDB_NAME_ALIAS, NULL };
- struct sysdb_attrs *user_attrs;
struct ldb_message *msg;
+ struct test_data *data;
+ char *alias;
ret = setup_sysdb_tests(&test_ctx);
fail_if(ret != EOK, "Could not set up the test");
@@ -5503,28 +5479,30 @@ START_TEST(test_sysdb_subdomain_store_user)
fail_unless(ret == EOK, "sysdb_update_subdomains failed with [%d][%s]",
ret, strerror(ret));
- user_attrs = sysdb_new_attrs(test_ctx);
- fail_unless(user_attrs != NULL, "sysdb_new_attrs failed");
+ data = test_data_new_user(test_ctx, 12345);
+ fail_if(data == NULL);
+ data->username = test_asprintf_fqname(data, subdomain, "SubDomUser");
+
+ alias = test_asprintf_fqname(data, subdomain, "subdomuser");
+ fail_if(alias == NULL);
- ret = sysdb_attrs_add_string(user_attrs, SYSDB_NAME_ALIAS,
- "subdomuser@test.sub");
+ ret = sysdb_attrs_add_string(data->attrs, SYSDB_NAME_ALIAS, alias);
fail_unless(ret == EOK, "sysdb_store_user failed.");
- ret = sysdb_store_user(subdomain, "SubDomUser@test.sub",
- NULL, 12345, 0, "Sub Domain User",
+ ret = sysdb_store_user(subdomain, data->username,
+ NULL, data->uid, 0, "Sub Domain User",
"/home/subdomuser", "/bin/bash",
- NULL, user_attrs, NULL, -1, 0);
+ NULL, data->attrs, NULL, -1, 0);
fail_unless(ret == EOK, "sysdb_store_user failed.");
base_dn =ldb_dn_new(test_ctx, test_ctx->sysdb->ldb, "cn=sysdb");
fail_unless(base_dn != NULL);
- check_dn = ldb_dn_new(test_ctx, test_ctx->sysdb->ldb,
- "name=SubDomUser@test.sub,cn=users,cn=test.sub,cn=sysdb");
+ check_dn = sysdb_user_dn(data, subdomain, data->username);
fail_unless(check_dn != NULL);
ret = ldb_search(test_ctx->sysdb->ldb, test_ctx, &results, base_dn,
- LDB_SCOPE_SUBTREE, NULL, "name=SubDomUser@test.sub");
+ LDB_SCOPE_SUBTREE, NULL, "name=%s", data->username);
fail_unless(ret == EOK, "ldb_search failed.");
fail_unless(results->count == 1, "Unexpected number of results, "
"expected [%d], got [%d]",
@@ -5534,16 +5512,16 @@ START_TEST(test_sysdb_subdomain_store_user)
/* Subdomains are case-insensitive. Test that the lowercased name
* can be found, too */
- ret = sysdb_search_user_by_name(test_ctx, subdomain, "subdomuser@test.sub",
+ ret = sysdb_search_user_by_name(test_ctx, subdomain, alias,
attrs, &msg);
fail_unless(ret == EOK, "sysdb_search_user_by_name failed.");
- ret = sysdb_delete_user(subdomain, "subdomuser@test.sub", 0);
+ ret = sysdb_delete_user(subdomain, alias, 0);
fail_unless(ret == EOK, "sysdb_delete_user failed [%d][%s].",
ret, strerror(ret));
ret = ldb_search(test_ctx->sysdb->ldb, test_ctx, &results, base_dn,
- LDB_SCOPE_SUBTREE, NULL, "name=subdomuser@test.sub");
+ LDB_SCOPE_SUBTREE, NULL, "name=%s", alias);
fail_unless(ret == EOK, "ldb_search failed.");
fail_unless(results->count == 0, "Unexpected number of results, "
"expected [%d], got [%d]",
@@ -5558,6 +5536,11 @@ START_TEST(test_sysdb_subdomain_user_ops)
struct sss_domain_info *subdomain = NULL;
struct ldb_message *msg = NULL;
struct ldb_dn *check_dn = NULL;
+ struct test_data *data;
+ const char *name;
+ const char *shortname = "subdomuser";
+ char *short_check;
+ char *dom_check;
ret = setup_sysdb_tests(&test_ctx);
fail_if(ret != EOK, "Could not set up the test");
@@ -5575,34 +5558,46 @@ START_TEST(test_sysdb_subdomain_user_ops)
fail_unless(ret == EOK, "sysdb_update_subdomains failed with [%d][%s]",
ret, strerror(ret));
- ret = sysdb_store_user(subdomain, "subdomuser@test.sub",
- NULL, 12345, 0, "Sub Domain User",
+ data = test_data_new_user(test_ctx, 12345);
+ fail_if(data == NULL);
+
+ data->username = test_asprintf_fqname(data, subdomain, shortname);
+ fail_if(data->username == NULL);
+
+ ret = sysdb_store_user(subdomain, data->username,
+ NULL, data->uid, 0, "Sub Domain User",
"/home/subdomuser", "/bin/bash",
NULL, NULL, NULL, -1, 0);
fail_unless(ret == EOK, "sysdb_store_domuser failed.");
- check_dn = ldb_dn_new(test_ctx, test_ctx->sysdb->ldb,
- "name=subdomuser@test.sub,cn=users,cn=test.sub,cn=sysdb");
+ check_dn = sysdb_user_dn(data, subdomain, data->username);
fail_unless(check_dn != NULL);
ret = sysdb_search_user_by_name(test_ctx, subdomain,
- "subdomuser@test.sub", NULL,
+ data->username, NULL,
&msg);
fail_unless(ret == EOK, "sysdb_search_user_by_name failed with [%d][%s].",
ret, strerror(ret));
fail_unless(ldb_dn_compare(msg->dn, check_dn) == 0,
"Unexpedted DN returned");
- ret = sysdb_search_user_by_uid(test_ctx, subdomain, 12345, NULL, &msg);
+ name = ldb_msg_find_attr_as_string(msg, SYSDB_NAME, NULL);
+ fail_if(name == NULL);
+
+ ret = sss_parse_internal_fqname(data, name, &short_check, &dom_check);
+ fail_if(ret != EOK);
+ ck_assert_str_eq(short_check, shortname);
+ ck_assert_str_eq(dom_check, subdomain->name);
+
+ ret = sysdb_search_user_by_uid(test_ctx, subdomain, data->uid, NULL, &msg);
fail_unless(ret == EOK, "sysdb_search_domuser_by_uid failed with [%d][%s].",
ret, strerror(ret));
fail_unless(ldb_dn_compare(msg->dn, check_dn) == 0,
"Unexpedted DN returned");
- ret = sysdb_delete_user(subdomain, "subdomuser@test.sub", 12345);
+ ret = sysdb_delete_user(subdomain, data->username, data->uid);
fail_unless(ret == EOK, "sysdb_delete_domuser failed with [%d][%s].",
ret, strerror(ret));
-
}
END_TEST
@@ -5613,9 +5608,12 @@ START_TEST(test_sysdb_subdomain_group_ops)
struct sss_domain_info *subdomain = NULL;
struct ldb_message *msg = NULL;
struct ldb_dn *check_dn = NULL;
- struct sysdb_attrs *group_attrs;
- char *dn;
- char *subdomgroup;
+ struct test_data *data;
+ char *alias;
+ const char *name;
+ const char *shortname = "subDomGroup";
+ char *short_check;
+ char *dom_check;
ret = setup_sysdb_tests(&test_ctx);
fail_if(ret != EOK, "Could not set up the test");
@@ -5633,25 +5631,24 @@ START_TEST(test_sysdb_subdomain_group_ops)
fail_unless(ret == EOK, "sysdb_update_subdomains failed with [%d][%s]",
ret, strerror(ret));
- group_attrs = sysdb_new_attrs(test_ctx);
- fail_unless(group_attrs != NULL, "sysdb_new_attrs failed");
+ data = test_data_new_group(test_ctx, 12345);
+ fail_if(data == NULL);
+ data->groupname = test_asprintf_fqname(data, subdomain, shortname);
+
+ alias = test_asprintf_fqname(data, subdomain, "subdomgroup");
+ fail_if(alias == NULL);
- ret = sysdb_attrs_add_string(group_attrs, SYSDB_NAME_ALIAS, "subdomgroup");
+ ret = sysdb_attrs_add_string(data->attrs, SYSDB_NAME_ALIAS, alias);
fail_unless(ret == EOK, "sysdb_attrs_add_string failed.");
- subdomgroup = sss_create_internal_fqname(test_ctx, "subDomGroup",
- subdomain->name);
- fail_if(subdomgroup == NULL, "sss_create_internal_fqname failed");
ret = sysdb_store_group(subdomain,
- subdomgroup, 12345, group_attrs, -1, 0);
+ data->groupname, data->gid, data->attrs, -1, 0);
fail_unless(ret == EOK, "sysdb_store_group failed.");
- dn = talloc_asprintf(test_ctx, "name=%s,cn=groups,cn=test.sub,cn=sysdb",
- subdomgroup);
- check_dn = ldb_dn_new(test_ctx, test_ctx->sysdb->ldb, dn);
+ check_dn = sysdb_group_dn(data, subdomain, data->groupname);
fail_unless(check_dn != NULL);
- ret = sysdb_search_group_by_name(test_ctx, subdomain, subdomgroup, NULL,
+ ret = sysdb_search_group_by_name(test_ctx, subdomain, data->groupname, NULL,
&msg);
fail_unless(ret == EOK, "sysdb_search_group_by_name failed with [%d][%s].",
ret, strerror(ret));
@@ -5661,24 +5658,30 @@ START_TEST(test_sysdb_subdomain_group_ops)
/* subdomains are case insensitive, so it should be possible to search
the group with a lowercase name version, too */
/* Fixme - lowercase this */
- ret = sysdb_search_group_by_name(test_ctx, subdomain, subdomgroup, NULL,
+ ret = sysdb_search_group_by_name(test_ctx, subdomain, data->groupname, NULL,
&msg);
fail_unless(ret == EOK, "case-insensitive group search failed with [%d][%s].",
ret, strerror(ret));
fail_unless(ldb_dn_compare(msg->dn, check_dn) == 0,
"Unexpected DN returned");
+ name = ldb_msg_find_attr_as_string(msg, SYSDB_NAME, NULL);
+ fail_if(name == NULL);
- ret = sysdb_search_group_by_gid(test_ctx, subdomain, 12345, NULL, &msg);
+ ret = sss_parse_internal_fqname(data, name, &short_check, &dom_check);
+ fail_if(ret != EOK);
+ ck_assert_str_eq(short_check, shortname);
+ ck_assert_str_eq(dom_check, subdomain->name);
+
+ ret = sysdb_search_group_by_gid(test_ctx, subdomain, data->gid, NULL, &msg);
fail_unless(ret == EOK, "sysdb_search_group_by_gid failed with [%d][%s].",
ret, strerror(ret));
fail_unless(ldb_dn_compare(msg->dn, check_dn) == 0,
"Unexpedted DN returned");
- ret = sysdb_delete_group(subdomain, subdomgroup, 12345);
+ ret = sysdb_delete_group(subdomain, data->groupname, data->gid);
fail_unless(ret == EOK, "sysdb_delete_group failed with [%d][%s].",
ret, strerror(ret));
-
}
END_TEST
@@ -6429,26 +6432,33 @@ START_TEST(test_sysdb_mark_entry_as_expired_ldb_dn)
struct ldb_message **msgs;
uint64_t expire;
struct ldb_dn *userdn;
+ struct test_data *data;
+ char *filter;
ret = setup_sysdb_tests(&test_ctx);
fail_if(ret != EOK, "Could not setup the test");
/* Add something to database to test against */
+ data = test_data_new_user(test_ctx, 2000);
+ fail_if(data == NULL);
ret = sysdb_transaction_start(test_ctx->sysdb);
ck_assert_int_eq(ret, EOK);
- ret = sysdb_add_user(test_ctx->domain, "testuser",
- 2000, 0, "Test User", "/home/testuser",
- "/bin/bash",
- NULL, NULL, 500, 0);
+ ret = test_add_user(data);
ck_assert_int_eq(ret, EOK);
ret = sysdb_transaction_commit(test_ctx->sysdb);
ck_assert_int_eq(ret, EOK);
+ filter = talloc_asprintf(data,
+ "("SYSDB_UIDNUM"=%llu)",
+ (unsigned long long) data->uid);
+ fail_if(filter == NULL);
+
ret = sysdb_search_users(test_ctx, test_ctx->domain,
- "("SYSDB_UIDNUM"=2000)", attrs, &count, &msgs);
+ filter, attrs, &count, &msgs);
+ talloc_zfree(filter);
ck_assert_int_eq(ret, EOK);
ck_assert_int_eq(count, 1);
@@ -6456,7 +6466,7 @@ START_TEST(test_sysdb_mark_entry_as_expired_ldb_dn)
ck_assert(expire != 1);
userdn = sysdb_user_dn(test_ctx, test_ctx->domain,
- "testuser@"TEST_DOM_NAME);
+ data->username);
ck_assert(userdn != NULL);
ret = sysdb_transaction_start(test_ctx->sysdb);
@@ -6469,8 +6479,14 @@ START_TEST(test_sysdb_mark_entry_as_expired_ldb_dn)
ret = sysdb_transaction_commit(test_ctx->sysdb);
ck_assert_int_eq(ret, EOK);
+ filter = talloc_asprintf(data,
+ "("SYSDB_UIDNUM"=%llu)",
+ (unsigned long long) data->uid);
+ fail_if(filter == NULL);
+
ret = sysdb_search_users(test_ctx, test_ctx->domain,
- "("SYSDB_UIDNUM"=2000)", attrs, &count, &msgs);
+ filter, attrs, &count, &msgs);
+ talloc_zfree(filter);
ck_assert_int_eq(ret, EOK);
ck_assert_int_eq(count, 1);
@@ -6502,7 +6518,7 @@ Suite *create_sysdb_suite(void)
tcase_add_test(tc_sysdb, test_sysdb_user_new_id);
/* Create a new user */
- tcase_add_loop_test(tc_sysdb, test_sysdb_add_user,27000,27010);
+ tcase_add_loop_test(tc_sysdb, test_sysdb_add_user, 27000, 27010);
/* Verify the users were added */
tcase_add_loop_test(tc_sysdb, test_sysdb_getpwnam, 27000, 27010);
@@ -6526,10 +6542,14 @@ Suite *create_sysdb_suite(void)
tcase_add_test(tc_sysdb, test_sysdb_update_members);
/* Remove the other half by gid */
- tcase_add_loop_test(tc_sysdb, test_sysdb_remove_local_group_by_gid, 28000, 28010);
+ tcase_add_loop_test(tc_sysdb,
+ test_sysdb_remove_local_group_by_gid,
+ 28000, 28010);
/* Remove the other half by uid */
- tcase_add_loop_test(tc_sysdb, test_sysdb_remove_local_user_by_uid, 27000, 27010);
+ tcase_add_loop_test(tc_sysdb,
+ test_sysdb_remove_local_user_by_uid,
+ 27000, 27010);
/* Create a new user */
tcase_add_loop_test(tc_sysdb, test_sysdb_store_user, 27010, 27020);
@@ -6611,9 +6631,15 @@ Suite *create_sysdb_suite(void)
/* test the ignore_not_found parameter for groups */
tcase_add_test(tc_sysdb, test_sysdb_remove_nonexistent_group);
- /* Create incomplete groups - remove will fail if the LDB objects don't exist */
- tcase_add_loop_test(tc_sysdb, test_sysdb_add_incomplete_group, 28000, 28010);
- tcase_add_loop_test(tc_sysdb, test_sysdb_remove_local_group_by_gid, 28000, 28010);
+ /* Create incomplete groups - remove will fail if the LDB objects
+ * don't exist
+ */
+ tcase_add_loop_test(tc_sysdb,
+ test_sysdb_add_incomplete_group,
+ 28000, 28010);
+ tcase_add_loop_test(tc_sysdb,
+ test_sysdb_remove_local_group_by_gid,
+ 28000, 28010);
/* test custom operations */
tcase_add_loop_test(tc_sysdb, test_sysdb_store_custom, 29010, 29020);
@@ -6721,7 +6747,9 @@ Suite *create_sysdb_suite(void)
test_sysdb_memberof_check_memberuid_without_group_5,
0, 10);
tcase_add_loop_test(tc_memberof, test_sysdb_remove_local_group_by_gid,
- MBO_GROUP_BASE , MBO_GROUP_BASE + 10);
+ MBO_GROUP_BASE , MBO_GROUP_BASE + 5);
+ tcase_add_loop_test(tc_memberof, test_sysdb_remove_local_group_by_gid,
+ MBO_GROUP_BASE+6 , MBO_GROUP_BASE + 10);
tcase_add_loop_test(tc_memberof, test_sysdb_memberof_store_group, 0, 10);
tcase_add_test(tc_memberof, test_sysdb_memberof_close_loop);
@@ -6736,7 +6764,9 @@ Suite *create_sysdb_suite(void)
test_sysdb_memberof_check_memberuid_loop_without_group_5,
0, 10);
tcase_add_loop_test(tc_memberof, test_sysdb_remove_local_group_by_gid,
- MBO_GROUP_BASE , MBO_GROUP_BASE + 10);
+ MBO_GROUP_BASE , MBO_GROUP_BASE + 5);
+ tcase_add_loop_test(tc_memberof, test_sysdb_remove_local_group_by_gid,
+ MBO_GROUP_BASE+6 , MBO_GROUP_BASE + 10);
/* Ghost users tests */
tcase_add_loop_test(tc_memberof, test_sysdb_memberof_store_group_with_ghosts,
@@ -6774,6 +6804,7 @@ Suite *create_sysdb_suite(void)
tcase_add_loop_test(tc_memberof, test_sysdb_memberof_ghost_replace_noop,
MBO_GROUP_BASE + NUM_GHOSTS/2 + 1,
MBO_GROUP_BASE + NUM_GHOSTS);
+
/* Remove the real users */
tcase_add_loop_test(tc_memberof, test_sysdb_memberof_user_cleanup,
MBO_GROUP_BASE , MBO_GROUP_BASE + NUM_GHOSTS/2);
@@ -6827,7 +6858,6 @@ Suite *create_sysdb_suite(void)
1 , 11);
tcase_add_loop_test(tc_memberof, test_sysdb_remove_local_group_by_gid,
MBO_GROUP_BASE , MBO_GROUP_BASE + 10);
-
suite_add_tcase(s, tc_memberof);
TCase *tc_subdomain = tcase_create("SYSDB sub-domain Tests");