test_responder_cache_req.c revision 28ebfa4373d1e7ce45b5d70a3619df1c074a661e
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina/*
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina Authors:
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina Pavel Březina <pbrezina@redhat.com>
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina Copyright (C) 2014 Red Hat
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina This program is free software; you can redistribute it and/or modify
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina it under the terms of the GNU General Public License as published by
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina the Free Software Foundation; either version 3 of the License, or
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina (at your option) any later version.
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina This program is distributed in the hope that it will be useful,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina but WITHOUT ANY WARRANTY; without even the implied warranty of
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina GNU General Public License for more details.
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina You should have received a copy of the GNU General Public License
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina along with this program. If not, see <http://www.gnu.org/licenses/>.
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina*/
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina#include <talloc.h>
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina#include <tevent.h>
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina#include <errno.h>
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina#include <popt.h>
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina#include "tests/cmocka/common_mock.h"
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina#include "tests/cmocka/common_mock_resp.h"
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina#include "db/sysdb.h"
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina#include "responder/common/responder_cache_req.h"
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
50c9d542e8bf641412debaa82a4dcf67ddb72258Lukas Slebodnik#define TESTS_PATH "tp_" BASE_FILE_STEM
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina#define TEST_CONF_DB "test_responder_cache_req_conf.ldb"
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina#define TEST_DOM_NAME "responder_cache_req_test"
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina#define TEST_ID_PROVIDER "ldap"
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
bbc34d5a6e84d6c337bd89a22d33e365eb466226Pavel Březina#define TEST_USER_NAME "test-user"
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina#define TEST_UPN "upn@upndomain.com"
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina#define TEST_USER_ID 1000
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina#define TEST_GROUP_NAME "test-group"
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina#define TEST_GROUP_ID 1000
bbc34d5a6e84d6c337bd89a22d33e365eb466226Pavel Březina
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek#define TEST_USER_NAME2 "test-user2"
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek#define TEST_GROUP_NAME2 "test-group2"
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina#define new_single_domain_test(test) \
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek cmocka_unit_test_setup_teardown(test_ ## test, \
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek test_single_domain_setup, \
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek test_single_domain_teardown)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina#define new_multi_domain_test(test) \
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek cmocka_unit_test_setup_teardown(test_ ## test, \
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek test_multi_domain_setup, \
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek test_multi_domain_teardown)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březinastruct cache_req_test_ctx {
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct sss_test_ctx *tctx;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct resp_ctx *rctx;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct sss_nc_ctx *ncache;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct ldb_result *result;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct sss_domain_info *domain;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina char *name;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina bool dp_called;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina bool create_user;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina bool create_group;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina};
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březinaconst char *domains[] = {"responder_cache_req_test_a",
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina "responder_cache_req_test_b",
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina "responder_cache_req_test_c",
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina "responder_cache_req_test_d",
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina NULL};
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březinastruct cli_protocol_version *register_cli_protocol_version(void)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina static struct cli_protocol_version version[] = {
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina { 0, NULL, NULL }
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina };
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina return version;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březinastruct tevent_req *
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina__wrap_sss_dp_get_account_send(TALLOC_CTX *mem_ctx,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct resp_ctx *rctx,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct sss_domain_info *dom,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina bool fast_reply,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina enum sss_dp_acct_type type,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina const char *opt_name,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina uint32_t opt_id,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina const char *extra)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct sysdb_attrs *attrs = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct cache_req_test_ctx *ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina errno_t ret;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ctx = sss_mock_ptr_type(struct cache_req_test_ctx*);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ctx->dp_called = true;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina if (ctx->create_user) {
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina attrs = sysdb_new_attrs(ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(attrs);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = sysdb_attrs_add_string(attrs, SYSDB_UPN, TEST_UPN);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, EOK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
bbc34d5a6e84d6c337bd89a22d33e365eb466226Pavel Březina ret = sysdb_store_user(ctx->tctx->dom, TEST_USER_NAME, "pwd",
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina TEST_USER_ID, 1000, NULL, NULL, NULL,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina "cn=test-user,dc=test", attrs, NULL,
bbc34d5a6e84d6c337bd89a22d33e365eb466226Pavel Březina 1000, time(NULL));
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, EOK);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina }
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina if (ctx->create_group) {
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ret = sysdb_store_group(ctx->tctx->dom, TEST_GROUP_NAME,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina TEST_GROUP_ID, NULL, 1000, time(NULL));
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(ret, EOK);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina }
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina return test_req_succeed_send(mem_ctx, rctx->ev);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březinastatic void cache_req_user_by_name_test_done(struct tevent_req *req)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct cache_req_test_ctx *ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ctx = tevent_req_callback_data(req, struct cache_req_test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ctx->tctx->error = cache_req_user_by_name_recv(ctx, req,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina &ctx->result,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina &ctx->domain,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina &ctx->name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina talloc_zfree(req);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ctx->tctx->done = true;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březinastatic void cache_req_user_by_id_test_done(struct tevent_req *req)
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina{
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct cache_req_test_ctx *ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ctx = tevent_req_callback_data(req, struct cache_req_test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ctx->tctx->error = cache_req_user_by_id_recv(ctx, req,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina &ctx->result, &ctx->domain);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina talloc_zfree(req);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ctx->tctx->done = true;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina}
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březinastatic void cache_req_group_by_name_test_done(struct tevent_req *req)
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina{
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct cache_req_test_ctx *ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ctx = tevent_req_callback_data(req, struct cache_req_test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ctx->tctx->error = cache_req_group_by_name_recv(ctx, req,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina &ctx->result,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina &ctx->domain,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina &ctx->name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina talloc_zfree(req);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ctx->tctx->done = true;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina}
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březinastatic void cache_req_group_by_id_test_done(struct tevent_req *req)
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina{
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct cache_req_test_ctx *ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ctx = tevent_req_callback_data(req, struct cache_req_test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ctx->tctx->error = cache_req_group_by_id_recv(ctx, req,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina &ctx->result, &ctx->domain);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina talloc_zfree(req);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ctx->tctx->done = true;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina}
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozekstatic int test_single_domain_setup(void **state)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina errno_t ret;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_dom_suite_setup(TESTS_PATH);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx = talloc_zero(NULL, struct cache_req_test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina *state = test_ctx;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->tctx = create_dom_test_ctx(test_ctx, TESTS_PATH, TEST_CONF_DB,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina TEST_DOM_NAME, TEST_ID_PROVIDER, NULL);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->tctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->rctx = mock_rctx(test_ctx, test_ctx->tctx->ev,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->tctx->dom, NULL);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->rctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = sss_ncache_init(test_ctx, &test_ctx->ncache);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, EOK);
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek return 0;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozekstatic int test_single_domain_teardown(void **state)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina talloc_zfree(*state);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_dom_suite_cleanup(TESTS_PATH, TEST_CONF_DB, TEST_DOM_NAME);
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek return 0;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozekstatic int test_multi_domain_setup(void **state)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina errno_t ret;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_dom_suite_setup(TESTS_PATH);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx = talloc_zero(NULL, struct cache_req_test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina *state = test_ctx;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->tctx = create_multidom_test_ctx(test_ctx, TESTS_PATH,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina TEST_CONF_DB, domains,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina TEST_ID_PROVIDER, NULL);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->tctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->rctx = mock_rctx(test_ctx, test_ctx->tctx->ev,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->tctx->dom, NULL);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->rctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = sss_ncache_init(test_ctx, &test_ctx->ncache);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, EOK);
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek return 0;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozekstatic int test_multi_domain_teardown(void **state)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina talloc_zfree(*state);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_multidom_suite_cleanup(TESTS_PATH, TEST_CONF_DB, domains);
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek return 0;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březinavoid test_user_by_name_multiple_domains_found(void **state)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct sss_domain_info *domain = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct tevent_req *req = NULL;
bbc34d5a6e84d6c337bd89a22d33e365eb466226Pavel Březina const char *name = TEST_USER_NAME;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina const char *ldbname = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina errno_t ret;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina domain = find_domain_by_name(test_ctx->tctx->dom,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina "responder_cache_req_test_d", true);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(domain);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = sysdb_store_user(domain, name, "pwd", 1000, 1000,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina NULL, NULL, NULL, "cn=test-user,dc=test", NULL,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina NULL, 1000, time(NULL));
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, EOK);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina check_leaks_push(req_mem_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina will_return_always(__wrap_sss_dp_get_account_send, test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina will_return_always(sss_dp_get_account_recv, 0);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_parse_inp(name, NULL, ERR_OK);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina NULL, name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(req);
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = test_ev_loop(test_ctx->tctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, ERR_OK);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_true(test_ctx->dp_called);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(test_ctx->result->count, 1);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result->msgs);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina SYSDB_NAME, NULL);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(ldbname);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_string_equal(ldbname, name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->domain);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_string_equal(domain->name, test_ctx->domain->name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březinavoid test_user_by_name_multiple_domains_notfound(void **state)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct tevent_req *req = NULL;
bbc34d5a6e84d6c337bd89a22d33e365eb466226Pavel Březina const char *name = TEST_USER_NAME;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina errno_t ret;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina check_leaks_push(req_mem_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina will_return_always(__wrap_sss_dp_get_account_send, test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina will_return_always(sss_dp_get_account_recv, 0);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_parse_inp(name, NULL, ERR_OK);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina NULL, name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(req);
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = test_ev_loop(test_ctx->tctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, ENOENT);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_true(test_ctx->dp_called);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březinavoid test_user_by_name_multiple_domains_parse(void **state)
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina{
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina struct sss_domain_info *domain = NULL;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina struct tevent_req *req = NULL;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina const char *name = TEST_USER_NAME;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina const char *fqn = NULL;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina const char *ldbname = NULL;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina uid_t uid = 2000;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina uid_t ldbuid;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina errno_t ret;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina /* Add user to the first domain. */
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina domain = find_domain_by_name(test_ctx->tctx->dom,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina "responder_cache_req_test_a", true);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(domain);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina ret = sysdb_store_user(domain, name, "pwd", 1000, 1000,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina NULL, NULL, NULL, "cn=test-user,dc=test", NULL,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina NULL, 1000, time(NULL));
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_int_equal(ret, EOK);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina /* Add user to the last domain, with different uid. */
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina domain = find_domain_by_name(test_ctx->tctx->dom,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina "responder_cache_req_test_d", true);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(domain);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina ret = sysdb_store_user(domain, name, "pwd", uid, 1000,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina NULL, NULL, NULL, "cn=test-user,dc=test", NULL,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina NULL, 1000, time(NULL));
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_int_equal(ret, EOK);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina /* Append domain name to the username. */
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina fqn = talloc_asprintf(test_ctx, "%s@%s", name,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina "responder_cache_req_test_d");
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(fqn);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina /* Test. */
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina check_leaks_push(req_mem_ctx);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_parse_inp(name, "responder_cache_req_test_d", ERR_OK);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina NULL, fqn);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(req);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina ret = test_ev_loop(test_ctx->tctx);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_int_equal(ret, ERR_OK);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_false(test_ctx->dp_called);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(test_ctx->result);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_int_equal(test_ctx->result->count, 1);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(test_ctx->result->msgs);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina SYSDB_NAME, NULL);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(ldbname);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_string_equal(ldbname, name);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina ldbuid = ldb_msg_find_attr_as_uint(test_ctx->result->msgs[0],
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina SYSDB_UIDNUM, 0);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_int_equal(ldbuid, uid);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(test_ctx->domain);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_string_equal(domain->name, test_ctx->domain->name);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(test_ctx->name);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_string_equal(name, test_ctx->name);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina}
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březinavoid test_user_by_name_cache_valid(void **state)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct tevent_req *req = NULL;
bbc34d5a6e84d6c337bd89a22d33e365eb466226Pavel Březina const char *name = TEST_USER_NAME;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina const char *ldbname = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina errno_t ret;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = sysdb_store_user(test_ctx->tctx->dom, name, "pwd", 1000, 1000,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina NULL, NULL, NULL, "cn=test-user,dc=test", NULL,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina NULL, 1000, time(NULL));
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, EOK);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina check_leaks_push(req_mem_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->tctx->dom->name, name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(req);
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = test_ev_loop(test_ctx->tctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, ERR_OK);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(test_ctx->result->count, 1);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result->msgs);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina SYSDB_NAME, NULL);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(ldbname);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_string_equal(ldbname, name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březinavoid test_user_by_name_cache_expired(void **state)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct tevent_req *req = NULL;
bbc34d5a6e84d6c337bd89a22d33e365eb466226Pavel Březina const char *name = TEST_USER_NAME;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina const char *ldbname = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina errno_t ret;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = sysdb_store_user(test_ctx->tctx->dom, name, "pwd", 1000, 1000,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina NULL, NULL, NULL, "cn=test-user,dc=test", NULL,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina NULL, -1000, time(NULL));
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, EOK);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina check_leaks_push(req_mem_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina /* DP should be contacted */
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina mock_account_recv_simple();
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->tctx->dom->name, name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(req);
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = test_ev_loop(test_ctx->tctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, ERR_OK);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_true(test_ctx->dp_called);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(test_ctx->result->count, 1);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result->msgs);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina SYSDB_NAME, NULL);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(ldbname);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_string_equal(ldbname, name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březinavoid test_user_by_name_cache_midpoint(void **state)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct tevent_req *req = NULL;
bbc34d5a6e84d6c337bd89a22d33e365eb466226Pavel Březina const char *name = TEST_USER_NAME;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina const char *ldbname = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina errno_t ret;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = sysdb_store_user(test_ctx->tctx->dom, name, "pwd", 1000, 1000,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina NULL, NULL, NULL, "cn=test-user,dc=test", NULL,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina NULL, 50, time(NULL) - 26);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, EOK);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina check_leaks_push(req_mem_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina /* DP should be contacted without callback */
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 50,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->tctx->dom->name, name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(req);
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = test_ev_loop(test_ctx->tctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, ERR_OK);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_true(test_ctx->dp_called);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(test_ctx->result->count, 1);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result->msgs);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina SYSDB_NAME, NULL);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(ldbname);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_string_equal(ldbname, name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březinavoid test_user_by_name_ncache(void **state)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct tevent_req *req = NULL;
bbc34d5a6e84d6c337bd89a22d33e365eb466226Pavel Březina const char *name = TEST_USER_NAME;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina errno_t ret;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = sss_ncache_set_user(test_ctx->ncache, false,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->tctx->dom, name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, EOK);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina check_leaks_push(req_mem_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->tctx->dom->name, name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(req);
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = test_ev_loop(test_ctx->tctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, ENOENT);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_false(test_ctx->dp_called);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březinavoid test_user_by_name_missing_found(void **state)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct tevent_req *req = NULL;
bbc34d5a6e84d6c337bd89a22d33e365eb466226Pavel Březina const char *name = TEST_USER_NAME;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina const char *ldbname = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina errno_t ret;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina check_leaks_push(req_mem_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina mock_account_recv_simple();
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->create_user = true;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->tctx->dom->name, name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(req);
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = test_ev_loop(test_ctx->tctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, ERR_OK);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_true(test_ctx->dp_called);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(test_ctx->result->count, 1);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result->msgs);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina SYSDB_NAME, NULL);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(ldbname);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_string_equal(ldbname, name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březinavoid test_user_by_name_missing_notfound(void **state)
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct tevent_req *req = NULL;
bbc34d5a6e84d6c337bd89a22d33e365eb466226Pavel Březina const char *name = TEST_USER_NAME;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina errno_t ret;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina check_leaks_push(req_mem_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina mock_account_recv_simple();
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_ctx->tctx->dom->name, name);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_non_null(req);
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina ret = test_ev_loop(test_ctx->tctx);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_int_equal(ret, ENOENT);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina assert_true(test_ctx->dp_called);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březinavoid test_user_by_upn_multiple_domains_found(void **state)
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina{
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct sysdb_attrs *attrs = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct sss_domain_info *domain = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct tevent_req *req = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *name = TEST_USER_NAME;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *upn = TEST_UPN;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *ldbname = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina errno_t ret;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina domain = find_domain_by_name(test_ctx->tctx->dom,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina "responder_cache_req_test_d", true);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(domain);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina attrs = sysdb_new_attrs(test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(attrs);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = sysdb_attrs_add_string(attrs, SYSDB_UPN, upn);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, EOK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = sysdb_store_user(domain, name, "pwd", 1000, 1000,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, NULL, NULL, "cn=test-user,dc=test", attrs,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, 1000, time(NULL));
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, EOK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina check_leaks_push(req_mem_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina will_return_always(__wrap_sss_dp_get_account_send, test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina will_return_always(sss_dp_get_account_recv, 0);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_parse_inp(NULL, NULL, ERR_DOMAIN_NOT_FOUND);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, upn);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(req);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = test_ev_loop(test_ctx->tctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, ERR_OK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_true(test_ctx->dp_called);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(test_ctx->result->count, 1);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result->msgs);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result->msgs[0]);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina SYSDB_NAME, NULL);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(ldbname);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_string_equal(ldbname, name);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->domain);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_string_equal(domain->name, test_ctx->domain->name);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina}
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březinavoid test_user_by_upn_multiple_domains_notfound(void **state)
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina{
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct tevent_req *req = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *upn = TEST_UPN;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina errno_t ret;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina check_leaks_push(req_mem_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina will_return_always(__wrap_sss_dp_get_account_send, test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina will_return_always(sss_dp_get_account_recv, 0);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_parse_inp(NULL, NULL, ERR_DOMAIN_NOT_FOUND);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, upn);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(req);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = test_ev_loop(test_ctx->tctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, ENOENT);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_true(test_ctx->dp_called);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina}
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březinavoid test_user_by_upn_cache_valid(void **state)
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina{
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct sysdb_attrs *attrs = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct tevent_req *req = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *name = TEST_USER_NAME;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *upn = TEST_UPN;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *ldbname = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina errno_t ret;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina attrs = sysdb_new_attrs(test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(attrs);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = sysdb_attrs_add_string(attrs, SYSDB_UPN, upn);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, EOK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = sysdb_store_user(test_ctx->tctx->dom, name, "pwd", 1000, 1000,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, NULL, NULL, "cn=test-user,dc=test", attrs,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, 1000, time(NULL));
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, EOK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina check_leaks_push(req_mem_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_parse_inp(NULL, NULL, ERR_DOMAIN_NOT_FOUND);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, upn);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(req);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = test_ev_loop(test_ctx->tctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, ERR_OK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(test_ctx->result->count, 1);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result->msgs);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result->msgs[0]);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina SYSDB_NAME, NULL);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(ldbname);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_string_equal(ldbname, name);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina}
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březinavoid test_user_by_upn_cache_expired(void **state)
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina{
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct sysdb_attrs *attrs = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct tevent_req *req = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *name = TEST_USER_NAME;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *upn = TEST_UPN;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *ldbname = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina errno_t ret;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina attrs = sysdb_new_attrs(test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(attrs);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = sysdb_attrs_add_string(attrs, SYSDB_UPN, upn);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, EOK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = sysdb_store_user(test_ctx->tctx->dom, name, "pwd", 1000, 1000,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, NULL, NULL, "cn=test-user,dc=test", attrs,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, -1000, time(NULL));
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, EOK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina check_leaks_push(req_mem_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina /* DP should be contacted */
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_account_recv_simple();
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_parse_inp(NULL, NULL, ERR_DOMAIN_NOT_FOUND);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, upn);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(req);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = test_ev_loop(test_ctx->tctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, ERR_OK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_true(test_ctx->dp_called);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(test_ctx->result->count, 1);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result->msgs);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result->msgs[0]);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina SYSDB_NAME, NULL);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(ldbname);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_string_equal(ldbname, name);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina}
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březinavoid test_user_by_upn_cache_midpoint(void **state)
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina{
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct tevent_req *req = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct sysdb_attrs *attrs = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *upn = TEST_UPN;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *name = TEST_USER_NAME;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *ldbname = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina errno_t ret;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina attrs = sysdb_new_attrs(test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(attrs);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = sysdb_attrs_add_string(attrs, SYSDB_UPN, upn);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, EOK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = sysdb_store_user(test_ctx->tctx->dom, name, "pwd", 1000, 1000,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, NULL, NULL, "cn=test-user,dc=test", attrs,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, 50, time(NULL) - 26);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, EOK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina check_leaks_push(req_mem_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina /* DP should be contacted without callback */
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_parse_inp(NULL, NULL, ERR_DOMAIN_NOT_FOUND);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx->rctx, test_ctx->ncache, 10, 50,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, upn);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(req);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = test_ev_loop(test_ctx->tctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, ERR_OK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_true(test_ctx->dp_called);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(test_ctx->result->count, 1);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result->msgs);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result->msgs[0]);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina SYSDB_NAME, NULL);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(ldbname);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_string_equal(ldbname, name);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina}
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březinavoid test_user_by_upn_ncache(void **state)
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina{
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct tevent_req *req = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *upn = TEST_UPN;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina errno_t ret;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = sss_ncache_set_user(test_ctx->ncache, false,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx->tctx->dom, upn);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, EOK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina check_leaks_push(req_mem_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_parse_inp(NULL, NULL, ERR_DOMAIN_NOT_FOUND);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, upn);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(req);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = test_ev_loop(test_ctx->tctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, ENOENT);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_false(test_ctx->dp_called);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina}
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březinavoid test_user_by_upn_missing_found(void **state)
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina{
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct tevent_req *req = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *upn = TEST_UPN;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *name = TEST_USER_NAME;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *ldbname = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina errno_t ret;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina check_leaks_push(req_mem_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_account_recv_simple();
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_parse_inp(NULL, NULL, ERR_DOMAIN_NOT_FOUND);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx->create_user = true;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, upn);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(req);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = test_ev_loop(test_ctx->tctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, ERR_OK);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_true(test_ctx->dp_called);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(test_ctx->result->count, 1);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result->msgs);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(test_ctx->result->msgs[0]);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina SYSDB_NAME, NULL);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(ldbname);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_string_equal(ldbname, name);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina}
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březinavoid test_user_by_upn_missing_notfound(void **state)
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina{
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina struct tevent_req *req = NULL;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina const char *upn = TEST_UPN;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina errno_t ret;
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina check_leaks_push(req_mem_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_account_recv_simple();
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_parse_inp(NULL, NULL, ERR_DOMAIN_NOT_FOUND);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina req = cache_req_user_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina NULL, upn);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_non_null(req);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina tevent_req_set_callback(req, cache_req_user_by_name_test_done, test_ctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina ret = test_ev_loop(test_ctx->tctx);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_int_equal(ret, ENOENT);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina assert_true(test_ctx->dp_called);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina}
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březinavoid test_user_by_id_multiple_domains_found(void **state)
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina{
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct sss_domain_info *domain = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct tevent_req *req = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina const char *name = TEST_USER_NAME;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina uid_t uid = TEST_USER_ID;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina const char *ldbname = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina uid_t ldbuid;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina errno_t ret;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina domain = find_domain_by_name(test_ctx->tctx->dom,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina "responder_cache_req_test_d", true);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(domain);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ret = sysdb_store_user(domain, name, "pwd", uid, 1000,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina NULL, NULL, NULL, "cn=test-user,dc=test", NULL,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina NULL, 1000, time(NULL));
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ret, EOK);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina check_leaks_push(req_mem_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina will_return_always(__wrap_sss_dp_get_account_send, test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina will_return_always(sss_dp_get_account_recv, 0);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req = cache_req_user_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina NULL, uid);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(req);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina tevent_req_set_callback(req, cache_req_user_by_id_test_done, test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ret = test_ev_loop(test_ctx->tctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ret, ERR_OK);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_true(test_ctx->dp_called);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(test_ctx->result->count, 1);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result->msgs);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina SYSDB_NAME, NULL);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(ldbname);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_string_equal(ldbname, name);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ldbuid = ldb_msg_find_attr_as_uint(test_ctx->result->msgs[0],
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina SYSDB_UIDNUM, 0);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ldbuid, uid);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->domain);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_string_equal(domain->name, test_ctx->domain->name);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina}
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březinavoid test_user_by_id_multiple_domains_notfound(void **state)
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina{
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct tevent_req *req = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina uid_t uid = TEST_USER_ID;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina errno_t ret;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina check_leaks_push(req_mem_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina will_return_always(__wrap_sss_dp_get_account_send, test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina will_return_always(sss_dp_get_account_recv, 0);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req = cache_req_user_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina NULL, uid);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(req);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina tevent_req_set_callback(req, cache_req_user_by_id_test_done, test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ret = test_ev_loop(test_ctx->tctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ret, ENOENT);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_true(test_ctx->dp_called);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina}
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březinavoid test_user_by_id_cache_valid(void **state)
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina{
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct tevent_req *req = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina const char *name = TEST_USER_NAME;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina const char *ldbname = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina uid_t uid = TEST_USER_ID;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina uid_t ldbuid;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina errno_t ret;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ret = sysdb_store_user(test_ctx->tctx->dom, name, "pwd", uid, 1000,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina NULL, NULL, NULL, "cn=test-user,dc=test", NULL,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina NULL, 1000, time(NULL));
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ret, EOK);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina check_leaks_push(req_mem_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req = cache_req_user_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->tctx->dom->name, uid);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(req);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina tevent_req_set_callback(req, cache_req_user_by_id_test_done, test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ret = test_ev_loop(test_ctx->tctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ret, ERR_OK);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(test_ctx->result->count, 1);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result->msgs);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina SYSDB_NAME, NULL);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(ldbname);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_string_equal(ldbname, name);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ldbuid = ldb_msg_find_attr_as_uint(test_ctx->result->msgs[0],
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina SYSDB_UIDNUM, 0);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ldbuid, uid);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina}
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březinavoid test_user_by_id_cache_expired(void **state)
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina{
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct tevent_req *req = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina const char *name = TEST_USER_NAME;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina const char *ldbname = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina uid_t uid = TEST_USER_ID;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina uid_t ldbuid;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina errno_t ret;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ret = sysdb_store_user(test_ctx->tctx->dom, name, "pwd", uid, 1000,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina NULL, NULL, NULL, "cn=test-user,dc=test", NULL,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina NULL, -1000, time(NULL));
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ret, EOK);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina check_leaks_push(req_mem_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina /* DP should be contacted */
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina mock_account_recv_simple();
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req = cache_req_user_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->tctx->dom->name, uid);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(req);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina tevent_req_set_callback(req, cache_req_user_by_id_test_done, test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ret = test_ev_loop(test_ctx->tctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ret, ERR_OK);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_true(test_ctx->dp_called);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(test_ctx->result->count, 1);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result->msgs);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina SYSDB_NAME, NULL);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(ldbname);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_string_equal(ldbname, name);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ldbuid = ldb_msg_find_attr_as_uint(test_ctx->result->msgs[0],
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina SYSDB_UIDNUM, 0);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ldbuid, uid);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina}
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březinavoid test_user_by_id_cache_midpoint(void **state)
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina{
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct tevent_req *req = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina const char *name = TEST_USER_NAME;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina const char *ldbname = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina uid_t uid = TEST_USER_ID;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina uid_t ldbuid;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina errno_t ret;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ret = sysdb_store_user(test_ctx->tctx->dom, name, "pwd", uid, 1000,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina NULL, NULL, NULL, "cn=test-user,dc=test", NULL,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina NULL, 50, time(NULL) - 26);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ret, EOK);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina check_leaks_push(req_mem_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina /* DP should be contacted without callback */
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req = cache_req_user_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 50,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->tctx->dom->name, uid);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(req);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina tevent_req_set_callback(req, cache_req_user_by_id_test_done, test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ret = test_ev_loop(test_ctx->tctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ret, ERR_OK);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_true(test_ctx->dp_called);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(test_ctx->result->count, 1);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result->msgs);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina SYSDB_NAME, NULL);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(ldbname);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_string_equal(ldbname, name);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ldbuid = ldb_msg_find_attr_as_uint(test_ctx->result->msgs[0],
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina SYSDB_UIDNUM, 0);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ldbuid, uid);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina}
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březinavoid test_user_by_id_ncache(void **state)
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina{
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct tevent_req *req = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina uid_t uid = TEST_USER_ID;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina errno_t ret;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
e1aed98d7c195f844ac8e85050d04f3ca5f899b3Sumit Bose ret = sss_ncache_set_uid(test_ctx->ncache, false, NULL, uid);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ret, EOK);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina check_leaks_push(req_mem_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req = cache_req_user_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->tctx->dom->name, uid);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(req);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina tevent_req_set_callback(req, cache_req_user_by_id_test_done, test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ret = test_ev_loop(test_ctx->tctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ret, ENOENT);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_false(test_ctx->dp_called);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina}
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březinavoid test_user_by_id_missing_found(void **state)
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina{
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct tevent_req *req = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina const char *name = TEST_USER_NAME;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina const char *ldbname = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina uid_t uid = TEST_USER_ID;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina uid_t ldbuid;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina errno_t ret;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina check_leaks_push(req_mem_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina mock_account_recv_simple();
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->create_user = true;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req = cache_req_user_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->tctx->dom->name, uid);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(req);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina tevent_req_set_callback(req, cache_req_user_by_id_test_done, test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ret = test_ev_loop(test_ctx->tctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ret, ERR_OK);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_true(test_ctx->dp_called);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(test_ctx->result->count, 1);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result->msgs);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina SYSDB_NAME, NULL);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(ldbname);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_string_equal(ldbname, name);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ldbuid = ldb_msg_find_attr_as_uint(test_ctx->result->msgs[0],
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina SYSDB_UIDNUM, 0);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ldbuid, uid);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina}
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březinavoid test_user_by_id_missing_notfound(void **state)
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina{
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina struct tevent_req *req = NULL;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina uid_t uid = TEST_USER_ID;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina errno_t ret;
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina check_leaks_push(req_mem_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina mock_account_recv_simple();
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina req = cache_req_user_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina test_ctx->tctx->dom->name, uid);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_non_null(req);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina tevent_req_set_callback(req, cache_req_user_by_id_test_done, test_ctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina ret = test_ev_loop(test_ctx->tctx);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_int_equal(ret, ENOENT);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina assert_true(test_ctx->dp_called);
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina}
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březinavoid test_group_by_name_multiple_domains_found(void **state)
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina{
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct sss_domain_info *domain = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct tevent_req *req = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina const char *name = TEST_GROUP_NAME;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina const char *ldbname = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina errno_t ret;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina domain = find_domain_by_name(test_ctx->tctx->dom,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina "responder_cache_req_test_d", true);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(domain);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ret = sysdb_store_group(domain, name, TEST_GROUP_ID, NULL,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina 1000, time(NULL));
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(ret, EOK);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina check_leaks_push(req_mem_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina will_return_always(__wrap_sss_dp_get_account_send, test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina will_return_always(sss_dp_get_account_recv, 0);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_parse_inp(name, NULL, ERR_OK);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req = cache_req_group_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina NULL, name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(req);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina tevent_req_set_callback(req, cache_req_group_by_name_test_done, test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ret = test_ev_loop(test_ctx->tctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(ret, ERR_OK);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_true(test_ctx->dp_called);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(test_ctx->result->count, 1);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result->msgs);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result->msgs[0]);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina SYSDB_NAME, NULL);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(ldbname);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_string_equal(ldbname, name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->domain);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_string_equal(domain->name, test_ctx->domain->name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina}
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březinavoid test_group_by_name_multiple_domains_notfound(void **state)
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina{
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct tevent_req *req = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina const char *name = TEST_GROUP_NAME;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina errno_t ret;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina check_leaks_push(req_mem_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina will_return_always(__wrap_sss_dp_get_account_send, test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina will_return_always(sss_dp_get_account_recv, 0);
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_parse_inp(name, NULL, ERR_OK);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req = cache_req_group_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina NULL, name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(req);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina tevent_req_set_callback(req, cache_req_group_by_name_test_done, test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ret = test_ev_loop(test_ctx->tctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(ret, ENOENT);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_true(test_ctx->dp_called);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina}
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březinavoid test_group_by_name_multiple_domains_parse(void **state)
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina{
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina struct sss_domain_info *domain = NULL;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina struct tevent_req *req = NULL;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina const char *name = TEST_GROUP_NAME;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina const char *fqn = NULL;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina const char *ldbname = NULL;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina uid_t gid = 2000;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina uid_t ldbgid;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina errno_t ret;
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina /* Add user to the first domain. */
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina domain = find_domain_by_name(test_ctx->tctx->dom,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina "responder_cache_req_test_a", true);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(domain);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina ret = sysdb_store_group(domain, name, 1000, NULL,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina 1000, time(NULL));
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_int_equal(ret, EOK);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina /* Add user to the last domain, with different uid. */
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina domain = find_domain_by_name(test_ctx->tctx->dom,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina "responder_cache_req_test_d", true);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(domain);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina ret = sysdb_store_group(domain, name, gid, NULL,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina 1000, time(NULL));
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_int_equal(ret, EOK);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina /* Append domain name to the username. */
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina fqn = talloc_asprintf(test_ctx, "%s@%s", name,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina "responder_cache_req_test_d");
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(fqn);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina /* Test. */
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina check_leaks_push(req_mem_ctx);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina mock_parse_inp(name, "responder_cache_req_test_d", ERR_OK);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina req = cache_req_group_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina NULL, fqn);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(req);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina tevent_req_set_callback(req, cache_req_group_by_name_test_done, test_ctx);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina ret = test_ev_loop(test_ctx->tctx);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_int_equal(ret, ERR_OK);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_false(test_ctx->dp_called);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(test_ctx->result);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_int_equal(test_ctx->result->count, 1);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(test_ctx->result->msgs);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina SYSDB_NAME, NULL);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(ldbname);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_string_equal(ldbname, name);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina ldbgid = ldb_msg_find_attr_as_uint(test_ctx->result->msgs[0],
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina SYSDB_GIDNUM, 0);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_int_equal(ldbgid, gid);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(test_ctx->domain);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_string_equal(domain->name, test_ctx->domain->name);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_non_null(test_ctx->name);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina assert_string_equal(name, test_ctx->name);
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina}
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březinavoid test_group_by_name_cache_valid(void **state)
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina{
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct tevent_req *req = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina const char *name = TEST_GROUP_NAME;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina const char *ldbname = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina errno_t ret;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ret = sysdb_store_group(test_ctx->tctx->dom, name, TEST_GROUP_ID, NULL,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina 1000, time(NULL));
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(ret, EOK);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina check_leaks_push(req_mem_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req = cache_req_group_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->tctx->dom->name, name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(req);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina tevent_req_set_callback(req, cache_req_group_by_name_test_done, test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ret = test_ev_loop(test_ctx->tctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(ret, ERR_OK);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(test_ctx->result->count, 1);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result->msgs);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result->msgs[0]);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina SYSDB_NAME, NULL);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(ldbname);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_string_equal(ldbname, name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina}
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březinavoid test_group_by_name_cache_expired(void **state)
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina{
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct tevent_req *req = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina const char *name = TEST_GROUP_NAME;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina const char *ldbname = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina errno_t ret;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ret = sysdb_store_group(test_ctx->tctx->dom, name, TEST_GROUP_ID, NULL,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina -1000, time(NULL));
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(ret, EOK);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina check_leaks_push(req_mem_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina /* DP should be contacted */
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina mock_account_recv_simple();
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req = cache_req_group_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->tctx->dom->name, name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(req);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina tevent_req_set_callback(req, cache_req_group_by_name_test_done, test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ret = test_ev_loop(test_ctx->tctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(ret, ERR_OK);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_true(test_ctx->dp_called);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(test_ctx->result->count, 1);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result->msgs);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result->msgs[0]);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina SYSDB_NAME, NULL);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(ldbname);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_string_equal(ldbname, name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina}
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březinavoid test_group_by_name_cache_midpoint(void **state)
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina{
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct tevent_req *req = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina const char *name = TEST_GROUP_NAME;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina const char *ldbname = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina errno_t ret;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ret = sysdb_store_group(test_ctx->tctx->dom, name, TEST_GROUP_ID, NULL,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina 50, time(NULL) - 26);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(ret, EOK);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina check_leaks_push(req_mem_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina /* DP should be contacted without callback */
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req = cache_req_group_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->rctx, test_ctx->ncache, 10, 50,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->tctx->dom->name, name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(req);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina tevent_req_set_callback(req, cache_req_group_by_name_test_done, test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ret = test_ev_loop(test_ctx->tctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(ret, ERR_OK);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_true(test_ctx->dp_called);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(test_ctx->result->count, 1);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result->msgs);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result->msgs[0]);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina SYSDB_NAME, NULL);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(ldbname);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_string_equal(ldbname, name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina}
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březinavoid test_group_by_name_ncache(void **state)
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina{
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct tevent_req *req = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina const char *name = TEST_GROUP_NAME;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina errno_t ret;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ret = sss_ncache_set_group(test_ctx->ncache, false,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->tctx->dom, name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(ret, EOK);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina check_leaks_push(req_mem_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req = cache_req_group_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->tctx->dom->name, name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(req);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina tevent_req_set_callback(req, cache_req_group_by_name_test_done, test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ret = test_ev_loop(test_ctx->tctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(ret, ENOENT);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_false(test_ctx->dp_called);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina}
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březinavoid test_group_by_name_missing_found(void **state)
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina{
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct tevent_req *req = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina const char *name = TEST_GROUP_NAME;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina const char *ldbname = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina errno_t ret;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina check_leaks_push(req_mem_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina mock_account_recv_simple();
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->create_group = true;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req = cache_req_group_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->tctx->dom->name, name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(req);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina tevent_req_set_callback(req, cache_req_group_by_name_test_done, test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ret = test_ev_loop(test_ctx->tctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(ret, ERR_OK);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_true(test_ctx->dp_called);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(test_ctx->result->count, 1);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result->msgs);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(test_ctx->result->msgs[0]);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina SYSDB_NAME, NULL);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(ldbname);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_string_equal(ldbname, name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina}
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březinavoid test_group_by_name_missing_notfound(void **state)
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina{
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct cache_req_test_ctx *test_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina TALLOC_CTX *req_mem_ctx = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina struct tevent_req *req = NULL;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina const char *name = TEST_GROUP_NAME;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina errno_t ret;
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req_mem_ctx = talloc_new(global_talloc_context);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina check_leaks_push(req_mem_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina mock_account_recv_simple();
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina req = cache_req_group_by_name_send(req_mem_ctx, test_ctx->tctx->ev,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina test_ctx->tctx->dom->name, name);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_non_null(req);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina tevent_req_set_callback(req, cache_req_group_by_name_test_done, test_ctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina ret = test_ev_loop(test_ctx->tctx);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_int_equal(ret, ENOENT);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_true(check_leaks_pop(req_mem_ctx));
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina assert_true(test_ctx->dp_called);
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina}
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březinavoid test_group_by_id_multiple_domains_found(void **state)
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina{
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct sss_domain_info *domain = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct tevent_req *req = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina const char *name = TEST_GROUP_NAME;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina const char *ldbname = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina gid_t gid = TEST_GROUP_ID;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina gid_t ldbgid;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina errno_t ret;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina domain = find_domain_by_name(test_ctx->tctx->dom,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina "responder_cache_req_test_d", true);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(domain);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ret = sysdb_store_group(domain, name, gid, NULL,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina 1000, time(NULL));
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ret, EOK);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina check_leaks_push(req_mem_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina will_return_always(__wrap_sss_dp_get_account_send, test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina will_return_always(sss_dp_get_account_recv, 0);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req = cache_req_group_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina NULL, gid);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(req);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina tevent_req_set_callback(req, cache_req_group_by_id_test_done, test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ret = test_ev_loop(test_ctx->tctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ret, ERR_OK);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_true(test_ctx->dp_called);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(test_ctx->result->count, 1);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result->msgs);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina SYSDB_NAME, NULL);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(ldbname);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_string_equal(ldbname, name);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ldbgid = ldb_msg_find_attr_as_uint(test_ctx->result->msgs[0],
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina SYSDB_GIDNUM, 0);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ldbgid, gid);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->domain);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_string_equal(domain->name, test_ctx->domain->name);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina}
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březinavoid test_group_by_id_multiple_domains_notfound(void **state)
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina{
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct tevent_req *req = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina gid_t gid = TEST_GROUP_ID;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina errno_t ret;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina check_leaks_push(req_mem_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina will_return_always(__wrap_sss_dp_get_account_send, test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina will_return_always(sss_dp_get_account_recv, 0);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req = cache_req_group_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina NULL, gid);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(req);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina tevent_req_set_callback(req, cache_req_group_by_id_test_done, test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ret = test_ev_loop(test_ctx->tctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ret, ENOENT);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_true(test_ctx->dp_called);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina}
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březinavoid test_group_by_id_cache_valid(void **state)
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina{
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct tevent_req *req = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina const char *name = TEST_GROUP_NAME;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina const char *ldbname = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina gid_t gid = TEST_GROUP_ID;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina gid_t ldbgid;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina errno_t ret;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ret = sysdb_store_group(test_ctx->tctx->dom, name, gid, NULL,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina 1000, time(NULL));
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ret, EOK);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina check_leaks_push(req_mem_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req = cache_req_group_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->tctx->dom->name, gid);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(req);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina tevent_req_set_callback(req, cache_req_group_by_id_test_done, test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ret = test_ev_loop(test_ctx->tctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ret, ERR_OK);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(test_ctx->result->count, 1);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result->msgs);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina SYSDB_NAME, NULL);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(ldbname);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_string_equal(ldbname, name);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ldbgid = ldb_msg_find_attr_as_uint(test_ctx->result->msgs[0],
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina SYSDB_GIDNUM, 0);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ldbgid, gid);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina}
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březinavoid test_group_by_id_cache_expired(void **state)
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina{
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct tevent_req *req = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina const char *name = TEST_GROUP_NAME;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina const char *ldbname = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina gid_t gid = TEST_GROUP_ID;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina gid_t ldbgid;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina errno_t ret;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ret = sysdb_store_group(test_ctx->tctx->dom, name, gid, NULL,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina -1000, time(NULL));
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ret, EOK);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina check_leaks_push(req_mem_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina /* DP should be contacted */
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina mock_account_recv_simple();
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req = cache_req_group_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 0,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->tctx->dom->name, gid);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(req);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina tevent_req_set_callback(req, cache_req_group_by_id_test_done, test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ret = test_ev_loop(test_ctx->tctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ret, ERR_OK);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_true(test_ctx->dp_called);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(test_ctx->result->count, 1);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result->msgs);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina SYSDB_NAME, NULL);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(ldbname);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_string_equal(ldbname, name);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ldbgid = ldb_msg_find_attr_as_uint(test_ctx->result->msgs[0],
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina SYSDB_GIDNUM, 0);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ldbgid, gid);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina}
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březinavoid test_group_by_id_cache_midpoint(void **state)
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina{
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct tevent_req *req = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina const char *name = TEST_GROUP_NAME;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina const char *ldbname = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina gid_t gid = TEST_GROUP_ID;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina gid_t ldbgid;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina errno_t ret;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ret = sysdb_store_group(test_ctx->tctx->dom, name, gid, NULL,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina 50, time(NULL) - 26);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ret, EOK);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina check_leaks_push(req_mem_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina /* DP should be contacted without callback */
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req = cache_req_group_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->rctx, test_ctx->ncache, 10, 50,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->tctx->dom->name, gid);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(req);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina tevent_req_set_callback(req, cache_req_group_by_id_test_done, test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ret = test_ev_loop(test_ctx->tctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ret, ERR_OK);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_true(test_ctx->dp_called);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(test_ctx->result->count, 1);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result->msgs);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina SYSDB_NAME, NULL);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(ldbname);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_string_equal(ldbname, name);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ldbgid = ldb_msg_find_attr_as_uint(test_ctx->result->msgs[0],
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina SYSDB_GIDNUM, 0);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ldbgid, gid);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina}
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březinavoid test_group_by_id_ncache(void **state)
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina{
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct tevent_req *req = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina gid_t gid = TEST_GROUP_ID;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina errno_t ret;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
e1aed98d7c195f844ac8e85050d04f3ca5f899b3Sumit Bose ret = sss_ncache_set_gid(test_ctx->ncache, false, NULL, gid);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ret, EOK);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina check_leaks_push(req_mem_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req = cache_req_group_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->tctx->dom->name, gid);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(req);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina tevent_req_set_callback(req, cache_req_group_by_id_test_done, test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ret = test_ev_loop(test_ctx->tctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ret, ENOENT);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_false(test_ctx->dp_called);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina}
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březinavoid test_group_by_id_missing_found(void **state)
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina{
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct tevent_req *req = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina const char *name = TEST_GROUP_NAME;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina const char *ldbname = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina gid_t gid = TEST_GROUP_ID;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina gid_t ldbgid;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina errno_t ret;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina check_leaks_push(req_mem_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina mock_account_recv_simple();
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->create_group = true;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req = cache_req_group_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->tctx->dom->name, gid);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(req);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina tevent_req_set_callback(req, cache_req_group_by_id_test_done, test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ret = test_ev_loop(test_ctx->tctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ret, ERR_OK);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_true(test_ctx->dp_called);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(test_ctx->result->count, 1);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result->msgs);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(test_ctx->result->msgs[0]);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina SYSDB_NAME, NULL);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(ldbname);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_string_equal(ldbname, name);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ldbgid = ldb_msg_find_attr_as_uint(test_ctx->result->msgs[0],
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina SYSDB_GIDNUM, 0);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ldbgid, gid);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina}
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březinavoid test_group_by_id_missing_notfound(void **state)
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina{
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct cache_req_test_ctx *test_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina TALLOC_CTX *req_mem_ctx = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina struct tevent_req *req = NULL;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina gid_t gid = TEST_GROUP_ID;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina errno_t ret;
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req_mem_ctx = talloc_new(global_talloc_context);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina check_leaks_push(req_mem_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina will_return(__wrap_sss_dp_get_account_send, test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina mock_account_recv_simple();
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina req = cache_req_group_by_id_send(req_mem_ctx, test_ctx->tctx->ev,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->rctx, test_ctx->ncache, 100, 0,
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina test_ctx->tctx->dom->name, gid);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_non_null(req);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina tevent_req_set_callback(req, cache_req_group_by_id_test_done, test_ctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina ret = test_ev_loop(test_ctx->tctx);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_int_equal(ret, ENOENT);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_true(check_leaks_pop(req_mem_ctx));
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina assert_true(test_ctx->dp_called);
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina}
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozekstatic void cache_req_user_by_filter_test_done(struct tevent_req *req)
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek{
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek struct cache_req_test_ctx *ctx = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek ctx = tevent_req_callback_data(req, struct cache_req_test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek ctx->tctx->error = cache_req_user_by_filter_recv(ctx, req,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek &ctx->result,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek &ctx->domain);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek talloc_zfree(req);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek ctx->tctx->done = true;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek}
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozekvoid test_users_by_filter_filter_old(void **state)
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek{
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek struct cache_req_test_ctx *test_ctx = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek TALLOC_CTX *req_mem_ctx = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek struct tevent_req *req = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek const char *ldbname = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek errno_t ret;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek test_ctx->create_user = true;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek /* This user was updated in distant past, so it wont't be reported by
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek * the filter search */
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek ret = sysdb_store_user(test_ctx->tctx->dom, TEST_USER_NAME2, "pwd", 1001, 1001,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek NULL, NULL, NULL, "cn="TEST_USER_NAME2",dc=test", NULL,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek NULL, 1000, 1);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_int_equal(ret, EOK);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek req_mem_ctx = talloc_new(global_talloc_context);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek check_leaks_push(req_mem_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek /* Filters always go to DP */
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek will_return(__wrap_sss_dp_get_account_send, test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek mock_account_recv_simple();
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek req = cache_req_user_by_filter_send(req_mem_ctx, test_ctx->tctx->ev,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek test_ctx->rctx,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek test_ctx->tctx->dom->name,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek "test*");
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_non_null(req);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek tevent_req_set_callback(req, cache_req_user_by_filter_test_done, test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek ret = test_ev_loop(test_ctx->tctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_int_equal(ret, ERR_OK);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_true(check_leaks_pop(req_mem_ctx));
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_non_null(test_ctx->result);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_int_equal(test_ctx->result->count, 1);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[0],
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek SYSDB_NAME, NULL);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_non_null(ldbname);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_string_equal(ldbname, TEST_USER_NAME);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek}
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozekvoid test_users_by_filter_notfound(void **state)
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek{
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek struct cache_req_test_ctx *test_ctx = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek TALLOC_CTX *req_mem_ctx = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek struct tevent_req *req = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek errno_t ret;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek req_mem_ctx = talloc_new(global_talloc_context);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek check_leaks_push(req_mem_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek /* Filters always go to DP */
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek will_return(__wrap_sss_dp_get_account_send, test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek mock_account_recv_simple();
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek req = cache_req_user_by_filter_send(req_mem_ctx, test_ctx->tctx->ev,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek test_ctx->rctx,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek test_ctx->tctx->dom->name,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek "nosuchuser*");
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_non_null(req);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek tevent_req_set_callback(req, cache_req_user_by_filter_test_done, test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek ret = test_ev_loop(test_ctx->tctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_int_equal(ret, ENOENT);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_true(check_leaks_pop(req_mem_ctx));
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek}
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozekstatic void test_users_by_filter_multiple_domains_notfound(void **state)
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek{
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek struct cache_req_test_ctx *test_ctx = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek struct sss_domain_info *domain = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek TALLOC_CTX *req_mem_ctx = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek struct tevent_req *req = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek errno_t ret;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek domain = find_domain_by_name(test_ctx->tctx->dom,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek "responder_cache_req_test_d", true);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_non_null(domain);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek req_mem_ctx = talloc_new(global_talloc_context);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek check_leaks_push(req_mem_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek /* Filters always go to DP */
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek will_return(__wrap_sss_dp_get_account_send, test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek mock_account_recv_simple();
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek req = cache_req_user_by_filter_send(req_mem_ctx, test_ctx->tctx->ev,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek test_ctx->rctx,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek domain->name,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek "nosuchuser*");
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_non_null(req);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek tevent_req_set_callback(req, cache_req_user_by_filter_test_done, test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek ret = test_ev_loop(test_ctx->tctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_int_equal(ret, ENOENT);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_true(check_leaks_pop(req_mem_ctx));
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek}
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozekstatic void cache_req_group_by_filter_test_done(struct tevent_req *req)
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek{
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek struct cache_req_test_ctx *ctx = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek ctx = tevent_req_callback_data(req, struct cache_req_test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek ctx->tctx->error = cache_req_group_by_filter_recv(ctx, req,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek &ctx->result,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek &ctx->domain);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek talloc_zfree(req);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek ctx->tctx->done = true;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek}
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozekvoid test_groups_by_filter_notfound(void **state)
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek{
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek struct cache_req_test_ctx *test_ctx = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek TALLOC_CTX *req_mem_ctx = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek struct tevent_req *req = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek errno_t ret;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek req_mem_ctx = talloc_new(global_talloc_context);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek check_leaks_push(req_mem_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek /* Filters always go to DP */
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek will_return(__wrap_sss_dp_get_account_send, test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek mock_account_recv_simple();
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek req = cache_req_group_by_filter_send(req_mem_ctx, test_ctx->tctx->ev,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek test_ctx->rctx,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek test_ctx->tctx->dom->name,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek "nosuchgroup*");
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_non_null(req);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek tevent_req_set_callback(req, cache_req_group_by_filter_test_done, test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek ret = test_ev_loop(test_ctx->tctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_int_equal(ret, ENOENT);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_true(check_leaks_pop(req_mem_ctx));
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek}
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozekvoid test_groups_by_filter_multiple_domains_notfound(void **state)
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek{
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek struct cache_req_test_ctx *test_ctx = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek struct sss_domain_info *domain = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek TALLOC_CTX *req_mem_ctx = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek struct tevent_req *req = NULL;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek errno_t ret;
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek domain = find_domain_by_name(test_ctx->tctx->dom,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek "responder_cache_req_test_d", true);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_non_null(domain);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek req_mem_ctx = talloc_new(global_talloc_context);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek check_leaks_push(req_mem_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek /* Filters always go to DP */
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek will_return(__wrap_sss_dp_get_account_send, test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek mock_account_recv_simple();
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek req = cache_req_group_by_filter_send(req_mem_ctx, test_ctx->tctx->ev,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek test_ctx->rctx,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek domain->name,
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek "nosuchgroup*");
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_non_null(req);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek tevent_req_set_callback(req, cache_req_group_by_filter_test_done, test_ctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek ret = test_ev_loop(test_ctx->tctx);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_int_equal(ret, ENOENT);
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek assert_true(check_leaks_pop(req_mem_ctx));
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek}
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březinaint main(int argc, const char *argv[])
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina{
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina poptContext pc;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina int opt;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina struct poptOption long_options[] = {
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina POPT_AUTOHELP
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina SSSD_DEBUG_OPTS
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina POPT_TABLEEND
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina };
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek const struct CMUnitTest tests[] = {
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina new_single_domain_test(user_by_name_cache_valid),
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina new_single_domain_test(user_by_name_cache_expired),
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina new_single_domain_test(user_by_name_cache_midpoint),
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina new_single_domain_test(user_by_name_ncache),
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina new_single_domain_test(user_by_name_missing_found),
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina new_single_domain_test(user_by_name_missing_notfound),
54ed1b1214dbf9da1f481e8d193c81ce4312516bPavel Březina new_multi_domain_test(user_by_name_multiple_domains_found),
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina new_multi_domain_test(user_by_name_multiple_domains_notfound),
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina new_multi_domain_test(user_by_name_multiple_domains_parse),
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina new_single_domain_test(user_by_upn_cache_valid),
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina new_single_domain_test(user_by_upn_cache_expired),
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina new_single_domain_test(user_by_upn_cache_midpoint),
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina new_single_domain_test(user_by_upn_ncache),
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina new_single_domain_test(user_by_upn_missing_found),
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina new_single_domain_test(user_by_upn_missing_notfound),
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina new_multi_domain_test(user_by_upn_multiple_domains_found),
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina new_multi_domain_test(user_by_upn_multiple_domains_notfound),
28ebfa4373d1e7ce45b5d70a3619df1c074a661ePavel Březina
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina new_single_domain_test(user_by_id_cache_valid),
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina new_single_domain_test(user_by_id_cache_expired),
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina new_single_domain_test(user_by_id_cache_midpoint),
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina new_single_domain_test(user_by_id_ncache),
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina new_single_domain_test(user_by_id_missing_found),
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina new_single_domain_test(user_by_id_missing_notfound),
3a5ea81007bd38ce511c37f65cc45d4b6b95ec44Pavel Březina new_multi_domain_test(user_by_id_multiple_domains_found),
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina new_multi_domain_test(user_by_id_multiple_domains_notfound),
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina new_single_domain_test(group_by_name_cache_valid),
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina new_single_domain_test(group_by_name_cache_expired),
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina new_single_domain_test(group_by_name_cache_midpoint),
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina new_single_domain_test(group_by_name_ncache),
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina new_single_domain_test(group_by_name_missing_found),
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina new_single_domain_test(group_by_name_missing_notfound),
641d684ee88c6540a4cf1d74d258614f615699fePavel Březina new_multi_domain_test(group_by_name_multiple_domains_found),
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina new_multi_domain_test(group_by_name_multiple_domains_notfound),
e87b2a6e94c1066b3044fe683825ff5b4f8716c2Pavel Březina new_multi_domain_test(group_by_name_multiple_domains_parse),
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina new_single_domain_test(group_by_id_cache_valid),
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina new_single_domain_test(group_by_id_cache_expired),
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina new_single_domain_test(group_by_id_cache_midpoint),
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina new_single_domain_test(group_by_id_ncache),
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina new_single_domain_test(group_by_id_missing_found),
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina new_single_domain_test(group_by_id_missing_notfound),
71965bb18407ff45ada9e47cb6def086e48663c6Pavel Březina new_multi_domain_test(group_by_id_multiple_domains_found),
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek new_multi_domain_test(group_by_id_multiple_domains_notfound),
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek new_single_domain_test(users_by_filter_filter_old),
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek new_single_domain_test(users_by_filter_notfound),
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek new_multi_domain_test(users_by_filter_multiple_domains_notfound),
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek new_single_domain_test(groups_by_filter_notfound),
fd04b25eaa5cd105da4122854d8bc1e702760e60Jakub Hrozek new_multi_domain_test(groups_by_filter_multiple_domains_notfound),
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina };
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina /* Set debug level to invalid value so we can deside if -d 0 was used. */
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina debug_level = SSSDBG_INVALID;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina pc = poptGetContext(argv[0], argc, argv, long_options, 0);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina while((opt = poptGetNextOpt(pc)) != -1) {
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina switch(opt) {
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina default:
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina fprintf(stderr, "\nInvalid option %s: %s\n\n",
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina poptBadOption(pc, 0), poptStrerror(opt));
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina poptPrintUsage(pc, stderr, 0);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina return 1;
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina }
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina }
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina poptFreeContext(pc);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina DEBUG_CLI_INIT(debug_level);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina /* Even though normally the tests should clean up after themselves
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina * they might not after a failed run. Remove the old db to be sure */
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina tests_set_cwd();
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_multidom_suite_cleanup(TESTS_PATH, TEST_CONF_DB, domains);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina test_dom_suite_cleanup(TESTS_PATH, TEST_CONF_DB, TEST_DOM_NAME);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek return cmocka_run_group_tests(tests, NULL, NULL);
360a4be4266d6a72be99dfd252623dc0527f5b84Pavel Březina}