cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl Pavel Reichl <preichl@redhat.com>
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl Copyright (C) 2013 Red Hat
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl SSSD tests - Search bases
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl This program is free software; you can redistribute it and/or modify
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl it under the terms of the GNU General Public License as published by
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl the Free Software Foundation; either version 3 of the License, or
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl (at your option) any later version.
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl This program is distributed in the hope that it will be useful,
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl but WITHOUT ANY WARRANTY; without even the implied warranty of
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl GNU General Public License for more details.
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl You should have received a copy of the GNU General Public License
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl along with this program. If not, see <http://www.gnu.org/licenses/>.
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl DN_IN_DOM1, /* dn is in the domain based on dns */
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl DN_IN_DOM2, /* dn is in the domain based on dns2 */
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichlstatic struct sdap_search_base** generate_bases(TALLOC_CTX *mem_ctx,
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl search_bases = talloc_array(mem_ctx, struct sdap_search_base *, n + 1);
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl for (i=0; i < n; ++i) {
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl err = sdap_create_search_base(mem_ctx, dns[i], LDAP_SCOPE_SUBTREE,
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl fprintf(stderr, "Failed to create search base\n");
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichlstatic bool do_test_search_bases(const char* dn, const char** dns, size_t n)
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl search_bases = generate_bases(tmp_ctx, dns, n);
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl ret = sss_ldap_dn_in_search_bases(tmp_ctx, dn, search_bases, NULL);
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl const char *dn = "cn=user, dc=sub, dc=ad, dc=pb";
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl const char *dns[] = {"dc=example, dc=com", "dc=subdom, dc=ad, dc=pb"};
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl const char *dn = "cn=user, dc=sub, dc=ad, dc=pb";
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl const char *dns[] = {"", "dc=ad, dc=pb", "dc=sub, dc=ad, dc=pb"};
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichlstatic void do_test_get_by_dn(const char *dn, const char **dns, size_t n,
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl const char **dns2, size_t n2, int expected_result)
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl search_bases = generate_bases(tmp_ctx, dns, n);
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl search_bases2 = generate_bases(tmp_ctx, dns2, n2);
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl sdom = talloc_zero(tmp_ctx, struct sdap_domain);
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl sdom2 = talloc_zero(tmp_ctx, struct sdap_domain);
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl const char *dn = "cn=user, dc=sub, dc=ad, dc=pb";
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl do_test_get_by_dn(dn, dns, 1, dns2, 1, DN_IN_DOM2);
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl do_test_get_by_dn(dn, dns, 1, dns2, 1, DN_IN_DOM1);
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl const char *dn = "cn=user, dc=sub, dc=example, dc=com";
cebdc563a094d305b91da5b5af4d95d8e3a1bf27Pavel Reichl do_test_get_by_dn(dn, dns, 1, dns2, 1, DN_NOT_IN_DOMS);