test_nss_srv.c revision a3c8390d19593b1e5277d95bfb4ab206d4785150
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek Jakub Hrozek <jhrozek@redhat.com>
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek Copyright (C) 2013 Red Hat
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek SSSD tests: Common utilities for tests that exercise domains
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek This program is free software; you can redistribute it and/or modify
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek it under the terms of the GNU General Public License as published by
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek the Free Software Foundation; either version 3 of the License, or
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek (at your option) any later version.
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek This program is distributed in the hope that it will be useful,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek but WITHOUT ANY WARRANTY; without even the implied warranty of
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek GNU General Public License for more details.
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek You should have received a copy of the GNU General Public License
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek along with this program. If not, see <http://www.gnu.org/licenses/>.
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek/* Mock NSS structure */
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose err = sss_idmap_init(sss_idmap_talloc, nctx, sss_idmap_talloc_free,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov DEBUG(SSSDBG_FATAL_FAILURE, "sss_idmap_init failed.\n");
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek/* Mock reading requests from a client. Use values passed from mock
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozekvoid __real_sss_packet_get_body(struct sss_packet *packet,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozekvoid __wrap_sss_packet_get_body(struct sss_packet *packet,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek enum sss_test_wrapper_call wtype = sss_mock_type(enum sss_test_wrapper_call);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek return __real_sss_packet_get_body(packet, body, blen);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek/* Mock returning result to client. Terminate the unit test instead. */
32b976eb666044d106dd85e27f8d0bb1d7b6cd6cSumit Bosetypedef int (*cmd_cb_fn_t)(uint32_t, uint8_t *, size_t );
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozekvoid __wrap_sss_cmd_done(struct cli_ctx *cctx, void *freectx)
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek __real_sss_packet_get_body(packet, &body, &blen);
32b976eb666044d106dd85e27f8d0bb1d7b6cd6cSumit Bose nss_test_ctx->tctx->error = check_cb(sss_packet_get_status(packet),
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozekenum sss_cli_command __wrap_sss_packet_get_cmd(struct sss_packet *packet)
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozekint __wrap_sss_cmd_send_empty(struct cli_ctx *cctx, TALLOC_CTX *freectx)
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek/* Intercept negative cache lookups */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozekint __real_sss_ncache_check_user(struct sss_nc_ctx *ctx, int ttl,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek struct sss_domain_info *dom, const char *name);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozekint __wrap_sss_ncache_check_user(struct sss_nc_ctx *ctx, int ttl,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek ret = __real_sss_ncache_check_user(ctx, ttl, dom, name);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek/* Mock input from the client library */
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozekstatic void mock_input_user_or_group(const char *username)
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek will_return(__wrap_sss_packet_get_body, WRAP_CALL_WRAPPER);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek will_return(__wrap_sss_packet_get_body, username);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozekstatic void mock_fill_user(void)
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* One packet for the entry and one for num entries */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek will_return(__wrap_sss_packet_get_body, WRAP_CALL_REAL);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek will_return(__wrap_sss_packet_get_body, WRAP_CALL_REAL);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozekstatic void mock_fill_group_with_members(unsigned members)
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek will_return(__wrap_sss_packet_get_body, WRAP_CALL_REAL);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek will_return(__wrap_sss_packet_get_body, WRAP_CALL_REAL);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek if (members == 0) return;
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek will_return(__wrap_sss_packet_get_body, WRAP_CALL_REAL);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Member header , one per member */
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek will_return(__wrap_sss_packet_get_body, WRAP_CALL_REAL);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek for (i=0; i<members; i++) {
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek will_return(__wrap_sss_packet_get_body, WRAP_CALL_REAL);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozekstatic int parse_user_packet(uint8_t *body, size_t blen, struct passwd *pwd)
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek SAFEALIGN_COPY_UINT32(&pwd->pw_uid, body+rp, &rp);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek SAFEALIGN_COPY_UINT32(&pwd->pw_gid, body+rp, &rp);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Sequence of null terminated strings (name, passwd, gecos, dir, shell) */
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozekstatic int parse_group_packet(uint8_t *body, size_t blen, struct group *gr, uint32_t *nmem)
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek size_t rp = 2 * sizeof(uint32_t); /* Len and reserved */
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek SAFEALIGN_COPY_UINT32(&gr->gr_gid, body+rp, &rp);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek gr->gr_mem = talloc_zero_array(nss_test_ctx, char *, *nmem);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek for (i = 0; i < *nmem; i++) {
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek gr->gr_mem[i] = talloc_strdup(gr->gr_mem, (char *) body+rp);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Make sure we exactly matched the end of the packet */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek/* ====================== The tests =============================== */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek/* Check getting cached and valid user from cache. Account callback will
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek * not be called and test_nss_getpwnam_check will make sure the user is
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek * the same as the test entered before starting
32b976eb666044d106dd85e27f8d0bb1d7b6cd6cSumit Bosestatic int test_nss_getpwnam_check(uint32_t status, uint8_t *body, size_t blen)
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Prime the cache with a valid user */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETPWNAM);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Query for that user, call a callback when command finishes */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETPWNAM,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Wait until the test finishes with EOK */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek/* Test that searching for a nonexistant user yields ENOENT.
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek * Account callback will be called
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek assert_true(nss_test_ctx->ncache_hit == false);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETPWNAM,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Wait until the test finishes with ENOENT */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek assert_true(nss_test_ctx->ncache_hit == false);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Test that subsequent search for a nonexistent user yields
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek * ENOENT and Account callback is not called, on the other hand
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek * the ncache functions will be called
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETPWNAM,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Wait until the test finishes with ENOENT */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Negative cache was hit this time */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozekstatic int test_nss_getpwnam_search_acct_cb(void *pvt)
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek struct nss_test_ctx *ctx = talloc_get_type(pvt, struct nss_test_ctx);
32b976eb666044d106dd85e27f8d0bb1d7b6cd6cSumit Bosestatic int test_nss_getpwnam_search_check(uint32_t status,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek assert_string_equal(pwd.pw_name, "testuser_search");
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek mock_account_recv(0, 0, NULL, test_nss_getpwnam_search_acct_cb, nss_test_ctx);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETPWNAM);
b3292840ebaa747a9fd596ff47cc5d18198361d0Michal Zidek ret = sysdb_getpwnam(nss_test_ctx, nss_test_ctx->tctx->dom,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETPWNAM,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Wait until the test finishes with EOK */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* test_nss_getpwnam_search_check will check the user attributes */
b3292840ebaa747a9fd596ff47cc5d18198361d0Michal Zidek ret = sysdb_getpwnam(nss_test_ctx, nss_test_ctx->tctx->dom,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek/* Test that searching for a user that is expired in the cache goes to the DP
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek * which updates the record and the NSS responder returns the updated record
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek * The user's shell attribute is updated.
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozekstatic int test_nss_getpwnam_update_acct_cb(void *pvt)
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek struct nss_test_ctx *ctx = talloc_get_type(pvt, struct nss_test_ctx);
32b976eb666044d106dd85e27f8d0bb1d7b6cd6cSumit Bosestatic int test_nss_getpwnam_update_check(uint32_t status,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek assert_string_equal(pwd.pw_name, "testuser_update");
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Prime the cache with a valid but expired user */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Mock client input */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Mock client command */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETPWNAM);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Call this function when user is updated by the mock DP request */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek mock_account_recv(0, 0, NULL, test_nss_getpwnam_update_acct_cb, nss_test_ctx);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Call this function to check what the responder returned to the client */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Mock output buffer */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Fire the command */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETPWNAM,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Wait until the test finishes with EOK */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Check the user was updated in the cache */
b3292840ebaa747a9fd596ff47cc5d18198361d0Michal Zidek ret = sysdb_getpwnam(nss_test_ctx, nss_test_ctx->tctx->dom,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek shell = ldb_msg_find_attr_as_string(res->msgs[0], SYSDB_SHELL, NULL);
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek/* Check that a FQDN is returned if the domain is FQDN-only and a
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek * FQDN is requested
32b976eb666044d106dd85e27f8d0bb1d7b6cd6cSumit Bosestatic int test_nss_getpwnam_check_fqdn(uint32_t status,
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek nss_test_ctx->cctx->rctx->domains[0].fqnames = false;
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek assert_string_equal(pwd.pw_name, "testuser_fqdn@"TEST_DOM_NAME);
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek /* Prime the cache with a valid user */
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek mock_input_user_or_group("testuser_fqdn@"TEST_DOM_NAME);
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETPWNAM);
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek /* Query for that user, call a callback when command finishes */
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek nss_test_ctx->cctx->rctx->domains[0].fqnames = true;
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETPWNAM,
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek /* Wait until the test finishes with EOK */
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek * Check that FQDN processing is able to handle arbitrarily sized
c86904baad32fbf9e66bf1cdc667aa5e683b48baStef Walterstatic int test_nss_getpwnam_check_fancy_fqdn(uint32_t status,
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek nss_test_ctx->cctx->rctx->domains[0].fqnames = false;
c86904baad32fbf9e66bf1cdc667aa5e683b48baStef Walter assert_string_equal(pwd.pw_name, "testuser_fqdn_fancy@@@@@"TEST_DOM_NAME);
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek /* Prime the cache with a valid user */
c86904baad32fbf9e66bf1cdc667aa5e683b48baStef Walter mock_input_user_or_group("testuser_fqdn_fancy@"TEST_DOM_NAME);
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETPWNAM);
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek /* Query for that user, call a callback when command finishes */
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek nss_test_ctx->cctx->rctx->domains[0].fqnames = true;
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETPWNAM,
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek /* Wait until the test finishes with EOK */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek/* Testsuite setup and teardown */
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozekvoid test_nss_setup(struct sss_test_conf_param params[],
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek nss_test_ctx = talloc_zero(NULL, struct nss_test_ctx);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek nss_test_ctx->tctx = create_dom_test_ctx(nss_test_ctx, TESTS_PATH, TEST_CONF_DB,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* FIXME - perhaps this should be folded into sssd_domain_init or stricty
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek * used together
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek ret = sss_names_init(nss_test_ctx, nss_test_ctx->tctx->confdb,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek TEST_DOM_NAME, &nss_test_ctx->tctx->dom->names);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Initialize the NSS responder */
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose ret = sss_names_init(nss_test_ctx->nctx, nss_test_ctx->tctx->confdb,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose assert_non_null(nss_test_ctx->nctx->global_names);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek nss_test_ctx->rctx = mock_rctx(nss_test_ctx, nss_test_ctx->tctx->ev,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Create client context */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek nss_test_ctx->cctx = mock_cctx(nss_test_ctx, nss_test_ctx->rctx);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozekstatic int test_nss_getgrnam_check(struct group *expected, struct group *gr, const int nmem)
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek assert_int_equal(gr->gr_gid, expected->gr_gid);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek assert_string_equal(gr->gr_name, expected->gr_name);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek assert_string_equal(gr->gr_passwd, expected->gr_passwd);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek for (i = 0; i < nmem; i++) {
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek assert_string_equal(gr->gr_mem[i], expected->gr_mem[i]);
32b976eb666044d106dd85e27f8d0bb1d7b6cd6cSumit Bosestatic int test_nss_getgrnam_no_members_check(uint32_t status,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek ret = parse_group_packet(body, blen, &gr, &nmem);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek ret = test_nss_getgrnam_check(&expected, &gr, nmem);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek/* Test that requesting a valid, cached group with no members returns a valid
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek * group structure
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Prime the cache with a valid group */
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETGRNAM);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Query for that group, call a callback when command finishes */
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek set_cmd_cb(test_nss_getgrnam_no_members_check);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETGRNAM,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Wait until the test finishes with EOK */
32b976eb666044d106dd85e27f8d0bb1d7b6cd6cSumit Bosestatic int test_nss_getgrnam_members_check(uint32_t status,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek const char *exp_members[] = { "testmember1", "testmember2" };
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek ret = parse_group_packet(body, blen, &gr, &nmem);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek ret = test_nss_getgrnam_check(&expected, &gr, nmem);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek/* Test that requesting a valid, cached group with some members returns a valid
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek * group structure with those members present
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Prime the cache with a valid group and some members */
d115f40c7a3999e3cbe705a2ff9cf0fd493f80fbMichal Zidek ret = sysdb_add_group_member(nss_test_ctx->tctx->dom,
d115f40c7a3999e3cbe705a2ff9cf0fd493f80fbMichal Zidek ret = sysdb_add_group_member(nss_test_ctx->tctx->dom,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETGRNAM);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Query for that group, call a callback when command finishes */
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETGRNAM,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Wait until the test finishes with EOK */
32b976eb666044d106dd85e27f8d0bb1d7b6cd6cSumit Bosestatic int test_nss_getgrnam_members_check_fqdn(uint32_t status,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek const char *exp_members[] = { "testmember1@"TEST_DOM_NAME,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek .gr_name = discard_const("testgroup_members@"TEST_DOM_NAME),
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek ret = parse_group_packet(body, blen, &gr, &nmem);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek ret = test_nss_getgrnam_check(&expected, &gr, nmem);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek/* Test that requesting a valid, cached group with some members returns a valid
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek * group structure with those members present as fully qualified names
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozekvoid test_nss_getgrnam_members_fqdn(void **state)
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek mock_input_user_or_group("testgroup_members@"TEST_DOM_NAME);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETGRNAM);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Query for that group, call a callback when command finishes */
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek set_cmd_cb(test_nss_getgrnam_members_check_fqdn);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETGRNAM,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Wait until the test finishes with EOK */
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Restore FQDN settings */
32b976eb666044d106dd85e27f8d0bb1d7b6cd6cSumit Bosestatic int test_nss_getgrnam_members_check_subdom(uint32_t status,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek const char *exp_members[] = { "submember1@"TEST_SUBDOM_NAME,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek .gr_name = discard_const("testsubdomgroup@"TEST_SUBDOM_NAME),
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek ret = parse_group_packet(body, blen, &gr, &nmem);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek ret = test_nss_getgrnam_check(&expected, &gr, nmem);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek/* Test that requesting a valid, cached group with some members returns a valid
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek * group structure with those members present as fully qualified names
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozekvoid test_nss_getgrnam_members_subdom(void **state)
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Add a group from a subdomain and two members from the same subdomain
d115f40c7a3999e3cbe705a2ff9cf0fd493f80fbMichal Zidek ret = sysdb_add_group_member(nss_test_ctx->subdom,
d115f40c7a3999e3cbe705a2ff9cf0fd493f80fbMichal Zidek ret = sysdb_add_group_member(nss_test_ctx->subdom,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek mock_input_user_or_group("testsubdomgroup@"TEST_SUBDOM_NAME);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETGRNAM);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Query for that group, call a callback when command finishes */
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek set_cmd_cb(test_nss_getgrnam_members_check_subdom);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETGRNAM,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Wait until the test finishes with EOK */
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek /* Restore FQDN settings */
32b976eb666044d106dd85e27f8d0bb1d7b6cd6cSumit Bosestatic int test_nss_getgrnam_check_mix_dom(uint32_t status,
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek "testmember2",
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek ret = parse_group_packet(body, blen, &gr, &nmem);
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek ret = test_nss_getgrnam_check(&expected, &gr, nmem);
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek /* Add a subdomain user to a parent domain group */
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek "testgroup_members");
d115f40c7a3999e3cbe705a2ff9cf0fd493f80fbMichal Zidek ret = sysdb_update_members_dn(nss_test_ctx->subdom,
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETGRNAM);
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek /* Query for that group, call a callback when command finishes */
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETGRNAM,
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek /* Wait until the test finishes with EOK */
32b976eb666044d106dd85e27f8d0bb1d7b6cd6cSumit Bosestatic int test_nss_getgrnam_check_mix_dom_fqdn(uint32_t status,
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek const char *exp_members[] = { "testmember1@"TEST_DOM_NAME,
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek .gr_name = discard_const("testgroup_members@"TEST_DOM_NAME),
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek ret = parse_group_packet(body, blen, &gr, &nmem);
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek ret = test_nss_getgrnam_check(&expected, &gr, nmem);
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozekvoid test_nss_getgrnam_mix_dom_fqdn(void **state)
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek mock_input_user_or_group("testgroup_members@"TEST_DOM_NAME);
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETGRNAM);
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek /* Query for that group, call a callback when command finishes */
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek set_cmd_cb(test_nss_getgrnam_check_mix_dom_fqdn);
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETGRNAM,
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek /* Wait until the test finishes with EOK */
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek /* Restore FQDN settings */
32b976eb666044d106dd85e27f8d0bb1d7b6cd6cSumit Bosestatic int test_nss_getgrnam_check_mix_subdom(uint32_t status,
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek const char *exp_members[] = { "submember1@"TEST_SUBDOM_NAME,
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek .gr_name = discard_const("testsubdomgroup@"TEST_SUBDOM_NAME),
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek ret = parse_group_packet(body, blen, &gr, &nmem);
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek ret = test_nss_getgrnam_check(&expected, &gr, nmem);
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek /* Add a subdomain user to a parent domain group */
d115f40c7a3999e3cbe705a2ff9cf0fd493f80fbMichal Zidek ret = sysdb_update_members_dn(nss_test_ctx->tctx->dom,
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek "testmember1",
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek mock_input_user_or_group("testsubdomgroup@"TEST_SUBDOM_NAME);
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETGRNAM);
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek /* Query for that group, call a callback when command finishes */
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek set_cmd_cb(test_nss_getgrnam_check_mix_subdom);
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETGRNAM,
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek /* Wait until the test finishes with EOK */
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bosestatic int test_nss_well_known_sid_check(uint32_t status,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose const char *name;
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose char *expected_result = sss_mock_ptr_type(char *);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bosevoid test_nss_well_known_getnamebysid(void **state)
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, WRAP_CALL_WRAPPER);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, "S-1-5-32-550");
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETNAMEBYSID);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, WRAP_CALL_REAL);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(test_nss_well_known_sid_check, "Print Operators@BUILTIN");
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETNAMEBYSID,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose /* Wait until the test finishes with EOK */
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bosevoid test_nss_well_known_getnamebysid_special(void **state)
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, WRAP_CALL_WRAPPER);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, "S-1-2-0");
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETNAMEBYSID);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, WRAP_CALL_REAL);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(test_nss_well_known_sid_check, "LOCAL@LOCAL AUTHORITY");
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETNAMEBYSID,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose /* Wait until the test finishes with EOK */
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bosevoid test_nss_well_known_getnamebysid_non_existing(void **state)
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, WRAP_CALL_WRAPPER);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, "S-1-5-32-123");
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETNAMEBYSID);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(test_nss_well_known_sid_check, NULL);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETNAMEBYSID,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose /* Wait until the test finishes with EOK */
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bosevoid test_nss_well_known_getidbysid_failure(void **state)
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, WRAP_CALL_WRAPPER);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, "S-1-5-32-550");
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETIDBYSID);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(test_nss_well_known_sid_check, NULL);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETIDBYSID,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose /* Wait until the test finishes with EOK */
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bosevoid test_nss_well_known_getsidbyname(void **state)
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, WRAP_CALL_WRAPPER);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, "Cryptographic Operators@BUILTIN");
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETSIDBYNAME);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, WRAP_CALL_REAL);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(test_nss_well_known_sid_check, "S-1-5-32-569");
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETSIDBYNAME,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose /* Wait until the test finishes with EOK */
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bosevoid test_nss_well_known_getsidbyname_nonexisting(void **state)
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, WRAP_CALL_WRAPPER);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, "Abc@BUILTIN");
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETSIDBYNAME);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(test_nss_well_known_sid_check, NULL);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETSIDBYNAME,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose /* Wait until the test finishes with EOK */
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bosevoid test_nss_well_known_getsidbyname_special(void **state)
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, WRAP_CALL_WRAPPER);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, "CREATOR OWNER@CREATOR AUTHORITY");
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_cmd, SSS_NSS_GETSIDBYNAME);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(__wrap_sss_packet_get_body, WRAP_CALL_REAL);
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose will_return(test_nss_well_known_sid_check, "S-1-3-0");
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose ret = sss_cmd_execute(nss_test_ctx->cctx, SSS_NSS_GETSIDBYNAME,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose /* Wait until the test finishes with EOK */
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek const char *const testdom[4] = { TEST_SUBDOM_NAME, "TEST.SUB", "test", "S-3" };
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek subdomain = new_subdomain(nss_test_ctx, nss_test_ctx->tctx->dom,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek testdom[0], testdom[1], testdom[2], testdom[3],
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek false, false, NULL);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek ret = sysdb_subdomain_store(nss_test_ctx->tctx->sysdb,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek testdom[0], testdom[1], testdom[2], testdom[3],
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek false, false, NULL);
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek ret = sysdb_update_subdomains(nss_test_ctx->tctx->dom);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek {"no-cleanup", 'n', POPT_ARG_NONE, &no_cleanup, 0,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek _("Do not delete the test database after a test run"), NULL },
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek unit_test_setup_teardown(test_nss_getpwnam_neg,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek unit_test_setup_teardown(test_nss_getpwnam_search,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek unit_test_setup_teardown(test_nss_getpwnam_update,
777374243e15c53e7b0a7345e190c1018920be18Jakub Hrozek unit_test_setup_teardown(test_nss_getpwnam_fqdn,
c86904baad32fbf9e66bf1cdc667aa5e683b48baStef Walter unit_test_setup_teardown(test_nss_getpwnam_fqdn_fancy,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek unit_test_setup_teardown(test_nss_getgrnam_no_members,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek unit_test_setup_teardown(test_nss_getgrnam_members,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek unit_test_setup_teardown(test_nss_getgrnam_members_fqdn,
34926c3809b19f9e70f18931e44bf993321647a8Jakub Hrozek unit_test_setup_teardown(test_nss_getgrnam_members_subdom,
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek unit_test_setup_teardown(test_nss_getgrnam_mix_dom,
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek unit_test_setup_teardown(test_nss_getgrnam_mix_dom_fqdn,
000e61bb652400215a9a851d3630cdc7307af398Jakub Hrozek unit_test_setup_teardown(test_nss_getgrnam_mix_subdom,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose unit_test_setup_teardown(test_nss_well_known_getnamebysid,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose unit_test_setup_teardown(test_nss_well_known_getnamebysid_special,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose unit_test_setup_teardown(test_nss_well_known_getnamebysid_non_existing,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose unit_test_setup_teardown(test_nss_well_known_getidbysid_failure,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose unit_test_setup_teardown(test_nss_well_known_getsidbyname,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose unit_test_setup_teardown(test_nss_well_known_getsidbyname_nonexisting,
36c266d467e9105041b33e9b1cdcd9ff073d893eSumit Bose unit_test_setup_teardown(test_nss_well_known_getsidbyname_special,
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Set debug level to invalid value so we can deside if -d 0 was used. */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek pc = poptGetContext(argv[0], argc, argv, long_options, 0);
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek /* Even though normally the tests should clean up after themselves
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek * they might not after a failed run. Remove the old db to be sure */
150b76e13b7c4f3ccf1d709bf517ca2af6b2c9a2Jakub Hrozek test_dom_suite_cleanup(TESTS_PATH, TEST_CONF_DB, TEST_SYSDB_FILE);