{
  "tests": [
    {
      "description": "User info for single IPv4 host without database",
      "uri": "mongodb://alice:foo@127.0.0.1",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "ipv4",
          "host": "127.0.0.1",
          "port": null
        }
      ],
      "auth": {
        "username": "alice",
        "password": "foo",
        "db": null
      },
      "options": null
    },
    {
      "description": "User info for single IPv4 host with database",
      "uri": "mongodb://alice:foo@127.0.0.1/test",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "ipv4",
          "host": "127.0.0.1",
          "port": null
        }
      ],
      "auth": {
        "username": "alice",
        "password": "foo",
        "db": "test"
      },
      "options": null
    },
    {
      "description": "User info for single IP literal host without database",
      "uri": "mongodb://bob:bar@[::1]:27018",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "ip_literal",
          "host": "::1",
          "port": 27018
        }
      ],
      "auth": {
        "username": "bob",
        "password": "bar",
        "db": null
      },
      "options": null
    },
    {
      "description": "User info for single IP literal host with database",
      "uri": "mongodb://bob:bar@[::1]:27018/admin",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "ip_literal",
          "host": "::1",
          "port": 27018
        }
      ],
      "auth": {
        "username": "bob",
        "password": "bar",
        "db": "admin"
      },
      "options": null
    },
    {
      "description": "User info for single hostname without database",
      "uri": "mongodb://eve:baz@example.com",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "hostname",
          "host": "example.com",
          "port": null
        }
      ],
      "auth": {
        "username": "eve",
        "password": "baz",
        "db": null
      },
      "options": null
    },
    {
      "description": "User info for single hostname with database",
      "uri": "mongodb://eve:baz@example.com/db2",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "hostname",
          "host": "example.com",
          "port": null
        }
      ],
      "auth": {
        "username": "eve",
        "password": "baz",
        "db": "db2"
      },
      "options": null
    },
    {
      "description": "User info for multiple hosts without database",
      "uri": "mongodb://alice:secret@127.0.0.1,example.com:27018",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "ipv4",
          "host": "127.0.0.1",
          "port": null
        },
        {
          "type": "hostname",
          "host": "example.com",
          "port": 27018
        }
      ],
      "auth": {
        "username": "alice",
        "password": "secret",
        "db": null
      },
      "options": null
    },
    {
      "description": "User info for multiple hosts with database",
      "uri": "mongodb://alice:secret@example.com,[::1]:27019/admin",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "hostname",
          "host": "example.com",
          "port": null
        },
        {
          "type": "ip_literal",
          "host": "::1",
          "port": 27019
        }
      ],
      "auth": {
        "username": "alice",
        "password": "secret",
        "db": "admin"
      },
      "options": null
    },
    {
      "description": "Username without password",
      "uri": "mongodb://alice@127.0.0.1",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "ipv4",
          "host": "127.0.0.1",
          "port": null
        }
      ],
      "auth": {
        "username": "alice",
        "password": null,
        "db": null
      },
      "options": null
    },
    {
      "description": "Username with empty password",
      "uri": "mongodb://alice:@127.0.0.1",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "ipv4",
          "host": "127.0.0.1",
          "port": null
        }
      ],
      "auth": {
        "username": "alice",
        "password": "",
        "db": null
      },
      "options": null
    },
    {
      "description": "Escaped username and database without password",
      "uri": "mongodb://%40l%3Ace%2F%3D@example.com/my%3Ddb",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "hostname",
          "host": "example.com",
          "port": null
        }
      ],
      "auth": {
        "username": "@l:ce/=",
        "password": null,
        "db": "my=db"
      },
      "options": null
    },
    {
      "description": "Escaped user info and database (MONGODB-CR)",
      "uri": "mongodb://%24am:f%3Azzb%40z%2Fz%3D@127.0.0.1/admin%3F?authMechanism=MONGODB-CR",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "ipv4",
          "host": "127.0.0.1",
          "port": null
        }
      ],
      "auth": {
        "username": "$am",
        "password": "f:zzb@z/z=",
        "db": "admin?"
      },
      "options": {
        "authmechanism": "MONGODB-CR"
      }
    },
    {
      "description": "Subdelimiters in user/pass don't need escaping (MONGODB-CR)",
      "uri": "mongodb://!$&'()*+,;=:!$&'()*+,;=@127.0.0.1/admin?authMechanism=MONGODB-CR",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "ipv4",
          "host": "127.0.0.1",
          "port": null
        }
      ],
      "auth": {
        "username": "!$&'()*+,;=",
        "password": "!$&'()*+,;=",
        "db": "admin"
      },
      "options": {
        "authmechanism": "MONGODB-CR"
      }
    },
    {
      "description": "Escaped username (MONGODB-X509)",
      "uri": "mongodb://CN%3DmyName%2COU%3DmyOrgUnit%2CO%3DmyOrg%2CL%3DmyLocality%2CST%3DmyState%2CC%3DmyCountry@localhost/?authMechanism=MONGODB-X509",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "hostname",
          "host": "localhost",
          "port": null
        }
      ],
      "auth": {
        "username": "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry",
        "password": null,
        "db": null
      },
      "options": {
        "authmechanism": "MONGODB-X509"
      }
    },
    {
      "description": "Escaped username (GSSAPI)",
      "uri": "mongodb://user%40EXAMPLE.COM:secret@localhost/?authMechanismProperties=SERVICE_NAME:other,CANONICALIZE_HOST_NAME:true&authMechanism=GSSAPI",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "hostname",
          "host": "localhost",
          "port": null
        }
      ],
      "auth": {
        "username": "user@EXAMPLE.COM",
        "password": "secret",
        "db": null
      },
      "options": {
        "authmechanism": "GSSAPI",
        "authmechanismproperties": {
          "SERVICE_NAME": "other",
          "CANONICALIZE_HOST_NAME": true
        }
      }
    },
    {
      "description": "At-signs in options aren't part of the userinfo",
      "uri": "mongodb://alice:secret@example.com/admin?replicaset=my@replicaset",
      "valid": true,
      "warning": false,
      "hosts": [
        {
          "type": "hostname",
          "host": "example.com",
          "port": null
        }
      ],
      "auth": {
        "username": "alice",
        "password": "secret",
        "db": "admin"
      },
      "options": {
        "replicaset": "my@replicaset"
      }
    }
  ]
}
