diff options
Diffstat (limited to 'vendor/github.com/hashicorp/terraform/backend/remote-state/inmem/backend_test.go')
-rw-r--r-- | vendor/github.com/hashicorp/terraform/backend/remote-state/inmem/backend_test.go | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/vendor/github.com/hashicorp/terraform/backend/remote-state/inmem/backend_test.go b/vendor/github.com/hashicorp/terraform/backend/remote-state/inmem/backend_test.go new file mode 100644 index 00000000..005e66a1 --- /dev/null +++ b/vendor/github.com/hashicorp/terraform/backend/remote-state/inmem/backend_test.go @@ -0,0 +1,90 @@ +package inmem + +import ( + "testing" + + "github.com/hashicorp/terraform/backend" + "github.com/hashicorp/terraform/state/remote" + "github.com/hashicorp/terraform/terraform" +) + +func TestBackend_impl(t *testing.T) { + var _ backend.Backend = new(Backend) +} + +func TestBackendConfig(t *testing.T) { + defer Reset() + testID := "test_lock_id" + + config := map[string]interface{}{ + "lock_id": testID, + } + + b := backend.TestBackendConfig(t, New(), config).(*Backend) + + s, err := b.State(backend.DefaultStateName) + if err != nil { + t.Fatal(err) + } + + c := s.(*remote.State).Client.(*RemoteClient) + if c.Name != backend.DefaultStateName { + t.Fatal("client name is not configured") + } + + if err := locks.unlock(backend.DefaultStateName, testID); err != nil { + t.Fatalf("default state should have been locked: %s", err) + } +} + +func TestBackend(t *testing.T) { + defer Reset() + b := backend.TestBackendConfig(t, New(), nil).(*Backend) + backend.TestBackend(t, b, nil) +} + +func TestBackendLocked(t *testing.T) { + defer Reset() + b1 := backend.TestBackendConfig(t, New(), nil).(*Backend) + b2 := backend.TestBackendConfig(t, New(), nil).(*Backend) + + backend.TestBackend(t, b1, b2) +} + +// use the this backen to test the remote.State implementation +func TestRemoteState(t *testing.T) { + defer Reset() + b := backend.TestBackendConfig(t, New(), nil) + + workspace := "workspace" + + // create a new workspace in this backend + s, err := b.State(workspace) + if err != nil { + t.Fatal(err) + } + + // force overwriting the remote state + newState := terraform.NewState() + + if err := s.WriteState(newState); err != nil { + t.Fatal(err) + } + + if err := s.PersistState(); err != nil { + t.Fatal(err) + } + + if err := s.RefreshState(); err != nil { + t.Fatal(err) + } + + savedState := s.State() + if err != nil { + t.Fatal(err) + } + + if savedState.Lineage != newState.Lineage { + t.Fatal("saved state has incorrect lineage") + } +} |