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 <lsleb...@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 | 79 +++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 80 insertions(+), 4 deletions(-) diff --git a/src/tests/common.h b/src/tests/common.h index 9065db39ea5d0db0351447cfb2c9c14f4d9468e5..4da277510722488ab00f3a1bcf3f940d5dd50ea7 100644 --- a/src/tests/common.h +++ b/src/tests/common.h @@ -91,6 +91,11 @@ void test_dom_suite_cleanup(const char *tests_path, const char *confdb_path, const char *sysdb_path); +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 bc69c5a093e17fc56e42ccedd998ab6434d85003..0dbec2ad78c7cba188ab6f637215e0c65f28f1a5 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 sss_test_ctx *test_ctx, + 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(test_ctx->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; +} struct sss_test_ctx * create_dom_test_ctx(TALLOC_CTX *mem_ctx, @@ -39,6 +71,7 @@ create_dom_test_ctx(TALLOC_CTX *mem_ctx, val[1] = NULL; errno_t ret; char *dompath; + const char *re_expression; test_ctx = create_ev_test_ctx(mem_ctx); if (test_ctx == NULL) { @@ -112,11 +145,13 @@ create_dom_test_ctx(TALLOC_CTX *mem_ctx, } test_ctx->sysdb = test_ctx->dom->sysdb; + re_expression = get_re_expression(test_ctx, test_ctx, domain_name); + if (re_expression == NULL) { + goto fail; + } + /* Init with an AD-style regex to be able to test flat name */ - ret = sss_names_init_from_args(test_ctx, - "(((?P<domain>[^\\\\]+)\\\\(?P<name>.+$))|" \ - "((?P<name>[^@]+)@(?P<domain>.+$))|" \ - "(^(?P<name>[^@\\\\]+)$))", + ret = sss_names_init_from_args(test_ctx, re_expression, "%1$s@%2$s", &test_ctx->nctx); if (ret != EOK) { DEBUG(SSSDBG_CRIT_FAILURE, "cannot create names context\n"); @@ -204,3 +239,39 @@ void test_dom_suite_cleanup(const char *tests_path, done: talloc_free(tmp_ctx); } + +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
>From 2efe6066304c9a53a87e8304779738b5aa058eda Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik <lsleb...@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 c318d94be867bbb9991de288cdae45d2ddc29b24..87c2453078c0dd9fbb0ba25ef384f4ff48b66bae 100644 --- a/src/tests/cmocka/test_nss_srv.c +++ b/src/tests/cmocka/test_nss_srv.c @@ -2008,6 +2008,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 */ }; @@ -2016,6 +2017,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
_______________________________________________ sssd-devel mailing list sssd-devel@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/sssd-devel