ldap_controls.phpt 4.4 KB

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