1{ 2 "tests": [ 3 { 4 "description": "User info for single IPv4 host without database", 5 "uri": "mongodb://alice:foo@127.0.0.1", 6 "valid": true, 7 "warning": false, 8 "hosts": [ 9 { 10 "type": "ipv4", 11 "host": "127.0.0.1", 12 "port": null 13 } 14 ], 15 "auth": { 16 "username": "alice", 17 "password": "foo", 18 "db": null 19 }, 20 "options": null 21 }, 22 { 23 "description": "User info for single IPv4 host with database", 24 "uri": "mongodb://alice:foo@127.0.0.1/test", 25 "valid": true, 26 "warning": false, 27 "hosts": [ 28 { 29 "type": "ipv4", 30 "host": "127.0.0.1", 31 "port": null 32 } 33 ], 34 "auth": { 35 "username": "alice", 36 "password": "foo", 37 "db": "test" 38 }, 39 "options": null 40 }, 41 { 42 "description": "User info for single IP literal host without database", 43 "uri": "mongodb://bob:bar@[::1]:27018", 44 "valid": true, 45 "warning": false, 46 "hosts": [ 47 { 48 "type": "ip_literal", 49 "host": "::1", 50 "port": 27018 51 } 52 ], 53 "auth": { 54 "username": "bob", 55 "password": "bar", 56 "db": null 57 }, 58 "options": null 59 }, 60 { 61 "description": "User info for single IP literal host with database", 62 "uri": "mongodb://bob:bar@[::1]:27018/admin", 63 "valid": true, 64 "warning": false, 65 "hosts": [ 66 { 67 "type": "ip_literal", 68 "host": "::1", 69 "port": 27018 70 } 71 ], 72 "auth": { 73 "username": "bob", 74 "password": "bar", 75 "db": "admin" 76 }, 77 "options": null 78 }, 79 { 80 "description": "User info for single hostname without database", 81 "uri": "mongodb://eve:baz@example.com", 82 "valid": true, 83 "warning": false, 84 "hosts": [ 85 { 86 "type": "hostname", 87 "host": "example.com", 88 "port": null 89 } 90 ], 91 "auth": { 92 "username": "eve", 93 "password": "baz", 94 "db": null 95 }, 96 "options": null 97 }, 98 { 99 "description": "User info for single hostname with database", 100 "uri": "mongodb://eve:baz@example.com/db2", 101 "valid": true, 102 "warning": false, 103 "hosts": [ 104 { 105 "type": "hostname", 106 "host": "example.com", 107 "port": null 108 } 109 ], 110 "auth": { 111 "username": "eve", 112 "password": "baz", 113 "db": "db2" 114 }, 115 "options": null 116 }, 117 { 118 "description": "User info for multiple hosts without database", 119 "uri": "mongodb://alice:secret@127.0.0.1,example.com:27018", 120 "valid": true, 121 "warning": false, 122 "hosts": [ 123 { 124 "type": "ipv4", 125 "host": "127.0.0.1", 126 "port": null 127 }, 128 { 129 "type": "hostname", 130 "host": "example.com", 131 "port": 27018 132 } 133 ], 134 "auth": { 135 "username": "alice", 136 "password": "secret", 137 "db": null 138 }, 139 "options": null 140 }, 141 { 142 "description": "User info for multiple hosts with database", 143 "uri": "mongodb://alice:secret@example.com,[::1]:27019/admin", 144 "valid": true, 145 "warning": false, 146 "hosts": [ 147 { 148 "type": "hostname", 149 "host": "example.com", 150 "port": null 151 }, 152 { 153 "type": "ip_literal", 154 "host": "::1", 155 "port": 27019 156 } 157 ], 158 "auth": { 159 "username": "alice", 160 "password": "secret", 161 "db": "admin" 162 }, 163 "options": null 164 }, 165 { 166 "description": "Username without password", 167 "uri": "mongodb://alice@127.0.0.1", 168 "valid": true, 169 "warning": false, 170 "hosts": [ 171 { 172 "type": "ipv4", 173 "host": "127.0.0.1", 174 "port": null 175 } 176 ], 177 "auth": { 178 "username": "alice", 179 "password": null, 180 "db": null 181 }, 182 "options": null 183 }, 184 { 185 "description": "Username with empty password", 186 "uri": "mongodb://alice:@127.0.0.1", 187 "valid": true, 188 "warning": false, 189 "hosts": [ 190 { 191 "type": "ipv4", 192 "host": "127.0.0.1", 193 "port": null 194 } 195 ], 196 "auth": { 197 "username": "alice", 198 "password": "", 199 "db": null 200 }, 201 "options": null 202 }, 203 { 204 "description": "Escaped username and database without password", 205 "uri": "mongodb://%40l%3Ace%2F%3D@example.com/my%3Ddb", 206 "valid": true, 207 "warning": false, 208 "hosts": [ 209 { 210 "type": "hostname", 211 "host": "example.com", 212 "port": null 213 } 214 ], 215 "auth": { 216 "username": "@l:ce/=", 217 "password": null, 218 "db": "my=db" 219 }, 220 "options": null 221 }, 222 { 223 "description": "Escaped user info and database (MONGODB-CR)", 224 "uri": "mongodb://%24am:f%3Azzb%40z%2Fz%3D@127.0.0.1/admin%3F?authMechanism=MONGODB-CR", 225 "valid": true, 226 "warning": false, 227 "hosts": [ 228 { 229 "type": "ipv4", 230 "host": "127.0.0.1", 231 "port": null 232 } 233 ], 234 "auth": { 235 "username": "$am", 236 "password": "f:zzb@z/z=", 237 "db": "admin?" 238 }, 239 "options": { 240 "authmechanism": "MONGODB-CR" 241 } 242 }, 243 { 244 "description": "Subdelimiters in user/pass don't need escaping (MONGODB-CR)", 245 "uri": "mongodb://!$&'()*+,;=:!$&'()*+,;=@127.0.0.1/admin?authMechanism=MONGODB-CR", 246 "valid": true, 247 "warning": false, 248 "hosts": [ 249 { 250 "type": "ipv4", 251 "host": "127.0.0.1", 252 "port": null 253 } 254 ], 255 "auth": { 256 "username": "!$&'()*+,;=", 257 "password": "!$&'()*+,;=", 258 "db": "admin" 259 }, 260 "options": { 261 "authmechanism": "MONGODB-CR" 262 } 263 }, 264 { 265 "description": "Escaped username (MONGODB-X509)", 266 "uri": "mongodb://CN%3DmyName%2COU%3DmyOrgUnit%2CO%3DmyOrg%2CL%3DmyLocality%2CST%3DmyState%2CC%3DmyCountry@localhost/?authMechanism=MONGODB-X509", 267 "valid": true, 268 "warning": false, 269 "hosts": [ 270 { 271 "type": "hostname", 272 "host": "localhost", 273 "port": null 274 } 275 ], 276 "auth": { 277 "username": "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry", 278 "password": null, 279 "db": null 280 }, 281 "options": { 282 "authmechanism": "MONGODB-X509" 283 } 284 }, 285 { 286 "description": "Escaped username (GSSAPI)", 287 "uri": "mongodb://user%40EXAMPLE.COM:secret@localhost/?authMechanismProperties=SERVICE_NAME:other,CANONICALIZE_HOST_NAME:true&authMechanism=GSSAPI", 288 "valid": true, 289 "warning": false, 290 "hosts": [ 291 { 292 "type": "hostname", 293 "host": "localhost", 294 "port": null 295 } 296 ], 297 "auth": { 298 "username": "user@EXAMPLE.COM", 299 "password": "secret", 300 "db": null 301 }, 302 "options": { 303 "authmechanism": "GSSAPI", 304 "authmechanismproperties": { 305 "SERVICE_NAME": "other", 306 "CANONICALIZE_HOST_NAME": true 307 } 308 } 309 }, 310 { 311 "description": "At-signs in options aren't part of the userinfo", 312 "uri": "mongodb://alice:secret@example.com/admin?replicaset=my@replicaset", 313 "valid": true, 314 "warning": false, 315 "hosts": [ 316 { 317 "type": "hostname", 318 "host": "example.com", 319 "port": null 320 } 321 ], 322 "auth": { 323 "username": "alice", 324 "password": "secret", 325 "db": "admin" 326 }, 327 "options": { 328 "replicaset": "my@replicaset" 329 } 330 } 331 ] 332} 333