2
2
test_myldap.c - simple test for the myldap module
3
3
This file is part of the nss-pam-ldapd library.
5
Copyright (C) 2007, 2008, 2009 Arthur de Jong
5
Copyright (C) 2007, 2008, 2009, 2011 Arthur de Jong
7
7
This library is free software; you can redistribute it and/or
8
8
modify it under the terms of the GNU Lesser General Public
29
29
#include <assert.h>
30
30
#include <signal.h>
32
34
#include "nslcd/log.h"
33
35
#include "nslcd/cfg.h"
34
36
#include "nslcd/myldap.h"
36
#ifndef __ASSERT_FUNCTION
37
#define __ASSERT_FUNCTION ""
38
#endif /* not __ASSERT_FUNCTION */
40
#define assertstreq(str1,str2) \
41
(assertstreq_impl(str1,str2,"strcmp(" __STRING(str1) "," __STRING(str2) ")==0", \
42
__FILE__, __LINE__, __ASSERT_FUNCTION))
45
#define __assert_fail(assertion,file,line,function) __assert(assertion,file,line)
47
/* method for determening string equalness */
48
static void assertstreq_impl(const char *str1,const char *str2,
49
const char *assertion,const char *file,
50
int line,const char *function)
52
if (strcmp(str1,str2)!=0)
53
__assert_fail(assertion,file,line,function);
56
38
struct worker_args {
60
static const char *foo="";
62
/* this is a simple way to get this into an executable,
63
we should probably read a valid config instead */
64
const char **base_get_var(int UNUSED(map)) {return NULL;}
65
int *scope_get_var(int UNUSED(map)) {return NULL;}
66
const char **filter_get_var(int UNUSED(map)) {return &foo;}
67
const char **attmap_get_var(int UNUSED(map),const char UNUSED(*name)) {return &foo;}
68
const char *attmap_get_value(MYLDAP_ENTRY UNUSED(*entry),const char UNUSED(*attr),char UNUSED(*buffer),size_t UNUSED(buflen)) {return "";}
69
void *attmap_add_attributes(void UNUSED(*set),const char UNUSED(*attr)) {return NULL;}
70
const char *attmap_set_mapping(const char UNUSED(**var),const char UNUSED(*value)) {return NULL;}
72
42
/* the maxium number of results to print (all results are retrieved) */
73
43
#define MAXRESULTS 10
104
74
printf("test_myldap: test_search(): ...\n");
106
76
printf("test_myldap: test_search(): %d entries returned: %s\n",i,ldap_err2string(rc));
77
assert(rc==LDAP_SUCCESS);
107
78
/* perform another search */
108
79
printf("test_myldap: test_search(): doing search...\n");
109
80
search=myldap_search(session,nslcd_cfg->ldc_bases[0],
121
92
printf("test_myldap: test_search(): ...\n");
123
94
printf("test_myldap: test_search(): %d entries returned: %s\n",i,ldap_err2string(rc));
95
assert(rc==LDAP_SUCCESS);
125
97
myldap_session_close(session);
130
102
MYLDAP_SESSION *session;
131
103
MYLDAP_SEARCH *search1,*search2;
132
104
MYLDAP_ENTRY *entry;
133
const char *attrs1[] = { "cn", "userPassword", "memberUid", "gidNumber", "uniqueMember", NULL };
105
const char *attrs1[] = { "cn", "userPassword", "memberUid", "gidNumber", "member", NULL };
134
106
const char *attrs2[] = { "uid", NULL };
136
108
/* initialize session */
141
113
printf("test_myldap: test_get(): doing search...\n");
142
114
search1=myldap_search(session,nslcd_cfg->ldc_bases[0],
143
115
LDAP_SCOPE_SUBTREE,
144
"(&(|(objectClass=posixGroup)(objectClass=groupOfUniqueNames))(cn=testgroup2))",
116
"(&(|(objectClass=posixGroup)(objectClass=groupOfNames))(cn=testgroup2))",
146
118
assert(search1!=NULL);
147
119
/* get one entry */
152
124
(void)myldap_get_values(entry,"gidNumber");
153
125
(void)myldap_get_values(entry,"userPassword");
154
126
(void)myldap_get_values(entry,"memberUid");
155
(void)myldap_get_values(entry,"uniqueMember");
127
(void)myldap_get_values(entry,"member");
156
128
/* perform another search */
157
129
printf("test_myldap: test_get(): doing get...\n");
158
130
search2=myldap_search(session,"cn=Test User2,ou=people,dc=test,dc=tld",