github.com/graywolf-at-work-2/terraform-vendor@v1.4.5/internal/backend/remote-state/inmem/backend_test.go (about) 1 package inmem 2 3 import ( 4 "flag" 5 "os" 6 "testing" 7 8 "github.com/hashicorp/hcl/v2" 9 10 "github.com/hashicorp/terraform/internal/backend" 11 statespkg "github.com/hashicorp/terraform/internal/states" 12 "github.com/hashicorp/terraform/internal/states/remote" 13 14 _ "github.com/hashicorp/terraform/internal/logging" 15 ) 16 17 func TestMain(m *testing.M) { 18 flag.Parse() 19 os.Exit(m.Run()) 20 } 21 22 func TestBackend_impl(t *testing.T) { 23 var _ backend.Backend = new(Backend) 24 } 25 26 func TestBackendConfig(t *testing.T) { 27 defer Reset() 28 testID := "test_lock_id" 29 30 config := map[string]interface{}{ 31 "lock_id": testID, 32 } 33 34 b := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(config)).(*Backend) 35 36 s, err := b.StateMgr(backend.DefaultStateName) 37 if err != nil { 38 t.Fatal(err) 39 } 40 41 c := s.(*remote.State).Client.(*RemoteClient) 42 if c.Name != backend.DefaultStateName { 43 t.Fatal("client name is not configured") 44 } 45 46 if err := locks.unlock(backend.DefaultStateName, testID); err != nil { 47 t.Fatalf("default state should have been locked: %s", err) 48 } 49 } 50 51 func TestBackend(t *testing.T) { 52 defer Reset() 53 b := backend.TestBackendConfig(t, New(), hcl.EmptyBody()).(*Backend) 54 backend.TestBackendStates(t, b) 55 } 56 57 func TestBackendLocked(t *testing.T) { 58 defer Reset() 59 b1 := backend.TestBackendConfig(t, New(), hcl.EmptyBody()).(*Backend) 60 b2 := backend.TestBackendConfig(t, New(), hcl.EmptyBody()).(*Backend) 61 62 backend.TestBackendStateLocks(t, b1, b2) 63 } 64 65 // use the this backen to test the remote.State implementation 66 func TestRemoteState(t *testing.T) { 67 defer Reset() 68 b := backend.TestBackendConfig(t, New(), hcl.EmptyBody()) 69 70 workspace := "workspace" 71 72 // create a new workspace in this backend 73 s, err := b.StateMgr(workspace) 74 if err != nil { 75 t.Fatal(err) 76 } 77 78 // force overwriting the remote state 79 newState := statespkg.NewState() 80 81 if err := s.WriteState(newState); err != nil { 82 t.Fatal(err) 83 } 84 85 if err := s.PersistState(nil); err != nil { 86 t.Fatal(err) 87 } 88 89 if err := s.RefreshState(); err != nil { 90 t.Fatal(err) 91 } 92 }