@@ -16,6 +16,7 @@ import (
1616 "github.com/stretchr/testify/require"
1717
1818 "gitlab.com/postgres-ai/database-lab/v3/pkg/models"
19+ "gitlab.com/postgres-ai/database-lab/v3/pkg/util/projection"
1920)
2021
2122func TestDBLabClientHealth (t * testing.T ) {
@@ -130,7 +131,13 @@ func TestDBLabClientUpdateSourceConfig(t *testing.T) {
130131 assert .Equal (t , http .MethodPost , r .Method )
131132 assert .Equal (t , "application/json" , r .Header .Get ("Content-Type" ))
132133
133- err := json .NewDecoder (r .Body ).Decode (& receivedConfig )
134+ var nested map [string ]interface {}
135+ err := json .NewDecoder (r .Body ).Decode (& nested )
136+ require .NoError (t , err )
137+
138+ err = projection .LoadJSON (& receivedConfig , nested , projection.LoadOptions {
139+ Groups : []string {"default" , "sensitive" },
140+ })
134141 require .NoError (t , err )
135142
136143 w .WriteHeader (http .StatusOK )
@@ -140,14 +147,48 @@ func TestDBLabClientUpdateSourceConfig(t *testing.T) {
140147 client , err := NewDBLabClient (& DBLabConfig {APIEndpoint : server .URL , Token : "test-token" })
141148 require .NoError (t , err )
142149
143- err = client .UpdateSourceConfig (context .Background (), "clone-host.rds.amazonaws.com" , 5432 , "postgres" , "dbuser" , "dbpass" )
150+ err = client .UpdateSourceConfig (context .Background (), SourceConfigUpdate {
151+ Host : "clone-host.rds.amazonaws.com" , Port : 5432 , DBName : "postgres" ,
152+ Username : "dbuser" , Password : "dbpass" , RDSIAMDBInstance : "my-rds-clone" ,
153+ })
144154 require .NoError (t , err )
145155
146156 assert .Equal (t , "clone-host.rds.amazonaws.com" , * receivedConfig .Host )
147157 assert .Equal (t , int64 (5432 ), * receivedConfig .Port )
148158 assert .Equal (t , "postgres" , * receivedConfig .DBName )
149159 assert .Equal (t , "dbuser" , * receivedConfig .Username )
150160 assert .Equal (t , "dbpass" , * receivedConfig .Password )
161+ assert .Equal (t , "my-rds-clone" , * receivedConfig .RDSIAMDBInstance )
162+ })
163+
164+ t .Run ("successful without rds iam instance" , func (t * testing.T ) {
165+ var receivedConfig models.ConfigProjection
166+
167+ server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
168+ var nested map [string ]interface {}
169+ err := json .NewDecoder (r .Body ).Decode (& nested )
170+ require .NoError (t , err )
171+
172+ err = projection .LoadJSON (& receivedConfig , nested , projection.LoadOptions {
173+ Groups : []string {"default" , "sensitive" },
174+ })
175+ require .NoError (t , err )
176+
177+ w .WriteHeader (http .StatusOK )
178+ }))
179+ defer server .Close ()
180+
181+ client , err := NewDBLabClient (& DBLabConfig {APIEndpoint : server .URL , Token : "test-token" })
182+ require .NoError (t , err )
183+
184+ err = client .UpdateSourceConfig (context .Background (), SourceConfigUpdate {
185+ Host : "host.rds.amazonaws.com" , Port : 5432 , DBName : "postgres" ,
186+ Username : "dbuser" , Password : "dbpass" ,
187+ })
188+ require .NoError (t , err )
189+
190+ assert .Equal (t , "host.rds.amazonaws.com" , * receivedConfig .Host )
191+ assert .Nil (t , receivedConfig .RDSIAMDBInstance )
151192 })
152193
153194 t .Run ("error on non-2xx status" , func (t * testing.T ) {
@@ -160,7 +201,9 @@ func TestDBLabClientUpdateSourceConfig(t *testing.T) {
160201 client , err := NewDBLabClient (& DBLabConfig {APIEndpoint : server .URL , Token : "test-token" })
161202 require .NoError (t , err )
162203
163- err = client .UpdateSourceConfig (context .Background (), "host" , 5432 , "db" , "user" , "pass" )
204+ err = client .UpdateSourceConfig (context .Background (), SourceConfigUpdate {
205+ Host : "host" , Port : 5432 , DBName : "db" , Username : "user" , Password : "pass" ,
206+ })
164207 require .Error (t , err )
165208 assert .Contains (t , err .Error (), "invalid configuration" )
166209 })
@@ -175,7 +218,9 @@ func TestDBLabClientUpdateSourceConfig(t *testing.T) {
175218 client , err := NewDBLabClient (& DBLabConfig {APIEndpoint : server .URL , Token : "test-token" })
176219 require .NoError (t , err )
177220
178- err = client .UpdateSourceConfig (context .Background (), "host" , 5432 , "db" , "user" , "pass" )
221+ err = client .UpdateSourceConfig (context .Background (), SourceConfigUpdate {
222+ Host : "host" , Port : 5432 , DBName : "db" , Username : "user" , Password : "pass" ,
223+ })
179224 require .Error (t , err )
180225 assert .Contains (t , err .Error (), "internal server error" )
181226 })
0 commit comments