TestDrupalBackdropConsistentHash makes sure that the hash_salt provided in settings.ddev.php is consistent across multiple `ddev start` but different between two project names Requires a drupal/backdrop project
(t *testing.T)
| 296 | // different between two project names |
| 297 | // Requires a drupal/backdrop project |
| 298 | func TestDrupalBackdropConsistentHash(t *testing.T) { |
| 299 | projectTypes := []string{nodeps.AppTypeDrupal7, nodeps.AppTypeDrupal11, nodeps.AppTypeBackdrop} |
| 300 | for _, projectType := range projectTypes { |
| 301 | // Make a spare directory for the first project |
| 302 | firstProjectDir := testcommon.CreateTmpDir(t.Name() + "-firstproject") |
| 303 | app, err := ddevapp.NewApp(firstProjectDir, true) |
| 304 | app.Type = projectType |
| 305 | require.NoError(t, err) |
| 306 | |
| 307 | secondProjectDir := testcommon.CreateTmpDir(t.Name() + "-secondproject") |
| 308 | secondApp, err := ddevapp.NewApp(secondProjectDir, true) |
| 309 | secondApp.Type = projectType |
| 310 | require.NoError(t, err) |
| 311 | |
| 312 | t.Cleanup(func() { |
| 313 | err = app.Stop(true, false) |
| 314 | require.NoError(t, err) |
| 315 | _ = os.RemoveAll(firstProjectDir) |
| 316 | err = secondApp.Stop(true, false) |
| 317 | require.NoError(t, err) |
| 318 | _ = os.RemoveAll(secondProjectDir) |
| 319 | }) |
| 320 | // Start project and extract hash |
| 321 | _, err = app.CreateSettingsFile() |
| 322 | require.NoError(t, err) |
| 323 | // Detect the hashSalt |
| 324 | hash1, err := extractSettingsHashSalt(app) |
| 325 | require.NoError(t, err) |
| 326 | err = os.RemoveAll(app.SiteDdevSettingsFile) |
| 327 | require.NoError(t, err) |
| 328 | |
| 329 | // Now restart project and make sure hash is same. |
| 330 | _, err = app.CreateSettingsFile() |
| 331 | require.NoError(t, err) |
| 332 | // Detect the hashSalt |
| 333 | hash2, err := extractSettingsHashSalt(app) |
| 334 | require.NoError(t, err) |
| 335 | |
| 336 | require.Equal(t, hash1, hash2, "Hash should be the same across restarts") |
| 337 | |
| 338 | _, err = secondApp.CreateSettingsFile() |
| 339 | require.NoError(t, err) |
| 340 | secondProjectHash, err := extractSettingsHashSalt(secondApp) |
| 341 | require.NoError(t, err) |
| 342 | require.NotEqual(t, hash1, secondProjectHash, "Hash should be different for different projects") |
| 343 | } |
| 344 | } |
| 345 | |
| 346 | func extractSettingsHashSalt(app *ddevapp.DdevApp) (string, error) { |
| 347 | // Read the file content |
nothing calls this directly
no test coverage detected