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