diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2016-09-26 11:03:33 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2016-10-11 14:27:05 +0200 |
commit | 03713a6444fdecd01465b9d5fbfead9601adce6e (patch) | |
tree | f32723ed7b9ca6ea18f970ef74a2b0a1f753b69a | |
parent | eb9bc1c590b8c3b3b58574c70d9fe5357ef3e901 (diff) | |
download | sssd-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.c | 34 |
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, |