ldap_controls.phpt 4.3 KB

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