Marcus Boerger <[EMAIL PROTECTED]> writes:

  [ I'm resending this, as I haven't seen it ]
  [ in the internals list :-?                ]

>   thanks for your efforts so far. What the test is missing now is that
> skipif doesn't detect whether an ldap server can be connected after all,
> just like the database test's skipif try to connect the database. Maybe
> you need some settings, prefereable in environment variables for that.
> Anyway skipif should prevent the test from running when there is no
> setup to test against. As soon as i have that addition i can test it
> on our gcov machine and commit the test.

Ok, here it is a second cut at it. I hope this is what you are looking
for.

Saludos. Iñaki.

-- 
School of Management
Mondragon University
20560 Oñati - Spain
+34 943 718009 (ext. 225)

GPG Key available at public keyservers



<?php

/* Change the values to reflect your LDAP environment
 */

$ldap_host = '127.0.0.1';
$ldap_user = 'cn=ldap-user,dc=my,dc=domain,dc=com';
$ldap_password = 'ldap-user';

?>


<?php

/* Change the values to reflect your LDAP environment
 */

$query_base_dn = 'dc=my,dc=domain,dc=com';
$query_filter = 'objectClass=*';
$query_attribs = array('cn');

?>


<?php


if (!extension_loaded('ldap')) {
    die ("skip no ldap extension\n");
}

include ('connect.inc');

$link = @ldap_connect ($ldap_host);
if (!$link) {
    die ("skip cannot connect\n");
}

if ([EMAIL PROTECTED] ($link, LDAP_OPT_PROTOCOL_VERSION, 3)) {
    die ("skip cannot set LDAP protocol version to 3\n");
}

if ([EMAIL PROTECTED] ($link, $ldap_user, $ldap_password)) {
    die ("skip cannot bind\n");
}

@ldap_close ($link);

?>


--TEST--
ldap paged results control extension (RFC2606)
--SKIPIF--
<?php include('skipif.inc'); ?>
--FILE--
<?php

define ('PAGED_CONTROL_OID', '1.2.840.113556.1.4.319');
define ('PAGE_SIZE', 5);

include ('query.inc');

$cookie = '';

$link = ldap_connect ($ldap_host);
if (!$link) {
    exit ("Not OK: ldap_connect\n");
}

if (!ldap_set_option ($link, LDAP_OPT_PROTOCOL_VERSION, 3)) {
    exit ("Not OK: ldap_set_option (v3)\n");
}

if (!ldap_bind ($link, $ldap_user, $ldap_password)) {
    exit ("Not OK: ldap_bind\n");
}

$continue = true;
while ($continue) {
    $paged_control = array(
                        array(
                            'oid' => PAGED_CONTROL_OID,
                            'iscritical' => true,
                            'value' => ldap_ber_printf ('{iO}',
                                                        PAGE_SIZE, $cookie)
                        )
                     );
    if ([EMAIL PROTECTED] ($link, LDAP_OPT_SERVER_CONTROLS, $paged_control)) {
        exit ("Not OK: ldap_set_option (controls)\n");
    }

    $sr = @ldap_search ($link, $query_base_dn, $query_filter, $query_attribs,
                       0, 0, 0, LDAP_DEREF_NEVER);

    if ($sr === FALSE) {
        exit ("Not OK: ldap_search\n");
        exit;
    }

    if ([EMAIL PROTECTED] ($link, $sr, &$errcode, &$matcheddn, &$errmsg,
                             &$referrals, &$serverctrls)) {
        exit ("Not OK: ldap_parse_result\n");
        exit;
    }

    $paged_control_found = FALSE;
    if (isset($serverctrls)) {
        foreach ($serverctrls as $i) {
            if ($i['oid'] == PAGED_CONTROL_OID) {
                ldap_ber_scanf ($i['value'], '{iO}', &$pagesize, &$cookie);
                $paged_control_found = TRUE;
                break;
            }
        }
    }
    if (!$paged_control_found) {
        exit ("Not OK: paged control not found in response \n");
        exit;
    }

    if (FALSE === ($num_entries = @ldap_count_entries ($link, $sr))) {
        exit ("Not OK: ldap_count_entries\n");
        exit;
    }

    if ($num_entries > PAGE_SIZE) {
        exit ('Not OK: received more than '. PAGE_SIZE . " entries\n");
        exit;
    }

    if (($num_entries != PAGE_SIZE) && ($cookie != '')) {
        exit ('Not OK: received less than '. PAGE_SIZE . " entries\n");
        exit;
    }

    if ($cookie == '') {
        $continue = false;
    }
}

exit ("OK\n");

?>
--EXPECT
OK

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to