test_ad_common.c revision 30dd3f3e063dded0ec9f58bc2535a94727d8e96d
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek/*
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek Authors:
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek Jakub Hrozek <jhrozek@redhat.com>
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek Copyright (C) 2013 Red Hat
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek SSSD tests: AD access control filter tests
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek This program is free software; you can redistribute it and/or modify
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek it under the terms of the GNU General Public License as published by
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek the Free Software Foundation; either version 3 of the License, or
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek (at your option) any later version.
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek This program is distributed in the hope that it will be useful,
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek but WITHOUT ANY WARRANTY; without even the implied warranty of
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek GNU General Public License for more details.
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek You should have received a copy of the GNU General Public License
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek along with this program. If not, see <http://www.gnu.org/licenses/>.
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek*/
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek#include <talloc.h>
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek#include <tevent.h>
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek#include <errno.h>
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek#include <popt.h>
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek#include <unistd.h>
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek#include <sys/types.h>
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek#include <ifaddrs.h>
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek#include <arpa/inet.h>
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek/* In order to access opaque types */
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek#include "providers/ad/ad_common.c"
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek#include "tests/cmocka/common_mock.h"
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek#include "tests/cmocka/common_mock_krb5.h"
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek#define DOMNAME "domname"
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek#define SUBDOMNAME "sub."DOMNAME
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek#define REALMNAME DOMNAME
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek#define HOST_NAME "ad."REALMNAME
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek#define TEST_AUTHID "host/"HOST_NAME
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek#define KEYTAB_TEST_PRINC TEST_AUTHID"@"REALMNAME
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek#define KEYTAB_PATH TEST_DIR"/keytab_test.keytab"
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek#define ONEWAY_DOMNAME "ONEWAY"
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek#define ONEWAY_HOST_NAME "ad."ONEWAY_DOMNAME
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek#define ONEWAY_KEYTAB_PATH TEST_DIR"/oneway_test.keytab"
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek#define ONEWAY_AUTHID "host/"ONEWAY_HOST_NAME
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek#define ONEWAY_TEST_PRINC ONEWAY_AUTHID"@"ONEWAY_DOMNAME
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozekstatic bool call_real_sasl_options;
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozekkrb5_error_code __wrap_krb5_kt_default(krb5_context context, krb5_keytab *id)
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek{
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek return krb5_kt_resolve(context, KEYTAB_PATH, id);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek}
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozekstruct ad_common_test_ctx {
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct ad_id_ctx *ad_ctx;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct ad_id_ctx *subdom_ad_ctx;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct sss_domain_info *dom;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct sss_domain_info *subdom;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek};
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
933314e53fac878d1a9b126af216454172cb945aJakub Hrozekstatic void test_ad_create_default_options(void **state)
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek{
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek struct ad_options *ad_options;
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek const char *s;
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek ad_options = ad_create_default_options(global_talloc_context);
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek assert_non_null(ad_options->basic);
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek /* Not too much to test here except some defaults */
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek s = dp_opt_get_string(ad_options->basic, AD_DOMAIN);
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek assert_null(s);
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek assert_non_null(ad_options->id);
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek}
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozekstatic int test_ad_common_setup(void **state)
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek{
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct ad_common_test_ctx *test_ctx;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_true(leak_check_setup());
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek check_leaks_push(global_talloc_context);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek test_ctx = talloc_zero(global_talloc_context, struct ad_common_test_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(test_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek test_ctx->dom = talloc_zero(test_ctx, struct sss_domain_info);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(test_ctx->dom);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek test_ctx->dom->name = discard_const(DOMNAME);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek test_ctx->subdom = talloc_zero(test_ctx, struct sss_domain_info);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(test_ctx->subdom);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek test_ctx->subdom->name = discard_const(SUBDOMNAME);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek test_ctx->subdom->parent = test_ctx->dom;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek test_ctx->ad_ctx = talloc_zero(test_ctx, struct ad_id_ctx);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_non_null(test_ctx->ad_ctx);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek check_leaks_push(test_ctx);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek *state = test_ctx;
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek return 0;
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek}
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozekstatic int test_ad_common_teardown(void **state)
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek{
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek struct ad_common_test_ctx *test_ctx = talloc_get_type(*state,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek struct ad_common_test_ctx);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_non_null(test_ctx);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_true(check_leaks_pop(test_ctx) == true);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek talloc_free(test_ctx);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_true(check_leaks_pop(global_talloc_context) == true);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_true(leak_check_teardown());
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek return 0;
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek}
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozekstatic void test_ad_create_1way_trust_options(void **state)
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek{
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek struct ad_common_test_ctx *test_ctx = talloc_get_type(*state,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek struct ad_common_test_ctx);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek const char *s;
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek call_real_sasl_options = true;
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek /* Make sure this is not the keytab that __wrap_krb5_kt_default uses */
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek mock_keytab_with_contents(test_ctx, ONEWAY_KEYTAB_PATH, ONEWAY_TEST_PRINC);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek test_ctx->ad_ctx->ad_options = ad_create_1way_trust_options(
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek test_ctx->ad_ctx,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek ONEWAY_DOMNAME,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek ONEWAY_HOST_NAME,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek ONEWAY_KEYTAB_PATH,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek ONEWAY_AUTHID);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_non_null(test_ctx->ad_ctx->ad_options);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_int_equal(test_ctx->ad_ctx->ad_options->id->schema_type,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek SDAP_SCHEMA_AD);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->basic,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek AD_KRB5_REALM);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_non_null(s);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_string_equal(s, ONEWAY_DOMNAME);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->basic,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek AD_DOMAIN);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_non_null(s);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_string_equal(s, ONEWAY_DOMNAME);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->basic,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek AD_HOSTNAME);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_non_null(s);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_string_equal(s, ONEWAY_HOST_NAME);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->basic,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek AD_KEYTAB);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_non_null(s);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_string_equal(s, ONEWAY_KEYTAB_PATH);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->id->basic,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek SDAP_KRB5_KEYTAB);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_non_null(s);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->id->basic,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek SDAP_SASL_REALM);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_non_null(s);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_string_equal(s, ONEWAY_DOMNAME);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->id->basic,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek SDAP_KRB5_REALM);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_non_null(s);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_string_equal(s, ONEWAY_DOMNAME);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->id->basic,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek SDAP_SASL_AUTHID);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_non_null(s);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek assert_string_equal(s, ONEWAY_AUTHID);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek talloc_free(test_ctx->ad_ctx->ad_options);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek unlink(ONEWAY_KEYTAB_PATH);
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek}
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozekstatic void test_ad_create_2way_trust_options(void **state)
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek{
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek struct ad_common_test_ctx *test_ctx = talloc_get_type(*state,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek struct ad_common_test_ctx);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek const char *s;
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek call_real_sasl_options = true;
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek mock_keytab_with_contents(test_ctx, KEYTAB_PATH, KEYTAB_TEST_PRINC);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek test_ctx->ad_ctx->ad_options = ad_create_2way_trust_options(
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek test_ctx->ad_ctx,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek REALMNAME,
de2bad8ae08f09964834bda0f88db9de39f47c5cJakub Hrozek DOMNAME,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek HOST_NAME);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_non_null(test_ctx->ad_ctx->ad_options);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_int_equal(test_ctx->ad_ctx->ad_options->id->schema_type,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek SDAP_SCHEMA_AD);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->basic,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek AD_KRB5_REALM);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_non_null(s);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_string_equal(s, REALMNAME);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
de2bad8ae08f09964834bda0f88db9de39f47c5cJakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->basic,
de2bad8ae08f09964834bda0f88db9de39f47c5cJakub Hrozek AD_DOMAIN);
de2bad8ae08f09964834bda0f88db9de39f47c5cJakub Hrozek assert_non_null(s);
de2bad8ae08f09964834bda0f88db9de39f47c5cJakub Hrozek assert_string_equal(s, DOMNAME);
de2bad8ae08f09964834bda0f88db9de39f47c5cJakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->basic,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek AD_HOSTNAME);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_non_null(s);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_string_equal(s, HOST_NAME);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->id->basic,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek SDAP_KRB5_KEYTAB);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_null(s); /* This is the system keytab */
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->id->basic,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek SDAP_SASL_REALM);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_non_null(s);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_string_equal(s, REALMNAME);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->id->basic,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek SDAP_KRB5_REALM);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_non_null(s);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_string_equal(s, REALMNAME);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->id->basic,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek SDAP_SASL_AUTHID);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_non_null(s);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_string_equal(s, TEST_AUTHID);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek talloc_free(test_ctx->ad_ctx->ad_options);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek}
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozekstatic int
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozektest_ldap_conn_setup(void **state)
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek{
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek struct ad_common_test_ctx *test_ctx;
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek errno_t ret;
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek struct sdap_domain *sdom;
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek struct ad_id_ctx *ad_ctx;
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek struct ad_id_ctx *subdom_ad_ctx;
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek struct sdap_id_conn_ctx *subdom_ldap_ctx;
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek ret = test_ad_common_setup((void **) &test_ctx);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek assert_int_equal(ret, EOK);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek ad_ctx = test_ctx->ad_ctx;
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek ad_ctx->ad_options = ad_create_2way_trust_options(ad_ctx,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek REALMNAME,
de2bad8ae08f09964834bda0f88db9de39f47c5cJakub Hrozek DOMNAME,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek HOST_NAME);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(ad_ctx->ad_options);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek ad_ctx->gc_ctx = talloc_zero(ad_ctx, struct sdap_id_conn_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(ad_ctx->gc_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek ad_ctx->ldap_ctx = talloc_zero(ad_ctx, struct sdap_id_conn_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(ad_ctx->ldap_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek ad_ctx->sdap_id_ctx = talloc_zero(ad_ctx, struct sdap_id_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(ad_ctx->sdap_id_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek ad_ctx->sdap_id_ctx->opts = talloc_zero(ad_ctx->sdap_id_ctx,
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct sdap_options);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(ad_ctx->sdap_id_ctx->opts);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek ret = sdap_domain_add(ad_ctx->sdap_id_ctx->opts, test_ctx->dom, &sdom);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_int_equal(ret, EOK);
e2bd4f8a41b72aea0712ad21ad02ccebb707f536Stephen Gallagher sdom->pvt = ad_ctx;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek subdom_ad_ctx = talloc_zero(test_ctx, struct ad_id_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(subdom_ad_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek subdom_ldap_ctx = talloc_zero(subdom_ad_ctx, struct sdap_id_conn_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(subdom_ldap_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek subdom_ad_ctx->ldap_ctx = subdom_ldap_ctx;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek ret = sdap_domain_add(ad_ctx->sdap_id_ctx->opts, test_ctx->subdom, &sdom);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_int_equal(ret, EOK);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek sdom->pvt = subdom_ad_ctx;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek test_ctx->subdom_ad_ctx = subdom_ad_ctx;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek *state = test_ctx;
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek return 0;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek}
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozekstatic int
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozektest_ldap_conn_teardown(void **state)
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek{
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct ad_common_test_ctx *test_ctx = talloc_get_type(*state,
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct ad_common_test_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(test_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek talloc_free(test_ctx->subdom_ad_ctx);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek talloc_free(test_ctx->ad_ctx->ad_options);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek talloc_free(test_ctx->ad_ctx->gc_ctx);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek talloc_free(test_ctx->ad_ctx->ldap_ctx);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek talloc_free(test_ctx->ad_ctx->sdap_id_ctx);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek test_ad_common_teardown((void **) &test_ctx);
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek return 0;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek}
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozekerrno_t
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek__real_sdap_set_sasl_options(struct sdap_options *id_opts,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek char *default_primary,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek char *default_realm,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek const char *keytab_path);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozekerrno_t
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek__wrap_sdap_set_sasl_options(struct sdap_options *id_opts,
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek char *default_primary,
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek char *default_realm,
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek const char *keytab_path)
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek{
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek /* Pretend SASL is fine */
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek if (call_real_sasl_options == true) {
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek return __real_sdap_set_sasl_options(id_opts,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek default_primary,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek default_realm,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek keytab_path);
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek }
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek return EOK;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek}
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozekvoid test_ldap_conn_list(void **state)
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek{
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct sdap_id_conn_ctx *conn;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct ad_common_test_ctx *test_ctx = talloc_get_type(*state,
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct ad_common_test_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(test_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek conn = ad_get_dom_ldap_conn(test_ctx->ad_ctx, test_ctx->dom);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_true(conn == test_ctx->ad_ctx->ldap_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek conn = ad_get_dom_ldap_conn(test_ctx->ad_ctx, test_ctx->subdom);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_true(conn == test_ctx->subdom_ad_ctx->ldap_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek}
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozekvoid test_conn_list(void **state)
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek{
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct sdap_id_conn_ctx **conn_list;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct ad_common_test_ctx *test_ctx = talloc_get_type(*state,
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct ad_common_test_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(test_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek assert_true(dp_opt_get_bool(test_ctx->ad_ctx->ad_options->basic,
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek AD_ENABLE_GC));
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek conn_list = ad_gc_conn_list(test_ctx, test_ctx->ad_ctx, test_ctx->dom);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(conn_list);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_true(conn_list[0] == test_ctx->ad_ctx->gc_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek /* If there is a fallback, we should ignore the offline mode */
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_true(conn_list[0]->ignore_mark_offline);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_true(conn_list[1] == test_ctx->ad_ctx->ldap_ctx);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_false(conn_list[1]->ignore_mark_offline);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_null(conn_list[2]);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek talloc_free(conn_list);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek conn_list = ad_gc_conn_list(test_ctx, test_ctx->ad_ctx, test_ctx->subdom);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_non_null(conn_list);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek assert_true(conn_list[0] == test_ctx->ad_ctx->gc_ctx);
266110fa0f6eb086f8f88787bb167cea416fe108Jakub Hrozek assert_true(conn_list[0]->ignore_mark_offline);
266110fa0f6eb086f8f88787bb167cea416fe108Jakub Hrozek assert_true(conn_list[1] == test_ctx->subdom_ad_ctx->ldap_ctx);
266110fa0f6eb086f8f88787bb167cea416fe108Jakub Hrozek assert_false(conn_list[1]->ignore_mark_offline);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek talloc_free(conn_list);
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek dp_opt_set_bool(test_ctx->ad_ctx->ad_options->basic, AD_ENABLE_GC, false);
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek assert_false(dp_opt_get_bool(test_ctx->ad_ctx->ad_options->basic,
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek AD_ENABLE_GC));
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek conn_list = ad_gc_conn_list(test_ctx, test_ctx->ad_ctx, test_ctx->dom);
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek assert_non_null(conn_list);
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek assert_true(conn_list[0] == test_ctx->ad_ctx->ldap_ctx);
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek assert_false(conn_list[0]->ignore_mark_offline);
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek assert_null(conn_list[1]);
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek talloc_free(conn_list);
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek conn_list = ad_gc_conn_list(test_ctx, test_ctx->ad_ctx, test_ctx->subdom);
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek assert_non_null(conn_list);
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek
266110fa0f6eb086f8f88787bb167cea416fe108Jakub Hrozek assert_true(conn_list[0] == test_ctx->subdom_ad_ctx->ldap_ctx);
ba4a81e933deebb416603369b447ead6ebaa040dJakub Hrozek talloc_free(conn_list);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek}
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozekint main(int argc, const char *argv[])
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek{
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek poptContext pc;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek int opt;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek struct poptOption long_options[] = {
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek POPT_AUTOHELP
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek SSSD_DEBUG_OPTS
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek POPT_TABLEEND
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek };
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek const struct CMUnitTest tests[] = {
933314e53fac878d1a9b126af216454172cb945aJakub Hrozek cmocka_unit_test(test_ad_create_default_options),
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek cmocka_unit_test_setup_teardown(test_ad_create_1way_trust_options,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek test_ad_common_setup,
30dd3f3e063dded0ec9f58bc2535a94727d8e96dJakub Hrozek test_ad_common_teardown),
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek cmocka_unit_test_setup_teardown(test_ad_create_2way_trust_options,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek test_ad_common_setup,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek test_ad_common_teardown),
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek cmocka_unit_test_setup_teardown(test_ldap_conn_list,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek test_ldap_conn_setup,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek test_ldap_conn_teardown),
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek cmocka_unit_test_setup_teardown(test_conn_list,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek test_ldap_conn_setup,
51b5e1475b3e0b7acac34ed382cfaca8411883a4Jakub Hrozek test_ldap_conn_teardown),
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek };
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek /* Set debug level to invalid value so we can deside if -d 0 was used. */
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek debug_level = SSSDBG_INVALID;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek pc = poptGetContext(argv[0], argc, argv, long_options, 0);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek while((opt = poptGetNextOpt(pc)) != -1) {
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek switch(opt) {
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek default:
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek fprintf(stderr, "\nInvalid option %s: %s\n\n",
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek poptBadOption(pc, 0), poptStrerror(opt));
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek poptPrintUsage(pc, stderr, 0);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek return 1;
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek }
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek }
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek poptFreeContext(pc);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
6b57784f0f175275fd900eca21c77415e3a5ea52Jakub Hrozek DEBUG_CLI_INIT(debug_level);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek tests_set_cwd();
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek
4e5e846de22407f825fe3b4040d79606818a2419Jakub Hrozek return cmocka_run_group_tests(tests, NULL, NULL);
72ae534f5aef6d2e5d3f2f51299aede5abf9687eJakub Hrozek}