diff options
Diffstat (limited to 'ext/ldap/tests')
| -rw-r--r-- | ext/ldap/tests/bug48441.phpt | 171 | ||||
| -rw-r--r-- | ext/ldap/tests/connect.inc | 61 | ||||
| -rw-r--r-- | ext/ldap/tests/skipifbindfailure.inc | 13 |
3 files changed, 245 insertions, 0 deletions
diff --git a/ext/ldap/tests/bug48441.phpt b/ext/ldap/tests/bug48441.phpt new file mode 100644 index 0000000000..996413349d --- /dev/null +++ b/ext/ldap/tests/bug48441.phpt @@ -0,0 +1,171 @@ +--TEST-- +ldap_search() bug 48441 - options persists after specifying them in ldap_search +--CREDITS-- +Patrick Allaert <patrickallaert@php.net> +--SKIPIF-- +<?php +require_once('skipif.inc'); +require_once('skipifbindfailure.inc'); +?> +--FILE-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +insert_dummy_data($link); + +$dn = "dc=my-domain,dc=com"; +$filter = "(objectclass=person)"; + +var_dump( + $result = ldap_search($link, $dn, $filter, array('sn')), + ldap_get_entries($link, $result) +); +var_dump( + $result = ldap_search($link, $dn, $filter, array('sn'), 1, 1, 1, LDAP_DEREF_ALWAYS), + ldap_get_entries($link, $result) +); +var_dump( + $result = ldap_search($link, $dn, $filter, array('sn')), + ldap_get_entries($link, $result) +); +?> +===DONE=== +--CLEAN-- +<?php +include "connect.inc"; + +$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); +remove_dummy_data($link); +?> +--XFAIL-- +This test may still fail in PHP 6 as ext/ldap is still not ready +--EXPECTF-- +resource(%d) of type (ldap result) +array(4) { + ["count"]=> + int(3) + [0]=> + array(4) { + ["sn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(7) "testSN1" + } + [0]=> + string(2) "sn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userA,dc=my-domain,dc=com" + } + [1]=> + array(4) { + ["sn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(7) "testSN2" + } + [0]=> + string(2) "sn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userB,dc=my-domain,dc=com" + } + [2]=> + array(4) { + ["sn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(7) "testSN3" + } + [0]=> + string(2) "sn" + ["count"]=> + int(1) + ["dn"]=> + string(37) "cn=userC,cn=userB,dc=my-domain,dc=com" + } +} + +Warning: ldap_search(): Partial search results returned: Sizelimit exceeded in %s on line %d +resource(%d) of type (ldap result) +array(2) { + ["count"]=> + int(1) + [0]=> + array(4) { + ["sn"]=> + array(1) { + ["count"]=> + int(0) + } + [0]=> + string(2) "sn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userA,dc=my-domain,dc=com" + } +} +resource(%d) of type (ldap result) +array(4) { + ["count"]=> + int(3) + [0]=> + array(4) { + ["sn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(7) "testSN1" + } + [0]=> + string(2) "sn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userA,dc=my-domain,dc=com" + } + [1]=> + array(4) { + ["sn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(7) "testSN2" + } + [0]=> + string(2) "sn" + ["count"]=> + int(1) + ["dn"]=> + string(28) "cn=userB,dc=my-domain,dc=com" + } + [2]=> + array(4) { + ["sn"]=> + array(2) { + ["count"]=> + int(1) + [0]=> + string(7) "testSN3" + } + [0]=> + string(2) "sn" + ["count"]=> + int(1) + ["dn"]=> + string(37) "cn=userC,cn=userB,dc=my-domain,dc=com" + } +} +===DONE=== diff --git a/ext/ldap/tests/connect.inc b/ext/ldap/tests/connect.inc new file mode 100644 index 0000000000..ddb57828e9 --- /dev/null +++ b/ext/ldap/tests/connect.inc @@ -0,0 +1,61 @@ +<?php + +/* +Default values are "localhost", "root", database "test" and empty password. +Change the LDAP_TEST_* environment values if you want to use another configuration. +*/ + +$host = getenv("LDAP_TEST_HOST") ? getenv("LDAP_TEST_HOST") : "localhost"; +$port = getenv("LDAP_TEST_PORT") ? getenv("LDAP_TEST_PORT") : 389; +$user = getenv("LDAP_TEST_USER") ? getenv("LDAP_TEST_USER") : "cn=Manager,dc=my-domain,dc=com"; +$sasl_user = getenv("LDAP_TEST_SASL_USER") ? getenv("LDAP_TEST_SASL_USER") : "Manager"; +$passwd = getenv("LDAP_TEST_PASSWD") ? getenv("LDAP_TEST_PASSWD") : "secret"; +$protocol_version = getenv("LDAP_TEST_OPT_PROTOCOL_VERSION") ? getenv("LDAP_TEST_OPT_PROTOCOL_VERSION") : 3; +$skip_on_bind_failure = getenv("LDAP_TEST_SKIP_BIND_FAILURE") ? getenv("LDAP_TEST_SKIP_BIND_FAILURE") : true; + +function ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version) { + $link = ldap_connect($host, $port); + ldap_set_option($link, LDAP_OPT_PROTOCOL_VERSION, $protocol_version); + ldap_bind($link, $user, $passwd); + return $link; +} + +function insert_dummy_data($link) { + ldap_add($link, "dc=my-domain,dc=com", array( + "objectClass" => array( + "top", + "dcObject", + "organization"), + "dc" => "my-domain", + "o" => "my-domain", + )); + ldap_add($link, "cn=userA,dc=my-domain,dc=com", array( + "objectclass" => "person", + "cn" => "userA", + "sn" => "testSN1", + "userPassword" => "oops", + "telephoneNumber" => "xx-xx-xx-xx-xx", + "description" => "user A", + )); + ldap_add($link, "cn=userB,dc=my-domain,dc=com", array( + "objectclass" => "person", + "cn" => "userB", + "sn" => "testSN2", + "userPassword" => "oopsIDitItAgain", + "description" => "user B", + )); + ldap_add($link, "cn=userC,cn=userB,dc=my-domain,dc=com", array( + "objectclass" => "person", + "cn" => "userC", + "sn" => "testSN3", + "userPassword" => "0r1g1na1 passw0rd", + )); +} + +function remove_dummy_data($link) { + ldap_delete($link, "cn=userC,cn=userB,dc=my-domain,dc=com"); + ldap_delete($link, "cn=userA,dc=my-domain,dc=com"); + ldap_delete($link, "cn=userB,dc=my-domain,dc=com"); + ldap_delete($link, "dc=my-domain,dc=com"); +} +?> diff --git a/ext/ldap/tests/skipifbindfailure.inc b/ext/ldap/tests/skipifbindfailure.inc new file mode 100644 index 0000000000..f79bb9d690 --- /dev/null +++ b/ext/ldap/tests/skipifbindfailure.inc @@ -0,0 +1,13 @@ +<?php +require_once 'connect.inc'; + +if ($skip_on_bind_failure) { + + $link = ldap_connect($host, $port); + ldap_set_option($link, LDAP_OPT_PROTOCOL_VERSION, $protocol_version); + if (!@ldap_bind($link, $user, $passwd)) + die(sprintf("skip Can't bind to LDAP Server - [%d] %s", ldap_errno($link), ldap_error($link))); + + ldap_unbind($link); +} +?> |
