add equivalent tests to meta_backend_test

This commit is contained in:
James Bardin 2017-03-29 17:50:55 -04:00
parent c891ab50b7
commit 7d23e1ef20

View File

@ -3217,6 +3217,110 @@ func TestMetaBackend_planLegacy(t *testing.T) {
}
}
// init a backend using -backend-config options multiple times
func TestMetaBackend_configureWithExtra(t *testing.T) {
// Create a temporary working directory that is empty
td := tempDir(t)
copy.CopyDir(testFixturePath("init-backend-empty"), td)
defer os.RemoveAll(td)
defer testChdir(t, td)()
extras := map[string]interface{}{"path": "hello"}
m := testMetaBackend(t, nil)
opts := &BackendOpts{
ConfigExtra: extras,
Init: true,
}
backendCfg, err := m.backendConfig(opts)
if err != nil {
t.Fatal(err)
}
// init the backend
_, err = m.Backend(&BackendOpts{
ConfigExtra: extras,
Init: true,
})
if err != nil {
t.Fatalf("bad: %s", err)
}
// Check the state
s := testStateRead(t, filepath.Join(DefaultDataDir, backendlocal.DefaultStateFilename))
if s.Backend.Hash != backendCfg.Hash {
t.Fatal("mismatched state and config backend hashes")
}
if s.Backend.Rehash() == s.Backend.Hash {
t.Fatal("saved hash should not match actual hash")
}
if s.Backend.Rehash() != backendCfg.Rehash() {
t.Fatal("mismatched state and config re-hashes")
}
// init the backend again with the same options
m = testMetaBackend(t, nil)
_, err = m.Backend(&BackendOpts{
ConfigExtra: extras,
Init: true,
})
if err != nil {
t.Fatalf("bad: %s", err)
}
// Check the state
s = testStateRead(t, filepath.Join(DefaultDataDir, backendlocal.DefaultStateFilename))
if s.Backend.Hash != backendCfg.Hash {
t.Fatal("mismatched state and config backend hashes")
}
}
// move options from config to -backend-config
func TestMetaBackend_configToExtra(t *testing.T) {
// Create a temporary working directory that is empty
td := tempDir(t)
copy.CopyDir(testFixturePath("init-backend"), td)
defer os.RemoveAll(td)
defer testChdir(t, td)()
// init the backend
m := testMetaBackend(t, nil)
_, err := m.Backend(&BackendOpts{
Init: true,
})
if err != nil {
t.Fatalf("bad: %s", err)
}
// Check the state
s := testStateRead(t, filepath.Join(DefaultDataDir, backendlocal.DefaultStateFilename))
backendHash := s.Backend.Hash
// init again but remove the path option from the config
cfg := "terraform {\n backend \"local\" {}\n}\n"
if err := ioutil.WriteFile("main.tf", []byte(cfg), 0644); err != nil {
t.Fatal(err)
}
// init the backend again with the options
extras := map[string]interface{}{"path": "hello"}
m = testMetaBackend(t, nil)
m.forceInitCopy = true
_, err = m.Backend(&BackendOpts{
ConfigExtra: extras,
Init: true,
})
if err != nil {
t.Fatalf("bad: %s", err)
}
s = testStateRead(t, filepath.Join(DefaultDataDir, backendlocal.DefaultStateFilename))
if s.Backend.Hash == backendHash {
t.Fatal("state.Backend.Hash was not updated")
}
}
func testMetaBackend(t *testing.T, args []string) *Meta {
var m Meta
m.Ui = new(cli.MockUi)