Setting URL correctly when username/password is not provided (#369)

* Adding Username/password optional

* fixing lint errors
This commit is contained in:
Shalabh Mohan Shrivastava 2020-06-25 13:29:52 -07:00 committed by GitHub
parent a6a0e3e3bc
commit 7b0fbe65cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 7 deletions

View File

@ -44,7 +44,10 @@ const (
defaultCollectionName = "daprCollection"
// mongodb://<username>:<password@<host>/<database><params>
connectionURIFormat = "mongodb://%s:%s@%s/%s%s"
connectionURIFormatWithAuthentication = "mongodb://%s:%s@%s/%s%s"
// mongodb://<host>/<database><params>
connectionURIFormat = "mongodb://%s/%s%s"
)
// MongoDB is a state store implementation for MongoDB
@ -262,15 +265,14 @@ func (m *MongoDB) doTransaction(sessCtx mongo.SessionContext, operations []state
}
func getMongoURI(metadata *mongoDBMetadata) string {
return fmt.Sprintf(connectionURIFormat, metadata.username, metadata.password, metadata.host, metadata.databaseName, metadata.params)
if metadata.username != "" && metadata.password != "" {
return fmt.Sprintf(connectionURIFormatWithAuthentication, metadata.username, metadata.password, metadata.host, metadata.databaseName, metadata.params)
}
return fmt.Sprintf(connectionURIFormat, metadata.host, metadata.databaseName, metadata.params)
}
func getMongoDBClient(metadata *mongoDBMetadata) (*mongo.Client, error) {
var uri string
if metadata.username != "" && metadata.password != "" {
uri = getMongoURI(metadata)
}
uri := getMongoURI(metadata)
// Set client options
clientOptions := options.Client().ApplyURI(uri)

View File

@ -83,6 +83,25 @@ func TestGetMongoDBMetadata(t *testing.T) {
assert.Equal(t, expected, uri)
})
t.Run("Valid connectionstring without username", func(t *testing.T) {
properties := map[string]string{
host: "localhost:27017",
databaseName: "TestDB",
collectionName: "TestCollection",
}
m := state.Metadata{
Properties: properties,
}
metadata, err := getMongoDBMetaData(m)
assert.Nil(t, err)
uri := getMongoURI(metadata)
expected := "mongodb://localhost:27017/TestDB"
assert.Equal(t, expected, uri)
})
t.Run("Valid connectionstring with params", func(t *testing.T) {
properties := map[string]string{
host: "127.0.0.2",