ReactOS  0.4.13-dev-464-g6b95727
parse.c
Go to the documentation of this file.
1 /*
2  * test parsing functions
3  *
4  * Copyright 2008 Hans Leidekker for CodeWeavers
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20 
21 #include <stdarg.h>
22 #include <stdlib.h>
23 #include <windef.h>
24 #include <winbase.h>
25 #include <winldap.h>
26 
27 #include "wine/test.h"
28 
30 {
31  ULONG ret, result;
32  LDAPSortKeyA *sortkeys[2], key;
33  LDAPControlA *sort, *ctrls[2], **server_ctrls;
34  LDAPMessage *res = NULL;
35  struct l_timeval timeout;
36 
37  key.sk_attrtype = (char *)"ou";
38  key.sk_matchruleoid = NULL;
39  key.sk_reverseorder = FALSE;
40 
41  sortkeys[0] = &key;
42  sortkeys[1] = NULL;
43  ret = ldap_create_sort_controlA( ld, sortkeys, 0, &sort );
44  ok( !ret, "ldap_create_sort_controlA failed 0x%x\n", ret );
45 
46  ctrls[0] = sort;
47  ctrls[1] = NULL;
48  timeout.tv_sec = 20;
49  timeout.tv_usec = 0;
50  ret = ldap_search_ext_sA( ld, (char *)"", LDAP_SCOPE_ONELEVEL, (char *)"(ou=*)", NULL, 0, ctrls, NULL, &timeout, 10, &res );
51  if (ret == LDAP_SERVER_DOWN || ret == LDAP_TIMEOUT)
52  {
53  skip("test server can't be reached\n");
55  return;
56  }
57  ok( !ret, "ldap_search_ext_sA failed 0x%x\n", ret );
58  ok( res != NULL, "expected res != NULL\n" );
59 
60  if (GetProcAddress(GetModuleHandleA("wldap32.dll"), "ber_init"))
61  {
62  ret = ldap_parse_resultA( NULL, res, &result, NULL, NULL, NULL, &server_ctrls, 1 );
63  ok( ret == LDAP_PARAM_ERROR, "ldap_parse_resultA failed 0x%x\n", ret );
64  }
65  else
66  win_skip("Test would crash on older wldap32 versions\n");
67 
68  result = ~0u;
69  ret = ldap_parse_resultA( ld, res, &result, NULL, NULL, NULL, &server_ctrls, 1 );
70  ok( !ret, "ldap_parse_resultA failed 0x%x\n", ret );
71  ok( !result, "got 0x%x expected 0\n", result );
72 
74  ok( ret == LDAP_PARAM_ERROR, "ldap_parse_sort_controlA failed 0x%d\n", ret );
75 
77  ok( ret == LDAP_CONTROL_NOT_FOUND, "ldap_parse_sort_controlA failed 0x%x\n", ret );
78 
80  ok( ret == LDAP_CONTROL_NOT_FOUND, "ldap_parse_sort_controlA failed 0x%x\n", ret );
81 
82  ret = ldap_parse_sort_controlA( ld, server_ctrls, &result, NULL );
83  ok( ret == LDAP_CONTROL_NOT_FOUND, "ldap_parse_sort_controlA failed 0x%x\n", ret );
84 
86  ldap_controls_freeA( server_ctrls );
87 }
88 
89 static void test_ldap_search_extW( LDAP *ld )
90 {
91  ULONG ret, message, timelimit;
92  WCHAR base[] = {0}, filter[] = {'o','u','=','*',0};
93 
94  timelimit = 20;
95  ret = ldap_search_extW( ld, base, LDAP_SCOPE_SUBTREE, filter, NULL, 0, NULL, NULL, timelimit, 0, &message );
97  {
98  skip("test server can't be reached\n");
99  return;
100  }
101  ok( !ret, "ldap_search_extW failed 0x%08x\n", ret );
102 
103  timelimit = 0;
104  ret = ldap_search_extW( ld, base, LDAP_SCOPE_SUBTREE, filter, NULL, 0, NULL, NULL, timelimit, 0, &message );
105  ok( !ret, "ldap_search_extW failed 0x%08x\n", ret );
106 }
107 
108 static void test_ldap_set_optionW( LDAP *ld )
109 {
110  ULONG ret, oldvalue;
111 
112  ret = ldap_get_optionW( ld, LDAP_OPT_REFERRALS, &oldvalue );
114  {
115  skip("test server can't be reached\n");
116  return;
117  }
118 
120  ok( !ret || broken(ret == LDAP_PARAM_ERROR) /* nt4, win2k */, "ldap_set_optionW failed 0x%08x\n", ret );
121 
122  ret = ldap_set_optionW( ld, LDAP_OPT_REFERRALS, (void *)&oldvalue );
123  ok( !ret, "ldap_set_optionW failed 0x%08x\n", ret );
124 }
125 
126 static void test_ldap_get_optionW( LDAP *ld )
127 {
128  ULONG ret, version;
129 
131  ok( !ret, "ldap_get_optionW failed 0x%08x\n", ret );
132  ok( version == LDAP_VERSION3, "got %u\n", version );
133 }
134 
135 START_TEST (parse)
136 {
137  LDAP *ld;
138 
139  ld = ldap_initA((char *)"ldap.itd.umich.edu", 389 );
140  ok( ld != NULL, "ldap_init failed\n" );
141 
143  test_ldap_search_extW( ld );
144  test_ldap_get_optionW( ld );
145  test_ldap_set_optionW( ld );
146  ldap_unbind( ld );
147 }
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
ULONG CDECL ldap_controls_freeA(LDAPControlA **controls)
Definition: control.c:84
static void test_ldap_parse_sort_control(LDAP *ld)
Definition: parse.c:29
START_TEST(parse)
Definition: parse.c:135
Definition: tftpd.h:59
ULONG CDECL ldap_get_optionW(WLDAP32_LDAP *ld, int option, void *value)
Definition: option.c:183
ULONG CDECL ldap_parse_sort_controlA(WLDAP32_LDAP *ld, PLDAPControlA *control, ULONG *result, PCHAR *attr)
Definition: parse.c:273
_STLP_MOVE_TO_STD_NAMESPACE void sort(_RandomAccessIter __first, _RandomAccessIter __last)
Definition: _algo.c:993
GLenum GLuint GLenum GLsizei const GLchar * message
Definition: glext.h:5579
WINLDAPAPI ULONG ldap_unbind(LDAP *)
ULONG CDECL ldap_parse_resultA(WLDAP32_LDAP *ld, WLDAP32_LDAPMessage *result, ULONG *retcode, PCHAR *matched, PCHAR *error, PCHAR **referrals, PLDAPControlA **serverctrls, BOOLEAN free)
Definition: parse.c:179
Definition: dhcpd.h:245
#define LDAP_PARAM_ERROR
Definition: winldap.h:109
#define LDAP_OPT_OFF
Definition: winldap.h:128
#define LDAP_CONTROL_NOT_FOUND
Definition: winldap.h:113
static void test_ldap_set_optionW(LDAP *ld)
Definition: parse.c:108
#define LDAP_OPT_PROTOCOL_VERSION
Definition: winldap.h:145
#define LDAP_VERSION3
Definition: winldap.h:49
static void test_ldap_get_optionW(LDAP *ld)
Definition: parse.c:126
ULONG CDECL ldap_create_sort_controlA(WLDAP32_LDAP *ld, PLDAPSortKeyA *sortkey, UCHAR critical, PLDAPControlA *control)
Definition: control.c:124
#define LDAP_TIMEOUT
Definition: winldap.h:105
#define ok(value,...)
smooth NULL
Definition: ftsmooth.c:416
static const WCHAR version[]
Definition: asmname.c:64
ULONG CDECL ldap_set_optionW(WLDAP32_LDAP *ld, int option, void *value)
Definition: option.c:416
#define LDAP_SCOPE_ONELEVEL
Definition: winldap.h:189
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define LDAP_UNAVAILABLE
Definition: winldap.h:89
ULONG CDECL ldap_control_freeA(LDAPControlA *control)
Definition: control.c:44
ULONG CDECL ldap_search_extW(WLDAP32_LDAP *ld, PWCHAR base, ULONG scope, PWCHAR filter, PWCHAR attrs[], ULONG attrsonly, PLDAPControlW *serverctrls, PLDAPControlW *clientctrls, ULONG timelimit, ULONG sizelimit, ULONG *message)
Definition: search.c:236
int ret
ULONG CDECL ldap_search_ext_sA(WLDAP32_LDAP *ld, PCHAR base, ULONG scope, PCHAR filter, PCHAR attrs[], ULONG attrsonly, PLDAPControlA *serverctrls, PLDAPControlA *clientctrls, struct l_timeval *timeout, ULONG sizelimit, WLDAP32_LDAPMessage **res)
Definition: search.c:301
HKEY key
Definition: reg.c:42
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:819
WLDAP32_LDAP *CDECL ldap_initA(const PCHAR hostname, ULONG portnumber)
Definition: init.c:330
#define broken(x)
Definition: _sntprintf.h:21
#define LDAP_SCOPE_SUBTREE
Definition: winldap.h:190
#define LDAP_SERVER_DOWN
Definition: winldap.h:101
#define skip(...)
GLuint res
Definition: glext.h:9613
unsigned int ULONG
Definition: retypes.h:1
#define GetProcAddress(x, y)
Definition: compat.h:410
GLuint64EXT * result
Definition: glext.h:11304
#define win_skip
Definition: test.h:141
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: glext.h:7005
static void test_ldap_search_extW(LDAP *ld)
Definition: parse.c:89
Definition: path.c:42
#define LDAP_OPT_REFERRALS
Definition: winldap.h:137