TestWebserverPostgresDBClient tests functionality of Postgres database clients in the ddev-webserver
(t *testing.T)
| 2287 | // TestWebserverPostgresDBClient tests functionality of Postgres |
| 2288 | // database clients in the ddev-webserver |
| 2289 | func TestWebserverPostgresDBClient(t *testing.T) { |
| 2290 | assert := asrt.New(t) |
| 2291 | |
| 2292 | serverVersions := []string{"postgres:18", "postgres:17", "postgres:16"} |
| 2293 | |
| 2294 | app := &ddevapp.DdevApp{} |
| 2295 | origDir, _ := os.Getwd() |
| 2296 | |
| 2297 | site := TestSites[0] |
| 2298 | runTime := util.TimeTrackC(fmt.Sprintf("%s %s", site.Name, t.Name())) |
| 2299 | |
| 2300 | testcommon.ClearDockerEnv() |
| 2301 | err := app.Init(site.Dir) |
| 2302 | assert.NoError(err) |
| 2303 | |
| 2304 | err = app.Stop(true, false) |
| 2305 | require.NoError(t, err) |
| 2306 | |
| 2307 | // Existing DB type in volume should be empty |
| 2308 | dbType, err := app.GetExistingDBType() |
| 2309 | assert.NoError(err) |
| 2310 | assert.Equal("", strings.Trim(dbType, " \n\r\t")) |
| 2311 | |
| 2312 | // Make sure there isn't an old database volume laying around |
| 2313 | _ = dockerutil.RemoveVolume(app.Name + "-postgres") |
| 2314 | t.Cleanup(func() { |
| 2315 | err = app.Stop(true, false) |
| 2316 | assert.NoError(err) |
| 2317 | err = os.RemoveAll(app.GetConfigPath("db_snapshots")) |
| 2318 | assert.NoError(err) |
| 2319 | _ = os.RemoveAll(filepath.Join(app.AppRoot, "users.sql")) |
| 2320 | _ = os.RemoveAll(filepath.Join(app.AppRoot, "dbdump.sql")) |
| 2321 | // Make sure we leave the config.yaml in expected state |
| 2322 | app.Database.Type = nodeps.MariaDB |
| 2323 | app.Database.Version = nodeps.MariaDBDefaultVersion |
| 2324 | err = app.WriteConfig() |
| 2325 | assert.NoError(err) |
| 2326 | err = os.Chdir(origDir) |
| 2327 | assert.NoError(err) |
| 2328 | }) |
| 2329 | |
| 2330 | for _, dbTypeVersion := range serverVersions { |
| 2331 | t.Logf("Testing postgres client functionality of %s", dbTypeVersion) |
| 2332 | parts := strings.Split(dbTypeVersion, ":") |
| 2333 | dbType := parts[0] |
| 2334 | dbVersion := parts[1] |
| 2335 | require.Len(t, parts, 2) |
| 2336 | |
| 2337 | err = app.Stop(true, false) |
| 2338 | require.NoError(t, err) |
| 2339 | app.Database.Type = dbType |
| 2340 | app.Database.Version = dbVersion |
| 2341 | err = app.WriteConfig() |
| 2342 | require.NoError(t, err) |
| 2343 | |
| 2344 | startErr := app.Start() |
| 2345 | require.NoError(t, startErr) |
| 2346 |
nothing calls this directly
no test coverage detected