[SSSD] [PATCH] nss-srv-tests: Add regression test for option re_expression
Lukas Slebodnik
lslebodn at redhat.com
Wed Jan 14 14:54:40 UTC 2015
On (20/11/14 14:01), Jakub Hrozek wrote:
>On Tue, Nov 18, 2014 at 11:23:47AM +0100, Lukas Slebodnik wrote:
>> ehlo,
>>
>> Attached patches are unit test for ticket
>> https://fedorahosted.org/sssd/ticket/2487
>>
>> The ./nss-srv-tests passed with sssd-1.12.1.
>>
>> LS
>
>> From ee8a9a9d65f1ca71d945c95eb664d1ff7f04cfc5 Mon Sep 17 00:00:00 2001
>> From: Lukas Slebodnik <lslebodn at redhat.com>
>> Date: Tue, 18 Nov 2014 11:09:51 +0100
>> Subject: [PATCH 1/2] TESTS: Add function to purge optionf from confdb
>
>Isn't it better to always set up and teardown the whole db instead of
>cherry-picking the right parameters?
The purpose is to remove just some options from confdb and do not tuch sysdb.
rebased patches on top of the tatest prebzina's changes.
LS
-------------- next part --------------
>From f02ccc018ce552d32e83a44ad6ba3f7fedd05e6d Mon Sep 17 00:00:00 2001
From: Lukas Slebodnik <lslebodn at redhat.com>
Date: Tue, 18 Nov 2014 11:09:51 +0100
Subject: [PATCH 1/2] TESTS: Add function to purge optionf from confdb
Some unit tests can fail if option from previous unit test
was not removed from confdb.
---
src/tests/common.h | 5 +++
src/tests/common_dom.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++---
2 files changed, 82 insertions(+), 5 deletions(-)
diff --git a/src/tests/common.h b/src/tests/common.h
index 714be6988aa032d935c09bc7db524545a4c9154e..677fd0a62965318d6a1d19285ba9e5c67897156e 100644
--- a/src/tests/common.h
+++ b/src/tests/common.h
@@ -103,6 +103,11 @@ void test_dom_suite_cleanup(const char *tests_path,
const char *cdb_file,
const char *domain);
+int test_dom_purge_conf_options(TALLOC_CTX *mem_ctx,
+ struct sss_test_ctx *test_ctx,
+ const char *domain_name,
+ const char **params);
+
struct tevent_req *
test_request_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, errno_t err);
diff --git a/src/tests/common_dom.c b/src/tests/common_dom.c
index 41f876555352744c4f61215c1a88369918f5192c..9bc30d3b3d8e57a3675d5fc72cbba33577c6dc06 100644
--- a/src/tests/common_dom.c
+++ b/src/tests/common_dom.c
@@ -24,6 +24,38 @@
#include <errno.h>
#include "tests/common.h"
+static char *
+get_re_expression(TALLOC_CTX *mem_ctx,
+ struct confdb_ctx *confdb,
+ const char *domain_name)
+{
+ const char *dompath;
+ char *re_expression;
+ const char *default_re_expression =
+ "(((?P<domain>[^\\\\]+)\\\\(?P<name>.+$))|"
+ "((?P<name>[^@]+)@(?P<domain>.+$))|"
+ "(^(?P<name>[^@\\\\]+)$))";
+ int ret;
+
+ dompath = talloc_asprintf(mem_ctx, "config/domain/%s", domain_name);
+ if (dompath == NULL) {
+ DEBUG(SSSDBG_CRIT_FAILURE, "talloc_asprintf failed\n");
+ goto fail;
+ }
+
+ ret = confdb_get_string(confdb, mem_ctx, dompath,
+ "re_expression", default_re_expression,
+ &re_expression);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_CRIT_FAILURE, "confdb_get_string failed\n");
+ goto fail;
+ }
+
+ return re_expression;
+
+fail:
+ return NULL;
+}
static errno_t
mock_confdb(TALLOC_CTX *mem_ctx,
@@ -179,6 +211,7 @@ mock_domain(TALLOC_CTX *mem_ctx,
{
struct sss_domain_info *domain = NULL;
errno_t ret;
+ const char *re_expression;
/* initialize sysdb */
ret = sssd_domain_init(mem_ctx, cdb, name, db_path, &domain);
@@ -188,11 +221,14 @@ mock_domain(TALLOC_CTX *mem_ctx,
goto done;
}
- /* init with an AD-style regex to be able to test flat name */
- ret = sss_names_init_from_args(domain,
- "(((?P<domain>[^\\\\]+)\\\\(?P<name>.+$))|" \
- "((?P<name>[^@]+)@(?P<domain>.+$))|" \
- "(^(?P<name>[^@\\\\]+)$))",
+ re_expression = get_re_expression(mem_ctx, cdb, name);
+ if (re_expression == NULL) {
+ ret = ENOMEM;
+ goto done;
+ }
+
+ /* Init with an AD-style regex to be able to test flat name */
+ ret = sss_names_init_from_args(domain, re_expression,
"%1$s@%2$s", &domain->names);
if (ret != EOK) {
DEBUG(SSSDBG_CRIT_FAILURE, "cannot create names context\n");
@@ -384,3 +420,39 @@ void test_dom_suite_cleanup(const char *tests_path,
test_multidom_suite_cleanup(tests_path, cdb_file, domains);
}
+
+int test_dom_purge_conf_options(TALLOC_CTX *mem_ctx,
+ struct sss_test_ctx *test_ctx,
+ const char *domain_name,
+ const char **params)
+{
+ size_t i;
+ const char *val[] = { NULL };
+ errno_t ret;
+ char *dompath;
+
+ dompath = talloc_asprintf(mem_ctx, "config/domain/%s", domain_name);
+ if (dompath == NULL) {
+ DEBUG(SSSDBG_CRIT_FAILURE, "talloc_asprintf failed\n");
+ ret = ENOMEM;
+ goto done;
+ }
+
+ if (params) {
+ for (i = 0; params[i]; i++) {
+ ret = confdb_add_param(test_ctx->confdb, true,
+ dompath, params[i],
+ val);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_CRIT_FAILURE,
+ "cannot remove parameter %s: %d\n", params[i], ret);
+ goto done;
+ }
+ }
+ }
+
+ ret = EOK;
+
+done:
+ return ret;
+}
--
2.1.0
-------------- next part --------------
>From 70c25478f654ed705c18c2bb45b9e7aae9848904 Mon Sep 17 00:00:00 2001
From: Lukas Slebodnik <lslebodn at redhat.com>
Date: Tue, 18 Nov 2014 11:16:41 +0100
Subject: [PATCH 2/2] test_nss_srv: Add regression test for option
re_expression
This regression was cused by commit 09a36be00ddcf1d7bd5b8a368143d5b2e2f4fb68
"sss_get_domain_name: check for fq name first"
Related:
https://fedorahosted.org/sssd/ticket/2487
---
src/tests/cmocka/test_nss_srv.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/src/tests/cmocka/test_nss_srv.c b/src/tests/cmocka/test_nss_srv.c
index 8f297a7842e4c9a21821795dbcbe1a5025259ce1..1e70c80fea571f2034a761c6ab2b4d500470849f 100644
--- a/src/tests/cmocka/test_nss_srv.c
+++ b/src/tests/cmocka/test_nss_srv.c
@@ -2007,6 +2007,7 @@ void nss_fqdn_fancy_test_setup(void **state)
struct sss_test_conf_param params[] = {
{ "enumerate", "false" },
{ "full_name_format", "%1$s@@@@@%2$s" },
+ { "re_expression", "(?P<name>[^@]+)@(?P<domain>[^@]*$)" },
{ NULL, NULL }, /* Sentinel */
};
@@ -2015,6 +2016,18 @@ void nss_fqdn_fancy_test_setup(void **state)
void nss_test_teardown(void **state)
{
+ int ret;
+ const char *params[] = {
+ "enumerate",
+ "full_name_format",
+ "re_expression",
+ NULL,
+ };
+
+ ret = test_dom_purge_conf_options(nss_test_ctx, nss_test_ctx->tctx,
+ TEST_DOM_NAME, params);
+ assert_int_equal(ret, EOK);
+
talloc_free(nss_test_ctx);
}
--
2.1.0
More information about the sssd-devel
mailing list