Skip to content

Commit 0c5d4f3

Browse files
committed
Regression tests for slaveOk URI option
1 parent 8f0e411 commit 0c5d4f3

File tree

1 file changed

+125
-0
lines changed

1 file changed

+125
-0
lines changed
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
--TEST--
2+
MongoDB\Driver\Manager::__construct(): read preference options (slaveok)
3+
--FILE--
4+
<?php
5+
6+
$tests = [
7+
['mongodb://127.0.0.1/?slaveok=true', []],
8+
['mongodb://127.0.0.1/?slaveok=false', []],
9+
// True array option will override any read preference in the URI string
10+
['mongodb://127.0.0.1/?slaveok=false', ['slaveok' => true]],
11+
['mongodb://127.0.0.1/?readPreference=nearest', ['slaveok' => true]],
12+
// False array option is ignored
13+
['mongodb://127.0.0.1/?slaveok=true', ['slaveok' => false]],
14+
// readPreference option takes priority
15+
['mongodb://127.0.0.1/?slaveok=true&readPreference=nearest', []],
16+
['mongodb://127.0.0.1/?slaveok=false&readPreference=nearest', []],
17+
['mongodb://127.0.0.1/?slaveok=true', ['readPreference' => 'nearest']],
18+
['mongodb://127.0.0.1/?slaveok=false', ['readPreference' => 'nearest']],
19+
[null, ['readPreference' => 'nearest', 'slaveok' => true]],
20+
[null, ['readPreference' => 'nearest', 'slaveok' => true]],
21+
// Alternative values for true in URI string (all other strings are false)
22+
['mongodb://127.0.0.1/?slaveok=t', []],
23+
['mongodb://127.0.0.1/?slaveok=1', []],
24+
['mongodb://127.0.0.1/?slaveok=anything_other_than_true_t_and_0', []],
25+
// Case insensitivity for URI string and array options
26+
['mongodb://127.0.0.1/?slaveOk=True', []],
27+
['mongodb://127.0.0.1/?SLAVEOK=TRUE', []],
28+
[null, ['slaveOk' => true]],
29+
[null, ['SLAVEOK' => true]],
30+
// Strict type checking on options array (non-booleans are ignored)
31+
[null, ['slaveok' => 'true']],
32+
[null, ['slaveok' => 1]],
33+
];
34+
35+
foreach ($tests as $test) {
36+
list($uri, $options) = $test;
37+
38+
$manager = new MongoDB\Driver\Manager($uri, $options);
39+
var_dump($manager->getReadPreference());
40+
}
41+
42+
?>
43+
===DONE===
44+
--EXPECTF--
45+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
46+
["mode"]=>
47+
string(18) "secondaryPreferred"
48+
}
49+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
50+
["mode"]=>
51+
string(7) "primary"
52+
}
53+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
54+
["mode"]=>
55+
string(18) "secondaryPreferred"
56+
}
57+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
58+
["mode"]=>
59+
string(18) "secondaryPreferred"
60+
}
61+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
62+
["mode"]=>
63+
string(18) "secondaryPreferred"
64+
}
65+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
66+
["mode"]=>
67+
string(7) "nearest"
68+
}
69+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
70+
["mode"]=>
71+
string(7) "nearest"
72+
}
73+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
74+
["mode"]=>
75+
string(7) "nearest"
76+
}
77+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
78+
["mode"]=>
79+
string(7) "nearest"
80+
}
81+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
82+
["mode"]=>
83+
string(7) "nearest"
84+
}
85+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
86+
["mode"]=>
87+
string(7) "nearest"
88+
}
89+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
90+
["mode"]=>
91+
string(18) "secondaryPreferred"
92+
}
93+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
94+
["mode"]=>
95+
string(18) "secondaryPreferred"
96+
}
97+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
98+
["mode"]=>
99+
string(7) "primary"
100+
}
101+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
102+
["mode"]=>
103+
string(18) "secondaryPreferred"
104+
}
105+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
106+
["mode"]=>
107+
string(18) "secondaryPreferred"
108+
}
109+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
110+
["mode"]=>
111+
string(18) "secondaryPreferred"
112+
}
113+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
114+
["mode"]=>
115+
string(18) "secondaryPreferred"
116+
}
117+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
118+
["mode"]=>
119+
string(7) "primary"
120+
}
121+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
122+
["mode"]=>
123+
string(7) "primary"
124+
}
125+
===DONE===

0 commit comments

Comments
 (0)