diff --git a/adapters/mongo_adapter.go b/adapters/mongo_adapter.go index 8e4c2af..1b85357 100644 --- a/adapters/mongo_adapter.go +++ b/adapters/mongo_adapter.go @@ -14,7 +14,7 @@ type mongoAdapter struct { } func (adapter mongoAdapter) HasDatabase(ctx context.Context, database string) (bool, error) { - databaseNames, err := adapter.client.ListDatabaseNames(ctx, bson.D{{Key: "empty", Value: false}}) + databaseNames, err := adapter.client.ListDatabaseNames(ctx, bson.D{}) if err != nil { return false, err } @@ -24,7 +24,7 @@ func (adapter mongoAdapter) HasDatabase(ctx context.Context, database string) (b func (adapter mongoAdapter) CreateDatabase(ctx context.Context, database string) error { // create dummy data as mongo only creates databases if they contain something - _, err := adapter.client.Database(database).Collection("__internal-placeholder__").InsertOne(ctx, bson.D{{Key: "empty", Value: true}}) + _, err := adapter.client.Database(database).Collection("delete_me").InsertOne(ctx, bson.D{{Key: "empty", Value: true}}) return err } diff --git a/adapters/utils_test.go b/adapters/utils_test.go index 5ba3ec0..4139415 100644 --- a/adapters/utils_test.go +++ b/adapters/utils_test.go @@ -10,13 +10,16 @@ import ( func testHelper(t *testing.T, ctx context.Context, adapter adapters.DatabaseAdapter) { // given var err error + databaseName := "guestbook" + databaseUsername := "guestbook-admin" + databasePassword := "top-secret-123" t.Cleanup(func() { - if err = adapter.DeleteDatabaseUser(ctx, "guestbook", "guestbook-admin"); err != nil { + if err = adapter.DeleteDatabaseUser(ctx, databaseName, databaseUsername); err != nil { t.Errorf("Error deleting database user: %s", err) } - if err := adapter.DeleteDatabase(ctx, "guestbook"); err != nil { + if err := adapter.DeleteDatabase(ctx, databaseName); err != nil { t.Errorf("Error deleting database: %s", err) } @@ -26,21 +29,27 @@ func testHelper(t *testing.T, ctx context.Context, adapter adapters.DatabaseAdap }) // when - err = adapter.CreateDatabase(ctx, "guestbook") + err = adapter.CreateDatabase(ctx, databaseName) if err != nil { t.Fatalf("Error creating database: %s", err) } - err = adapter.CreateDatabaseUser(ctx, "guestbook", "guestbook-admin", "test123") + err = adapter.CreateDatabaseUser(ctx, databaseName, databaseUsername, databasePassword) if err != nil { t.Fatalf("Error creating database user: %s", err) } // then - res, err := adapter.HasDatabaseUserWithAccess(ctx, "guestbook", "guestbook-admin") + hasDatabase, err := adapter.HasDatabase(ctx, databaseName) if err != nil { t.Fatalf("Error creating database: %s", err) + } else if !hasDatabase { + t.Fatalf("Database does not exists") } - if !res { + + hasDatabaseUserWithAccess, err := adapter.HasDatabaseUserWithAccess(ctx, databaseName, databaseUsername) + if err != nil { + t.Fatalf("Error creating database user with access: %s", err) + } else if !hasDatabaseUserWithAccess { t.Fatalf("Database user does not exists") } } diff --git a/docker-compose.yml b/docker-compose.yml index 01c79ab..bc11788 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,3 +15,13 @@ services: MONGO_INITDB_ROOT_PASSWORD: "1234" ports: - 27017:27017 + mongo-express: + image: mongo-express + ports: + - 8081:8081 + environment: + ME_CONFIG_MONGODB_ADMINUSERNAME: admin + ME_CONFIG_MONGODB_ADMINPASSWORD: 1234 + ME_CONFIG_MONGODB_SERVER: mongodb + depends_on: + - mongodb \ No newline at end of file