summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2016-09-26 11:03:33 +0200
committerJakub Hrozek <jhrozek@redhat.com>2016-10-11 14:27:05 +0200
commit03713a6444fdecd01465b9d5fbfead9601adce6e (patch)
treef32723ed7b9ca6ea18f970ef74a2b0a1f753b69a
parenteb9bc1c590b8c3b3b58574c70d9fe5357ef3e901 (diff)
downloadsssd-03713a6444fdecd01465b9d5fbfead9601adce6e.tar.gz
sssd-03713a6444fdecd01465b9d5fbfead9601adce6e.tar.xz
sssd-03713a6444fdecd01465b9d5fbfead9601adce6e.zip
tests: Add tests for getorig by UPN NSS op
Reviewed-by: Sumit Bose <sbose@redhat.com> Reviewed-by: Fabiano FidĂȘncio <fidencio@redhat.com>
-rw-r--r--src/tests/cmocka/test_nss_srv.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/tests/cmocka/test_nss_srv.c b/src/tests/cmocka/test_nss_srv.c
index 8e9f5feb5..3cfdb38f4 100644
--- a/src/tests/cmocka/test_nss_srv.c
+++ b/src/tests/cmocka/test_nss_srv.c
@@ -2130,6 +2130,16 @@ static int test_nss_getorigbyname_check(uint32_t status, uint8_t *body,
s = (char *) body+rp;
assert_string_equal(s, "1234");
rp += strlen(s) + 1;
+ assert_true(rp < blen);
+
+ s = (char *) body+rp;
+ assert_string_equal(s, SYSDB_UPN);
+ rp += strlen(s) + 1;
+ assert_true(rp < blen);
+
+ s = (char *) body+rp;
+ assert_string_equal(s, "testuserorig@upndomain.test");
+ rp += strlen(s) + 1;
assert_int_equal(rp, blen);
return EOK;
@@ -2149,6 +2159,7 @@ void test_nss_getorigbyname(void **state)
{
errno_t ret;
struct sysdb_attrs *attrs;
+ const char *test_upn = "testuserorig@upndomain.test";
attrs = sysdb_new_attrs(nss_test_ctx);
assert_non_null(attrs);
@@ -2163,6 +2174,9 @@ void test_nss_getorigbyname(void **state)
ret = sysdb_attrs_add_uint32(attrs, ORIGINALAD_PREFIX SYSDB_UIDNUM, 1234);
assert_int_equal(ret, EOK);
+ ret = sysdb_attrs_add_string(attrs, SYSDB_UPN, test_upn);
+ assert_int_equal(ret, EOK);
+
/* Prime the cache with a valid user */
ret = store_user(nss_test_ctx, nss_test_ctx->tctx->dom,
&orig_name, attrs, 0);
@@ -2181,6 +2195,23 @@ void test_nss_getorigbyname(void **state)
/* Wait until the test finishes with EOK */
ret = test_ev_loop(nss_test_ctx->tctx);
assert_int_equal(ret, EOK);
+
+ /* Also test looking up the same stuff with UPN */
+ nss_test_ctx->tctx->done = false;
+
+ mock_input_user_or_group(test_upn);
+ will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETORIGBYNAME);
+ will_return(__wrap_sss_packet_get_body, WRAP_CALL_REAL);
+
+ /* Query for that user, call a callback when command finishes */
+ set_cmd_cb(test_nss_getorigbyname_check);
+ ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETORIGBYNAME,
+ nss_test_ctx->nss_cmds);
+ assert_int_equal(ret, EOK);
+
+ /* Wait until the test finishes with EOK */
+ ret = test_ev_loop(nss_test_ctx->tctx);
+ assert_int_equal(ret, EOK);
}
static int test_nss_getorigbyname_extra_check(uint32_t status, uint8_t *body,
@@ -3658,6 +3689,9 @@ int main(int argc, const char *argv[])
cmocka_unit_test_setup_teardown(test_nss_getorigbyname_multi_value_attrs,
nss_test_setup_extra_attr,
nss_test_teardown),
+ cmocka_unit_test_setup_teardown(test_nss_getorigbyname,
+ nss_test_setup,
+ nss_test_teardown),
cmocka_unit_test_setup_teardown(test_nss_getpwnam_upn,
nss_test_setup, nss_test_teardown),
cmocka_unit_test_setup_teardown(test_nss_getpwnam_upn_neg,