xref: /PHP-7.4/ext/ldap/tests/ldap_controls.phpt (revision 76e9de68)
1--TEST--
2Test the use of controls
3--CREDITS--
4Côme Chilliet <mcmic@php.net>
5--SKIPIF--
6<?php
7require_once('skipif.inc');
8require_once('skipifbindfailure.inc');
9require_once('skipifcontrol.inc');
10skipifunsupportedcontrol(LDAP_CONTROL_ASSERT);
11skipifunsupportedcontrol(LDAP_CONTROL_VALUESRETURNFILTER);
12?>
13--FILE--
14<?php
15include "connect.inc";
16
17$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
18insert_dummy_data($link, $base);
19
20/* Test assertion control */
21var_dump(
22	$result = ldap_search($link, "o=test,$base", "objectClass=*", array('o'), 0, 0, 0, LDAP_DEREF_NEVER,
23		[['oid' => LDAP_CONTROL_ASSERT, 'iscritical' => TRUE, 'value' => ['filter' => '(objectClass=organization)']]]),
24	ldap_get_entries($link, $result),
25	$result = ldap_search($link, "o=test,$base", "objectClass=*", array('o'), 0, 0, 0, LDAP_DEREF_NEVER,
26		[['oid' => LDAP_CONTROL_ASSERT, 'iscritical' => TRUE, 'value' => ['filter' => '(objectClass=organizationalUnit)']]]),
27	ldap_modify($link, "o=test,$base", ['description' => 'desc'],
28		[['oid' => LDAP_CONTROL_ASSERT, 'iscritical' => TRUE, 'value' => ['filter' => '(!(description=*))']]]),
29	$result = ldap_read($link, "o=test,$base", "objectClass=*", array('description')),
30	ldap_get_entries($link, $result),
31	ldap_modify($link, "o=test,$base", ['description' => 'desc2'],
32		[['oid' => LDAP_CONTROL_ASSERT, 'iscritical' => TRUE, 'value' => ['filter' => '(!(description=*))']]]),
33	$result = ldap_read($link, "o=test,$base", "objectClass=*", array('description')),
34	ldap_get_entries($link, $result),
35	ldap_delete($link, "o=test,$base", [['oid' => LDAP_CONTROL_ASSERT, 'iscritical' => TRUE, 'value' => ['filter' => '(description=desc2)']]]),
36	ldap_errno($link),
37	ldap_error($link),
38	ldap_rename($link, "o=test,$base", "o=test2", "", TRUE, [['oid' => LDAP_CONTROL_ASSERT, 'iscritical' => TRUE, 'value' => ['filter' => '(description=desc2)']]]),
39	ldap_compare($link, "o=test,$base", "o", "test"),
40	ldap_compare($link, "o=test,$base", "o", "test", [['oid' => LDAP_CONTROL_ASSERT, 'iscritical' => TRUE, 'value' => ['filter' => '(description=desc2)']]]),
41	ldap_compare($link, "o=test,$base", "o", "test", [['oid' => LDAP_CONTROL_ASSERT, 'iscritical' => TRUE, 'value' => ['filter' => '(description=desc)']]])
42);
43
44/* Test valuesreturnfilter control */
45var_dump(
46	$result = ldap_read($link, "o=test2,$base", "objectClass=*", ["l"]),
47	ldap_get_entries($link, $result)[0]['l'],
48	$result = ldap_read($link, "o=test2,$base", "objectClass=*", ["l"], 0, 0, 0, LDAP_DEREF_NEVER,
49		[['oid' => LDAP_CONTROL_VALUESRETURNFILTER, 'iscritical' => TRUE, 'value' => ['filter' => '(l=*here)']]]),
50	ldap_get_entries($link, $result)[0]['l']
51);
52?>
53===DONE===
54--CLEAN--
55<?php
56include "connect.inc";
57
58$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
59remove_dummy_data($link, $base);
60?>
61--EXPECTF--
62Warning: ldap_search(): Search: Assertion Failed in %s on line %d
63
64Warning: ldap_modify(): Modify: Assertion Failed in %s on line %d
65
66Warning: ldap_delete(): Delete: Assertion Failed in %s on line %d
67
68Warning: ldap_compare(): Compare: Assertion Failed in %s on line %d
69resource(%d) of type (ldap result)
70array(2) {
71  ["count"]=>
72  int(1)
73  [0]=>
74  array(4) {
75    ["o"]=>
76    array(2) {
77      ["count"]=>
78      int(1)
79      [0]=>
80      string(4) "test"
81    }
82    [0]=>
83    string(1) "o"
84    ["count"]=>
85    int(1)
86    ["dn"]=>
87    string(%d) "o=test,%s"
88  }
89}
90bool(false)
91bool(true)
92resource(%d) of type (ldap result)
93array(2) {
94  ["count"]=>
95  int(1)
96  [0]=>
97  array(4) {
98    ["description"]=>
99    array(2) {
100      ["count"]=>
101      int(1)
102      [0]=>
103      string(4) "desc"
104    }
105    [0]=>
106    string(11) "description"
107    ["count"]=>
108    int(1)
109    ["dn"]=>
110    string(%d) "o=test,%s"
111  }
112}
113bool(false)
114resource(%d) of type (ldap result)
115array(2) {
116  ["count"]=>
117  int(1)
118  [0]=>
119  array(4) {
120    ["description"]=>
121    array(2) {
122      ["count"]=>
123      int(1)
124      [0]=>
125      string(4) "desc"
126    }
127    [0]=>
128    string(11) "description"
129    ["count"]=>
130    int(1)
131    ["dn"]=>
132    string(%d) "o=test,%s"
133  }
134}
135bool(false)
136int(122)
137string(16) "Assertion Failed"
138bool(false)
139bool(true)
140int(-1)
141bool(true)
142resource(%d) of type (ldap result)
143array(4) {
144  ["count"]=>
145  int(3)
146  [0]=>
147  string(4) "here"
148  [1]=>
149  string(5) "there"
150  [2]=>
151  string(10) "Antarctica"
152}
153resource(%d) of type (ldap result)
154array(3) {
155  ["count"]=>
156  int(2)
157  [0]=>
158  string(4) "here"
159  [1]=>
160  string(5) "there"
161}
162===DONE===
163