test_sysdb_certmap.c revision 57c5ea8825c7179fd93382dbcbb07e828e5aec19
2454dfa32c93c20a8522c6ed42fe057baaac9f9aStephan Bosch/*
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen SSSD
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen sysdb_certmap - Tests for sysdb certmap related calls
b87761f9bbef949f31dae297e619ac3f5e9c2b2eTimo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen Authors:
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen Jakub Hrozek <jhrozek@redhat.com>
e8434aad92ea6ff1c915b708294dbd0c7ff5908dMichael M Slusarz
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen Copyright (C) 2017 Red Hat
de5f478d9e7ae7b8e58082e0b30b6ce1f034236aTimo Sirainen
ba4626cd5be3d225a7a89aa338d92b8fb411fd1cTimo Sirainen This program is free software; you can redistribute it and/or modify
f7d018e7e0980044e3d537958126e44ef4c45056Timo Sirainen it under the terms of the GNU General Public License as published by
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen the Free Software Foundation; either version 3 of the License, or
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen (at your option) any later version.
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
ba4626cd5be3d225a7a89aa338d92b8fb411fd1cTimo Sirainen This program is distributed in the hope that it will be useful,
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen but WITHOUT ANY WARRANTY; without even the implied warranty of
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen GNU General Public License for more details.
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen You should have received a copy of the GNU General Public License
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen along with this program. If not, see <http://www.gnu.org/licenses/>.
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen*/
1128c114416bdc4df0b41d3e15429a1522e5cfe4Timo Sirainen
1128c114416bdc4df0b41d3e15429a1522e5cfe4Timo Sirainen#include <stdarg.h>
1128c114416bdc4df0b41d3e15429a1522e5cfe4Timo Sirainen#include <stddef.h>
1128c114416bdc4df0b41d3e15429a1522e5cfe4Timo Sirainen#include <setjmp.h>
8952d797eca36f997ec36569e783871b597a9216Timo Sirainen#include <cmocka.h>
8952d797eca36f997ec36569e783871b597a9216Timo Sirainen#include <popt.h>
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen#include "tests/cmocka/common_mock.h"
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen#include "tests/common.h"
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen#define TESTS_PATH "certmap_" BASE_FILE_STEM
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen#define TEST_CONF_DB "test_sysdb_certmap.ldb"
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen#define TEST_ID_PROVIDER "ldap"
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen#define TEST_DOM_NAME "certmap_test"
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainenstruct certmap_test_ctx {
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen struct sss_test_ctx *tctx;
01aca4a521410be85e1f39e37c662435d052f48aAki Tuomi};
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainenstatic int test_sysdb_setup(void **state)
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen{
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen struct certmap_test_ctx *test_ctx;
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen struct sss_test_conf_param params[] = {
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen { NULL, NULL }, /* Sentinel */
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen };
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen assert_true(leak_check_setup());
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen test_ctx = talloc_zero(global_talloc_context,
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen struct certmap_test_ctx);
01aca4a521410be85e1f39e37c662435d052f48aAki Tuomi assert_non_null(test_ctx);
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen check_leaks_push(test_ctx);
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen
4db61af2cfe2b206113bcc4b6153521679702bb4Timo Sirainen test_dom_suite_setup(TESTS_PATH);
4db61af2cfe2b206113bcc4b6153521679702bb4Timo Sirainen
dd3d20d9b5821077164183a260af9bde0db3ff3fTimo Sirainen test_ctx->tctx = create_dom_test_ctx(test_ctx, TESTS_PATH,
4db61af2cfe2b206113bcc4b6153521679702bb4Timo Sirainen TEST_CONF_DB, TEST_DOM_NAME,
8a6afcd8a6d9ed69626add85a7b75105ee3cb6a1Timo Sirainen TEST_ID_PROVIDER, params);
8a6afcd8a6d9ed69626add85a7b75105ee3cb6a1Timo Sirainen assert_non_null(test_ctx->tctx);
8a6afcd8a6d9ed69626add85a7b75105ee3cb6a1Timo Sirainen
4db61af2cfe2b206113bcc4b6153521679702bb4Timo Sirainen *state = test_ctx;
1128c114416bdc4df0b41d3e15429a1522e5cfe4Timo Sirainen return 0;
1128c114416bdc4df0b41d3e15429a1522e5cfe4Timo Sirainen}
8a6afcd8a6d9ed69626add85a7b75105ee3cb6a1Timo Sirainen
1128c114416bdc4df0b41d3e15429a1522e5cfe4Timo Sirainenstatic int test_sysdb_teardown(void **state)
4db61af2cfe2b206113bcc4b6153521679702bb4Timo Sirainen{
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen struct certmap_test_ctx *test_ctx =
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen talloc_get_type(*state, struct certmap_test_ctx);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen test_dom_suite_cleanup(TESTS_PATH, TEST_CONF_DB, TEST_DOM_NAME);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen talloc_free(test_ctx->tctx);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_true(check_leaks_pop(test_ctx));
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen talloc_free(test_ctx);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_true(leak_check_teardown());
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen return 0;
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen}
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
c72cfe4a2bda39fff3b8a8bd64b31a7cc14d7d11Timo Sirainenstatic void test_sysdb_get_certmap_not_exists(void **state)
4db61af2cfe2b206113bcc4b6153521679702bb4Timo Sirainen{
1128c114416bdc4df0b41d3e15429a1522e5cfe4Timo Sirainen int ret;
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen struct certmap_info **certmap;
14189e0d0af45ddcb888d026bd8d7e4609912ec5Timo Sirainen bool user_name_hint;
e564ff0581fc44b78badf8da36e68f9f7a27807eTimo Sirainen struct certmap_test_ctx *ctctx = talloc_get_type(*state,
f9eee365367f37b1692c07db6c23d30243844aaaTimo Sirainen struct certmap_test_ctx);
f7d018e7e0980044e3d537958126e44ef4c45056Timo Sirainen
7cd055a212d44067e2d94452c05691d696c9f699Timo Sirainen ret = sysdb_get_certmap(ctctx, ctctx->tctx->sysdb, &certmap,
8952d797eca36f997ec36569e783871b597a9216Timo Sirainen &user_name_hint);
2599a77a28bde0653fa090802424469904d518eeTimo Sirainen assert_int_equal(ret, EOK);
07038d3a12a915e98f794566f56a0ed12e0653ebAki Tuomi assert_null(certmap);
dd3d20d9b5821077164183a260af9bde0db3ff3fTimo Sirainen}
e8434aad92ea6ff1c915b708294dbd0c7ff5908dMichael M Slusarz
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainenstatic void check_certmap(struct certmap_info *m, struct certmap_info *r,
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen size_t exp_domains)
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen{
f0e416aa42058e7ccc0dc6deec0d4f4a19ee6ebeTimo Sirainen size_t d;
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_non_null(r);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_non_null(m);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_string_equal(m->name, r->name);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
1fb5e50695bbbc0da082e5a6f19f29d2bb2f6531Timo Sirainen if (r->map_rule == NULL) {
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_null(m->map_rule);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen } else {
ba4626cd5be3d225a7a89aa338d92b8fb411fd1cTimo Sirainen assert_string_equal(m->map_rule, r->map_rule);
ba4626cd5be3d225a7a89aa338d92b8fb411fd1cTimo Sirainen }
f9cf9852b0338910f1a710297374943d66fea480Timo Sirainen
ba4626cd5be3d225a7a89aa338d92b8fb411fd1cTimo Sirainen if (r->match_rule == NULL) {
2a24f3565c61cb429d1e428601f153ce53b8bae3Timo Sirainen assert_null(m->match_rule);
1128c114416bdc4df0b41d3e15429a1522e5cfe4Timo Sirainen } else {
1128c114416bdc4df0b41d3e15429a1522e5cfe4Timo Sirainen assert_string_equal(m->match_rule, r->match_rule);
1128c114416bdc4df0b41d3e15429a1522e5cfe4Timo Sirainen }
1fb5e50695bbbc0da082e5a6f19f29d2bb2f6531Timo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_int_equal(m->priority, r->priority);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_non_null(m->domains);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen if (r->domains == NULL) {
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_null(m->domains[0]);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen } else {
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen for (d = 0; r->domains[d]; d++) {
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_non_null(m->domains[d]);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_true(string_in_list(m->domains[d], discard_const(r->domains),
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen true));
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen }
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_int_equal(d, exp_domains);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen }
1128c114416bdc4df0b41d3e15429a1522e5cfe4Timo Sirainen
4db61af2cfe2b206113bcc4b6153521679702bb4Timo Sirainen}
caf029d36a826106e48b8682f15ea0fc01fdd8f4Timo Sirainen
caf029d36a826106e48b8682f15ea0fc01fdd8f4Timo Sirainenstatic void test_sysdb_update_certmap(void **state)
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen{
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen int ret;
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen const char *domains[] = { "dom1.test", "dom2.test", "dom3.test", NULL };
61f39b0358a72ebc693d84ba5bac74489ee7df41Timo Sirainen struct certmap_info map_a = { discard_const("map_a"), 11, discard_const("abc"), discard_const("def"), NULL };
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen struct certmap_info map_b = { discard_const("map_b"), UINT_MAX, discard_const("abc"), NULL, domains };
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen struct certmap_info *certmap_empty[] = { NULL };
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen struct certmap_info *certmap_a[] = { &map_a, NULL };
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen struct certmap_info *certmap_b[] = { &map_b, NULL };
b6c9cc2bf7517adcc0b9f98696c61bde321900f6Timo Sirainen struct certmap_info *certmap_ab[] = { &map_a, &map_b, NULL };
0dffa25d211be541ee3c953b23566a1a990789dfTimo Sirainen struct certmap_info **certmap;
0dffa25d211be541ee3c953b23566a1a990789dfTimo Sirainen struct certmap_test_ctx *ctctx = talloc_get_type(*state,
caf029d36a826106e48b8682f15ea0fc01fdd8f4Timo Sirainen struct certmap_test_ctx);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen bool user_name_hint;
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen ret = sysdb_update_certmap(ctctx->tctx->sysdb, NULL, false);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_int_equal(ret, EINVAL);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen ret = sysdb_update_certmap(ctctx->tctx->sysdb, certmap_empty, false);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_int_equal(ret, EOK);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen ret = sysdb_get_certmap(ctctx, ctctx->tctx->sysdb, &certmap,
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen &user_name_hint);
92a7f5f9bf20c0bd1b1ac309d100f9c144e2b127Timo Sirainen assert_int_equal(ret, EOK);
e22ec7998afd426c53c658483ce66b6e404e27c6Timo Sirainen assert_null(certmap);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
0dffa25d211be541ee3c953b23566a1a990789dfTimo Sirainen ret = sysdb_update_certmap(ctctx->tctx->sysdb, certmap_a, false);
0dffa25d211be541ee3c953b23566a1a990789dfTimo Sirainen assert_int_equal(ret, EOK);
0dffa25d211be541ee3c953b23566a1a990789dfTimo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen ret = sysdb_get_certmap(ctctx, ctctx->tctx->sysdb, &certmap,
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen &user_name_hint);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_int_equal(ret, EOK);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_false(user_name_hint);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_non_null(certmap);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_non_null(certmap[0]);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_string_equal(certmap[0]->name, map_a.name);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_string_equal(certmap[0]->map_rule, map_a.map_rule);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_string_equal(certmap[0]->match_rule, map_a.match_rule);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_int_equal(certmap[0]->priority, map_a.priority);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_non_null(certmap[0]->domains);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_null(certmap[0]->domains[0]);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_null(certmap[1]);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen check_certmap(certmap[0], &map_a, 0);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen talloc_free(certmap);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen ret = sysdb_update_certmap(ctctx->tctx->sysdb, certmap_b, true);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_int_equal(ret, EOK);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen ret = sysdb_get_certmap(ctctx, ctctx->tctx->sysdb, &certmap,
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen &user_name_hint);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_int_equal(ret, EOK);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_true(user_name_hint);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_non_null(certmap);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_non_null(certmap[0]);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen check_certmap(certmap[0], &map_b, 3);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_null(certmap[1]);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen talloc_free(certmap);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen ret = sysdb_update_certmap(ctctx->tctx->sysdb, certmap_ab, false);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_int_equal(ret, EOK);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen ret = sysdb_get_certmap(ctctx, ctctx->tctx->sysdb, &certmap,
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen &user_name_hint);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_int_equal(ret, EOK);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_false(user_name_hint);
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen assert_non_null(certmap);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_non_null(certmap[0]);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_non_null(certmap[1]);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen assert_null(certmap[2]);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen if (strcmp(certmap[0]->name, "map_a") == 0) {
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen check_certmap(certmap[0], &map_a, 0);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen check_certmap(certmap[1], &map_b, 3);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen } else {
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen check_certmap(certmap[0], &map_b, 3);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen check_certmap(certmap[1], &map_a, 0);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen }
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen talloc_free(certmap);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen}
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainenint main(int argc, const char *argv[])
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen{
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen int rv;
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen int no_cleanup = 0;
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen poptContext pc;
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen int opt;
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen struct poptOption long_options[] = {
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen POPT_AUTOHELP
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen SSSD_DEBUG_OPTS
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen {"no-cleanup", 'n', POPT_ARG_NONE, &no_cleanup, 0,
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen _("Do not delete the test database after a test run"), NULL },
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen POPT_TABLEEND
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen };
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen const struct CMUnitTest tests[] = {
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen cmocka_unit_test_setup_teardown(test_sysdb_get_certmap_not_exists,
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen test_sysdb_setup,
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen test_sysdb_teardown),
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen cmocka_unit_test_setup_teardown(test_sysdb_update_certmap,
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen test_sysdb_setup,
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen test_sysdb_teardown),
709ee5a909d482f31611f9e6cc10d893a272e061Timo Sirainen };
1128c114416bdc4df0b41d3e15429a1522e5cfe4Timo Sirainen
1fb5e50695bbbc0da082e5a6f19f29d2bb2f6531Timo Sirainen /* Set debug level to invalid value so we can decide if -d 0 was used. */
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen debug_level = SSSDBG_INVALID;
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen pc = poptGetContext(argv[0], argc, argv, long_options, 0);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen while((opt = poptGetNextOpt(pc)) != -1) {
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen switch(opt) {
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen default:
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen fprintf(stderr, "\nInvalid option %s: %s\n\n",
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen poptBadOption(pc, 0), poptStrerror(opt));
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen poptPrintUsage(pc, stderr, 0);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen return 1;
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen }
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen }
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen poptFreeContext(pc);
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen
b772ddf3cfb606dddaa465b317a0dc01bf06c6e4Timo Sirainen DEBUG_CLI_INIT(debug_level);
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen tests_set_cwd();
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen test_dom_suite_cleanup(TESTS_PATH, TEST_CONF_DB, LOCAL_SYSDB_FILE);
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen test_dom_suite_setup(TESTS_PATH);
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen rv = cmocka_run_group_tests(tests, NULL, NULL);
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen if (rv == 0 && no_cleanup == 0) {
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen test_dom_suite_cleanup(TESTS_PATH, TEST_CONF_DB, LOCAL_SYSDB_FILE);
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen }
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen return rv;
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen}
a1044a46a8f3512173f4ea2684ef1fc3e61645c7Timo Sirainen