diff --git a/state/mongodb/mongodb.go b/state/mongodb/mongodb.go index 74e677e94..7ea986e48 100644 --- a/state/mongodb/mongodb.go +++ b/state/mongodb/mongodb.go @@ -44,7 +44,10 @@ const ( defaultCollectionName = "daprCollection" // mongodb://:/ - connectionURIFormat = "mongodb://%s:%s@%s/%s%s" + connectionURIFormatWithAuthentication = "mongodb://%s:%s@%s/%s%s" + + // mongodb:/// + 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) diff --git a/state/mongodb/mongodb_test.go b/state/mongodb/mongodb_test.go index 4801abdc1..3a55cf11c 100644 --- a/state/mongodb/mongodb_test.go +++ b/state/mongodb/mongodb_test.go @@ -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",