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