HEX
Server: LiteSpeed
System: Linux server161.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: imagzxcb (1058)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //home/imagzxcb/www/db127a/cursor-setTypeMap_error-004.phpt.tar
opt/alt/tests/alt-php84-pecl-mongodb_1.20.0-2.el8/tests/cursor-setTypeMap_error-004.phpt000064400000003534152044222430024163 0ustar00--TEST--
Cursor::setTypeMap(): invalid fieldPaths keys
--SKIPIF--
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
<?php skip_if_not_live(); ?>
<?php skip_if_not_clean(); ?>
--FILE--
<?php

require_once __DIR__ . "/../utils/basic.inc";

class MyDocument extends ArrayObject implements MongoDB\BSON\Unserializable
{
    public function bsonUnserialize(array $data): void
    {
        parent::__construct($data, ArrayObject::ARRAY_AS_PROPS);
    }
}

$fieldPaths = [
    ['' => 'MyDocument'],
    ['.foo' => 'MyDocument'],
    ['...' => 'MyDocument'],
    ['foo.' => 'MyDocument'],
    ['foo..bar' => 'MyDocument'],
];

$manager = create_test_manager();
$cursor = $manager->executeQuery(NS, new MongoDB\Driver\Query([]));

foreach ($fieldPaths as $fieldPath) {
    $typeMap = ['fieldPaths' => $fieldPath];

    printf("Test typeMap: %s\n", json_encode($typeMap));

    echo throws(function() use ($cursor, $typeMap) {
        $cursor->setTypeMap($typeMap);
    }, 'MongoDB\Driver\Exception\InvalidArgumentException'), "\n";

    echo "\n";
}

?>
===DONE===
<?php exit(0); ?>
--EXPECT--
Test typeMap: {"fieldPaths":{"":"MyDocument"}}
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
The 'fieldPaths' element may not be an empty string

Test typeMap: {"fieldPaths":{".foo":"MyDocument"}}
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
A 'fieldPaths' key may not start with a '.'

Test typeMap: {"fieldPaths":{"...":"MyDocument"}}
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
A 'fieldPaths' key may not start with a '.'

Test typeMap: {"fieldPaths":{"foo.":"MyDocument"}}
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
A 'fieldPaths' key may not end with a '.'

Test typeMap: {"fieldPaths":{"foo..bar":"MyDocument"}}
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
A 'fieldPaths' key may not have an empty segment

===DONE===