MCPcopy Create free account
hub / github.com/ddev/ddev / TestDrupalBackdropConsistentHash

Function TestDrupalBackdropConsistentHash

pkg/ddevapp/settings_test.go:298–344  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

296// different between two project names
297// Requires a drupal/backdrop project
298func 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
346func extractSettingsHashSalt(app *ddevapp.DdevApp) (string, error) {
347 // Read the file content

Callers

nothing calls this directly

Calls 6

CreateTmpDirFunction · 0.92
NewAppFunction · 0.92
extractSettingsHashSaltFunction · 0.85
CleanupMethod · 0.80
StopMethod · 0.80
CreateSettingsFileMethod · 0.80

Tested by

no test coverage detected