xref: /PHP-8.0/ext/ldap/tests/ldap_controls.phpt (revision f8d79582)
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--CLEAN--
54<?php
55include "connect.inc";
56
57$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
58remove_dummy_data($link, $base);
59?>
60--EXPECTF--
61Warning: ldap_search(): Search: Assertion Failed in %s on line %d
62
63Warning: ldap_modify(): Modify: Assertion Failed in %s on line %d
64
65Warning: ldap_delete(): Delete: Assertion Failed in %s on line %d
66
67Warning: ldap_compare(): Compare: Assertion Failed in %s on line %d
68resource(%d) of type (ldap result)
69array(2) {
70  ["count"]=>
71  int(1)
72  [0]=>
73  array(4) {
74    ["o"]=>
75    array(2) {
76      ["count"]=>
77      int(1)
78      [0]=>
79      string(4) "test"
80    }
81    [0]=>
82    string(1) "o"
83    ["count"]=>
84    int(1)
85    ["dn"]=>
86    string(%d) "o=test,%s"
87  }
88}
89bool(false)
90bool(true)
91resource(%d) of type (ldap result)
92array(2) {
93  ["count"]=>
94  int(1)
95  [0]=>
96  array(4) {
97    ["description"]=>
98    array(2) {
99      ["count"]=>
100      int(1)
101      [0]=>
102      string(4) "desc"
103    }
104    [0]=>
105    string(11) "description"
106    ["count"]=>
107    int(1)
108    ["dn"]=>
109    string(%d) "o=test,%s"
110  }
111}
112bool(false)
113resource(%d) of type (ldap result)
114array(2) {
115  ["count"]=>
116  int(1)
117  [0]=>
118  array(4) {
119    ["description"]=>
120    array(2) {
121      ["count"]=>
122      int(1)
123      [0]=>
124      string(4) "desc"
125    }
126    [0]=>
127    string(11) "description"
128    ["count"]=>
129    int(1)
130    ["dn"]=>
131    string(%d) "o=test,%s"
132  }
133}
134bool(false)
135int(122)
136string(16) "Assertion Failed"
137bool(false)
138bool(true)
139int(-1)
140bool(true)
141resource(%d) of type (ldap result)
142array(4) {
143  ["count"]=>
144  int(3)
145  [0]=>
146  string(4) "here"
147  [1]=>
148  string(5) "there"
149  [2]=>
150  string(10) "Antarctica"
151}
152resource(%d) of type (ldap result)
153array(3) {
154  ["count"]=>
155  int(2)
156  [0]=>
157  string(4) "here"
158  [1]=>
159  string(5) "there"
160}
161