test_sss_idmap.c revision d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose/*
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose Authors:
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose Sumit Bose <sbose@redhat.com>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose Copyright (C) 2013 Red Hat
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose SSSD tests: Unit tests for libsss_idmap
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose This program is free software; you can redistribute it and/or modify
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose it under the terms of the GNU General Public License as published by
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose the Free Software Foundation; either version 3 of the License, or
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose (at your option) any later version.
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose This program is distributed in the hope that it will be useful,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose but WITHOUT ANY WARRANTY; without even the implied warranty of
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose GNU General Public License for more details.
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose You should have received a copy of the GNU General Public License
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose along with this program. If not, see <http://www.gnu.org/licenses/>.
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose*/
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose#include <popt.h>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose#include "tests/cmocka/common_mock.h"
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose#include "lib/idmap/sss_idmap.h"
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose#define TEST_RANGE_MIN 200000
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose#define TEST_RANGE_MAX 399999
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose#define TEST_DOM_NAME "test.dom"
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose#define TEST_DOM_SID "S-1-5-21-123-456-789"
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose#define TEST_2_RANGE_MIN 600000
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose#define TEST_2_RANGE_MAX 799999
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose#define TEST_2_DOM_NAME "test2.dom"
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose#define TEST_2_DOM_SID "S-1-5-21-987-654-321"
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose#define TEST_OFFSET 1000000
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose#define TEST_OFFSET_STR "1000000"
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bosestruct test_ctx {
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TALLOC_CTX *mem_idmap;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose struct sss_idmap_ctx *idmap_ctx;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose};
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bosestatic void *idmap_talloc(size_t size, void *pvt)
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose{
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose return talloc_size(pvt, size);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose}
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bosestatic void idmap_free(void *ptr, void *pvt)
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose{
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose talloc_free(ptr);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose}
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bosevoid test_sss_idmap_setup(void **state)
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose{
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose struct test_ctx *test_ctx;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose enum idmap_error_code err;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_true(leak_check_setup());
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_ctx = talloc_zero(global_talloc_context, struct test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_non_null(test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose check_leaks_push(test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_ctx->mem_idmap = talloc_new(test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_non_null(test_ctx->mem_idmap);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_init(idmap_talloc, test_ctx->mem_idmap, idmap_free,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &test_ctx->idmap_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SUCCESS);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose *state = test_ctx;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose}
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bosevoid setup_ranges(struct test_ctx *test_ctx, bool external_mapping,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose bool second_domain)
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose{
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose struct sss_idmap_range range;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose enum idmap_error_code err;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose const char *name;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose const char *sid;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_non_null(test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose if (second_domain) {
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose range.min = TEST_2_RANGE_MIN;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose range.max = TEST_2_RANGE_MAX;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose name = TEST_2_DOM_NAME;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose sid = TEST_2_DOM_SID;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose } else {
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose range.min = TEST_RANGE_MIN;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose range.max = TEST_RANGE_MAX;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose name = TEST_DOM_NAME;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose sid = TEST_DOM_SID;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose }
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_add_domain_ex(test_ctx->idmap_ctx, name, sid, &range, NULL,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 0, external_mapping);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SUCCESS);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose range.min += TEST_OFFSET;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose range.max += TEST_OFFSET;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_add_domain_ex(test_ctx->idmap_ctx, name, sid, &range, NULL,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_OFFSET, external_mapping);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SUCCESS);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose}
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bosevoid test_sss_idmap_setup_with_domains(void **state) {
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose struct test_ctx *test_ctx;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_sss_idmap_setup(state);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_ctx = talloc_get_type(*state, struct test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_non_null(test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose setup_ranges(test_ctx, false, false);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose}
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bosevoid test_sss_idmap_setup_with_external_mappings(void **state) {
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose struct test_ctx *test_ctx;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_sss_idmap_setup(state);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_ctx = talloc_get_type(*state, struct test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_non_null(test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose setup_ranges(test_ctx, true, false);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose}
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bosevoid test_sss_idmap_setup_with_both(void **state) {
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose struct test_ctx *test_ctx;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_sss_idmap_setup(state);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_ctx = talloc_get_type(*state, struct test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_non_null(test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose setup_ranges(test_ctx, false, false);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose setup_ranges(test_ctx, true, true);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose}
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bosevoid test_sss_idmap_teardown(void **state)
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose{
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose struct test_ctx *test_ctx;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_ctx = talloc_get_type(*state, struct test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_non_null(test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose talloc_free(test_ctx->idmap_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose talloc_free(test_ctx->mem_idmap);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_true(check_leaks_pop(test_ctx) == true);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose talloc_free(test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_true(leak_check_teardown());
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose}
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bosevoid test_add_domain(void **state)
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose{
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose struct test_ctx *test_ctx;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose enum idmap_error_code err;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose struct sss_idmap_range range;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_ctx = talloc_get_type(*state, struct test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_non_null(test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose range.min = TEST_RANGE_MIN;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose range.max = TEST_RANGE_MAX;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_add_domain(test_ctx->idmap_ctx, TEST_DOM_NAME, TEST_DOM_SID,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &range);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SUCCESS);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_add_domain(test_ctx->idmap_ctx, TEST_DOM_NAME, TEST_DOM_SID,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &range);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_COLLISION);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_add_domain_ex(test_ctx->idmap_ctx, TEST_DOM_NAME,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_DOM_SID, &range, NULL, 0, false);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_COLLISION);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose range.min = TEST_RANGE_MIN + TEST_OFFSET;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose range.max = TEST_RANGE_MAX + TEST_OFFSET;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_add_domain_ex(test_ctx->idmap_ctx, TEST_DOM_NAME,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_DOM_SID, &range, NULL, 0, false);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_COLLISION);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_add_domain_ex(test_ctx->idmap_ctx, TEST_DOM_NAME"X",
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_DOM_SID, &range, NULL, TEST_OFFSET,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose false);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_COLLISION);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_add_domain_ex(test_ctx->idmap_ctx, TEST_DOM_NAME,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_DOM_SID"1", &range, NULL, TEST_OFFSET,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose false);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_COLLISION);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_add_domain_ex(test_ctx->idmap_ctx, TEST_DOM_NAME,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_DOM_SID, &range, NULL, TEST_OFFSET,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose true);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_COLLISION);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_add_domain_ex(test_ctx->idmap_ctx, TEST_DOM_NAME,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_DOM_SID, &range, NULL, TEST_OFFSET,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose false);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SUCCESS);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose range.min = TEST_RANGE_MIN + 2 * TEST_OFFSET;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose range.max = TEST_RANGE_MAX + 2 * TEST_OFFSET;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_add_domain_ex(test_ctx->idmap_ctx, TEST_DOM_NAME"-nosid",
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose NULL, &range, NULL, TEST_OFFSET,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose false);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SID_INVALID);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_add_domain_ex(test_ctx->idmap_ctx, TEST_DOM_NAME"-nosid",
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose NULL, &range, NULL, TEST_OFFSET,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose true);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SUCCESS);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose}
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bosevoid test_map_id(void **state)
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose{
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose struct test_ctx *test_ctx;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose enum idmap_error_code err;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose uint32_t id;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose char *sid = NULL;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_ctx = talloc_get_type(*state, struct test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_non_null(test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_sid_to_unix(test_ctx->idmap_ctx, TEST_DOM_SID"1-1", &id);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_NO_DOMAIN);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_sid_to_unix(test_ctx->idmap_ctx, TEST_DOM_SID"-400000",
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &id);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_NO_RANGE);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_unix_to_sid(test_ctx->idmap_ctx, TEST_OFFSET - 1, &sid);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_NO_DOMAIN);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_sid_to_unix(test_ctx->idmap_ctx, TEST_DOM_SID"-0", &id);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SUCCESS);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(id, TEST_RANGE_MIN);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_unix_to_sid(test_ctx->idmap_ctx, id, &sid);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SUCCESS);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_string_equal(sid, TEST_DOM_SID"-0");
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_sid_to_unix(test_ctx->idmap_ctx,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_DOM_SID"-"TEST_OFFSET_STR, &id);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SUCCESS);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(id, TEST_RANGE_MIN+TEST_OFFSET);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_unix_to_sid(test_ctx->idmap_ctx, id, &sid);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SUCCESS);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_string_equal(sid, TEST_DOM_SID"-"TEST_OFFSET_STR);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose}
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bosevoid test_map_id_external(void **state)
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose{
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose struct test_ctx *test_ctx;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose enum idmap_error_code err;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose uint32_t id;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose char *sid = NULL;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_ctx = talloc_get_type(*state, struct test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_non_null(test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_sid_to_unix(test_ctx->idmap_ctx, TEST_DOM_SID"1-1", &id);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_NO_DOMAIN);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_sid_to_unix(test_ctx->idmap_ctx, TEST_DOM_SID"-400000",
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &id);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_EXTERNAL);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_unix_to_sid(test_ctx->idmap_ctx, TEST_OFFSET - 1, &sid);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_NO_DOMAIN);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_sid_to_unix(test_ctx->idmap_ctx, TEST_DOM_SID"-0", &id);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_EXTERNAL);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_unix_to_sid(test_ctx->idmap_ctx, TEST_RANGE_MIN, &sid);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_EXTERNAL);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_sid_to_unix(test_ctx->idmap_ctx,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_DOM_SID"-"TEST_OFFSET_STR, &id);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_EXTERNAL);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_unix_to_sid(test_ctx->idmap_ctx,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_RANGE_MIN + TEST_OFFSET, &sid);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_EXTERNAL);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose}
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bosevoid test_check_sid_id(void **state)
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose{
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose struct test_ctx *test_ctx;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose enum idmap_error_code err;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_ctx = talloc_get_type(*state, struct test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_non_null(test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_check_sid_unix(test_ctx->idmap_ctx, TEST_DOM_SID"-400000",
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_RANGE_MIN-1);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_NO_RANGE);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_check_sid_unix(test_ctx->idmap_ctx, TEST_DOM_SID"-400000",
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_RANGE_MIN);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SUCCESS);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_check_sid_unix(test_ctx->idmap_ctx, TEST_DOM_SID"1-400000",
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_RANGE_MIN);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SID_UNKNOWN);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_check_sid_unix(test_ctx->idmap_ctx, TEST_DOM_SID"-400000",
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_RANGE_MAX + TEST_OFFSET);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SUCCESS);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_check_sid_unix(test_ctx->idmap_ctx, TEST_DOM_SID"-400000",
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_RANGE_MAX + TEST_OFFSET + 1);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_NO_RANGE);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose}
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bosevoid test_has_algorithmic(void **state)
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose{
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose struct test_ctx *test_ctx;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose bool use_id_mapping;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose enum idmap_error_code err;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_ctx = talloc_get_type(*state, struct test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_non_null(test_ctx);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_domain_has_algorithmic_mapping(NULL, NULL, &use_id_mapping);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SID_INVALID);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_domain_has_algorithmic_mapping(NULL, TEST_DOM_SID,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &use_id_mapping);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_CONTEXT_INVALID);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_domain_has_algorithmic_mapping(test_ctx->idmap_ctx, NULL,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &use_id_mapping);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SID_INVALID);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_domain_has_algorithmic_mapping(test_ctx->idmap_ctx,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_DOM_SID"1",
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &use_id_mapping);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SID_UNKNOWN);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_domain_has_algorithmic_mapping(test_ctx->idmap_ctx,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_DOM_SID,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &use_id_mapping);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SUCCESS);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_true(use_id_mapping);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose err = sss_idmap_domain_has_algorithmic_mapping(test_ctx->idmap_ctx,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose TEST_2_DOM_SID,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &use_id_mapping);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_int_equal(err, IDMAP_SUCCESS);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose assert_false(use_id_mapping);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose}
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Boseint main(int argc, const char *argv[])
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose{
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose poptContext pc;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose int opt;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose struct poptOption long_options[] = {
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose POPT_AUTOHELP
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose SSSD_DEBUG_OPTS
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose POPT_TABLEEND
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose };
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose const UnitTest tests[] = {
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose unit_test_setup_teardown(test_add_domain,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_sss_idmap_setup, test_sss_idmap_teardown),
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose unit_test_setup_teardown(test_map_id,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_sss_idmap_setup_with_domains,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_sss_idmap_teardown),
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose unit_test_setup_teardown(test_map_id_external,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_sss_idmap_setup_with_external_mappings,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_sss_idmap_teardown),
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose unit_test_setup_teardown(test_check_sid_id,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_sss_idmap_setup_with_domains,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_sss_idmap_teardown),
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose unit_test_setup_teardown(test_check_sid_id,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_sss_idmap_setup_with_external_mappings,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_sss_idmap_teardown),
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose unit_test_setup_teardown(test_has_algorithmic,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_sss_idmap_setup_with_both,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose test_sss_idmap_teardown),
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose };
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose /* Set debug level to invalid value so we can deside if -d 0 was used. */
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose debug_level = SSSDBG_INVALID;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose pc = poptGetContext(argv[0], argc, argv, long_options, 0);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose while((opt = poptGetNextOpt(pc)) != -1) {
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose switch(opt) {
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose default:
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose fprintf(stderr, "\nInvalid option %s: %s\n\n",
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose poptBadOption(pc, 0), poptStrerror(opt));
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose poptPrintUsage(pc, stderr, 0);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose return 1;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose }
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose }
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose poptFreeContext(pc);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose DEBUG_INIT(debug_level);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose tests_set_cwd();
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose return run_tests(tests);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose}