subtest
"localhost"
=>
sub
{
my
@hostpairs
= (
'localhost:27017'
);
is_deeply(
$uri
->hostpairs, \
@hostpairs
);
is_deeply(
$uri
->hostpairs, \
@hostpairs
,
"trailing comma"
);
};
subtest
"db_name"
=>
sub
{
is(
$uri
->db_name,
"example_db"
,
"parse db_name"
);
is(
$uri
->db_name,
"example_db"
,
"parse db_name with trailing comma on host"
);
is(
$uri
->db_name,
"example_db"
,
"parse db_name with trailing ?"
);
$uri
= MongoDB::_URI->new(
uri
=>
'mongodb://localhost,localhost:27020,localhost:27021/example_db'
);
is(
$uri
->db_name,
"example_db"
,
"parse db_name, many hosts"
);
is(
$uri
->db_name,
""
,
"no db_name with trailing ?"
);
};
subtest
"localhost with username/password"
=>
sub
{
my
@hostpairs
= (
'localhost:27017'
);
is_deeply(
$uri
->hostpairs, \
@hostpairs
);
is(
$uri
->username,
'fred'
);
is(
$uri
->password,
'foobar'
);
};
subtest
"localhost with username only"
=>
sub
{
my
@hostpairs
= (
'localhost:27017'
);
is_deeply(
$uri
->hostpairs, \
@hostpairs
);
is(
$uri
->username,
'fred'
);
is(
$uri
->password,
undef
);
};
subtest
"localhost with username/password and db"
=>
sub
{
my
@hostpairs
= (
'localhost:27017'
);
is_deeply(
$uri
->hostpairs, \
@hostpairs
);
is(
$uri
->username,
'fred'
);
is(
$uri
->password,
'foobar'
);
is(
$uri
->db_name,
'baz'
);
};
subtest
"localhost with username/password and db (trailing comma)"
=>
sub
{
my
@hostpairs
= (
'localhost:27017'
);
is_deeply(
$uri
->hostpairs, \
@hostpairs
);
is(
$uri
->username,
'fred'
);
is(
$uri
->password,
'foobar'
);
is(
$uri
->db_name,
'baz'
);
};
subtest
"localhost with username/password and db (trailing question)"
=>
sub
{
my
@hostpairs
= (
'localhost:27017'
);
is_deeply(
$uri
->hostpairs, \
@hostpairs
);
is(
$uri
->username,
'fred'
);
is(
$uri
->password,
'foobar'
);
is(
$uri
->db_name,
'baz'
);
};
subtest
"localhost with empty extras"
=>
sub
{
my
@hostpairs
= (
'localhost:27017'
);
is_deeply(
$uri
->hostpairs, \
@hostpairs
);
};
subtest
"multiple hostnames"
=>
sub
{
my
@hostpairs
= (
'example1.com:27017'
,
'example2.com:27017'
);
is_deeply(
$uri
->hostpairs, \
@hostpairs
);
};
subtest
"multiple hostnames at localhost"
=>
sub
{
my
@hostpairs
= (
'localhost:27017'
,
'localhost:27018'
,
'localhost:27019'
);
is_deeply(
$uri
->hostpairs, \
@hostpairs
);
};
subtest
"multiple hostnames (localhost/domain)"
=>
sub
{
my
$uri
= MongoDB::_URI->new(
uri
=>
'mongodb://localhost,example1.com:27018,localhost:27019'
);
my
@hostpairs
= (
'localhost:27017'
,
'example1.com:27018'
,
'localhost:27019'
);
is_deeply(
$uri
->hostpairs, \
@hostpairs
);
};
subtest
"multiple hostnames (localhost/domain)"
=>
sub
{
my
$uri
= MongoDB::_URI->new(
uri
=>
'mongodb://localhost,example1.com:27018,localhost:27019'
);
my
@hostpairs
= (
'localhost:27017'
,
'example1.com:27018'
,
'localhost:27019'
);
is_deeply(
$uri
->hostpairs, \
@hostpairs
);
};
subtest
"percent encoded username and password"
=>
sub
{
my
@hostpairs
= (
'localhost:27017'
);
is(
$uri
->username,
'dog:dogston'
);
is(
$uri
->password,
'p@ssword'
);
is_deeply(
$uri
->hostpairs, \
@hostpairs
);
};
subtest
"empty username and password"
=>
sub
{
is(
$uri
->username,
''
,
"empty username"
);
is(
$uri
->password,
''
,
"empty password"
);
};
subtest
"case normalization"
=>
sub
{
my
$uri
;
my
@hostpairs
= (
'example1.com:27017'
,
'example2.com:27017'
);
is_deeply(
$uri
->hostpairs, \
@hostpairs
,
"hostname normalized"
);
is(
$uri
->options->{readpreference},
'Primary'
,
"readPreference key normalized"
);
is(
$uri
->options->{wtimeoutms}, 1000,
"wTimeoutMS key normalized"
);
};
done_testing;