[SSSD] [PATCH] nested groups unit test
Lukas Slebodnik
lslebodn at redhat.com
Thu Jul 18 15:59:57 UTC 2013
On (18/07/13 15:45), Pavel Březina wrote:
>On 07/18/2013 02:38 PM, Pavel Březina wrote:
>>Hi,
>>this is the first unit test for nested groups. It covers only the most
>>basic situation when we are trying to resolve one group with no members.
>>
>>Even though it is only one test, the patch set is quite big. This is
>>because it creates the possibility to mock providers related modules.
>>Most of the patches are just a preparation for unit testing providers.
>>
>>Patches 1-5
>>Moves the code around to reduce number of dependencies. (E.g. you do not
>>want to load fail over when you are testing nested groups.)
>>
>>Patch 6
>>Mocks basic SDAP interface.
>>
>>Patch 7
>>Mocks sysdb objects - currently user and rfc2307bis group. You can
>>decide what set of attributes the object should posses. For example,
>>creating a user requires only basedn and name parameter, to construct
>>originalDN and name attributes. The rest is provided by (attrname,
>>value) pairs via variadic function.
>>
>>E.g.:
>>mock_sysdb_user(mem_ctx, basedn, name, SYSDB_UIDNUM, uid, ...)
>>
>>get_attr_type() translates the sysdb attribute name to proper data type.
>>This should be extended as needed.
>>
>>Patch 8
>>Adds provider tests related common object files and cflags in makefile
>>
>>Patch 9
>>New macro sss_will_return_always(fn, value). This can be used to mock
>>function data in such way that any call of mock() will return the value.
>>
>>It was just pushed also to cmocka upstream as will_return_always().
>>
>>Patch 10-11
>>Unit test.
>>
>>Patch 12
>>Removes a noisy debug message.
>>
>>I would like to get this reviewed before I continue with more test
>>cases, so the framework is tuned enough.
>>
>>Off topic:
>>I also created new macro called fail_msg, which will make the test fail
>>printing a message. I didn't use this macro in the end, but it made its
>>way to cmocka upstream.
>
>Oops, I did some reorganization while writing this mail but sent
>patches generated sooner, so the numbers does not match. Reordered
>patches are attached.
>
>
>From 3054f4e5359b3f46faa33545b1cd36d11ef646ba Mon Sep 17 00:00:00 2001
>From: =?UTF-8?q?Pavel=20B=C5=99ezina?= <pbrezina at redhat.com>
>Date: Wed, 17 Jul 2013 13:51:37 +0200
>Subject: [PATCH 05/12] ldap_options.c: do not call krb5_try_kdcip when unit
> testing
>
>---
> src/providers/ldap/ldap_options.c | 2 ++
> 1 file changed, 2 insertions(+)
>
>diff --git a/src/providers/ldap/ldap_options.c b/src/providers/ldap/ldap_options.c
>index 68bf0d280ba1611ba414576ce0289742911d51da..9e8030f08c4f4de77cc78f7c96a42daca283059c 100644
>--- a/src/providers/ldap/ldap_options.c
>+++ b/src/providers/ldap/ldap_options.c
>@@ -429,6 +429,7 @@ int ldap_get_options(TALLOC_CTX *memctx,
> goto done;
> }
>
>+#ifndef UNIT_TESTING
> /* If there is no KDC, try the deprecated krb5_kdcip option, too */
> /* FIXME - this can be removed in a future version */
> ret = krb5_try_kdcip(cdb, conf_path, opts->basic, SDAP_KRB5_KDC);
>@@ -436,6 +437,7 @@ int ldap_get_options(TALLOC_CTX *memctx,
> DEBUG(1, ("sss_krb5_try_kdcip failed.\n"));
> goto done;
> }
>+#endif
Why do you need conditional build?
I think, that you can mock krb5_try_kdcip and every time return EOK.
>
> authtok_type = dp_opt_get_string(opts->basic, SDAP_DEFAULT_AUTHTOK_TYPE);
> if (authtok_type != NULL &&
>--
>1.7.11.7
>
>From 7f909490572f3edf4c8f6540ee0b62bc5f226ea0 Mon Sep 17 00:00:00 2001
>From: =?UTF-8?q?Pavel=20B=C5=99ezina?= <pbrezina at redhat.com>
>Date: Wed, 17 Jul 2013 13:58:54 +0200
>Subject: [PATCH 08/12] tests: prepare makefile for provider related unit
> tests
>
>---
> Makefile.am | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
>diff --git a/Makefile.am b/Makefile.am
>index 6cfc363cea9eae833a8a4bdff12309286475b89a..9065ee4b6312bc808de0253d81df68e38f5c633e 100644
>--- a/Makefile.am
>+++ b/Makefile.am
>@@ -1209,6 +1209,19 @@ TEST_MOCK_RESP_OBJ = \
> src/responder/common/responder_cmd.c \
> src/responder/common/negcache.c \
> src/responder/common/responder_common.c
>+
^^^^^
trailing whitespaces
>+TEST_MOCK_PROVIDER_OBJ = \
>+ src/util/sss_ldap.c \
>+ src/providers/data_provider_opts.c \
>+ src/providers/ldap/ldap_options.c \
>+ src/providers/ldap/sdap.c \
>+ src/providers/ldap/sdap_utils.c \
>+ src/providers/ldap/sdap_range.c \
>+ src/tests/cmocka/common_mock_sdap.c \
>+ src/tests/cmocka/common_mock_sysdb_objects.c
>+
^^^^^
trailing whitespaces
>+TEST_MOCK_PROVIDER_CFLAGS = \
>+ -DUNIT_TESTING
>
> nss_srv_tests_DEPENDENCIES = \
> $(ldblib_LTLIBRARIES)
>--
>1.7.11.7
>
More information about the sssd-devel
mailing list