github.com/graywolf-at-work-2/terraform-vendor@v1.4.5/internal/backend/remote-state/kubernetes/client_test.go (about) 1 package kubernetes 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/terraform/internal/backend" 7 "github.com/hashicorp/terraform/internal/states/remote" 8 "github.com/hashicorp/terraform/internal/states/statemgr" 9 ) 10 11 func TestRemoteClient_impl(t *testing.T) { 12 var _ remote.Client = new(RemoteClient) 13 var _ remote.ClientLocker = new(RemoteClient) 14 } 15 16 func TestRemoteClient(t *testing.T) { 17 testACC(t) 18 defer cleanupK8sResources(t) 19 20 b := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ 21 "secret_suffix": secretSuffix, 22 })) 23 24 state, err := b.StateMgr(backend.DefaultStateName) 25 if err != nil { 26 t.Fatal(err) 27 } 28 29 remote.TestClient(t, state.(*remote.State).Client) 30 } 31 32 func TestRemoteClientLocks(t *testing.T) { 33 testACC(t) 34 defer cleanupK8sResources(t) 35 36 b1 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ 37 "secret_suffix": secretSuffix, 38 })) 39 40 b2 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ 41 "secret_suffix": secretSuffix, 42 })) 43 44 s1, err := b1.StateMgr(backend.DefaultStateName) 45 if err != nil { 46 t.Fatal(err) 47 } 48 49 s2, err := b2.StateMgr(backend.DefaultStateName) 50 if err != nil { 51 t.Fatal(err) 52 } 53 54 remote.TestRemoteLocks(t, s1.(*remote.State).Client, s2.(*remote.State).Client) 55 } 56 57 func TestForceUnlock(t *testing.T) { 58 testACC(t) 59 defer cleanupK8sResources(t) 60 61 b1 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ 62 "secret_suffix": secretSuffix, 63 })) 64 65 b2 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ 66 "secret_suffix": secretSuffix, 67 })) 68 69 // first test with default 70 s1, err := b1.StateMgr(backend.DefaultStateName) 71 if err != nil { 72 t.Fatal(err) 73 } 74 75 info := statemgr.NewLockInfo() 76 info.Operation = "test" 77 info.Who = "clientA" 78 79 lockID, err := s1.Lock(info) 80 if err != nil { 81 t.Fatal("unable to get initial lock:", err) 82 } 83 84 // s1 is now locked, get the same state through s2 and unlock it 85 s2, err := b2.StateMgr(backend.DefaultStateName) 86 if err != nil { 87 t.Fatal("failed to get default state to force unlock:", err) 88 } 89 90 if err := s2.Unlock(lockID); err != nil { 91 t.Fatal("failed to force-unlock default state") 92 } 93 94 // now try the same thing with a named state 95 // first test with default 96 s1, err = b1.StateMgr("test") 97 if err != nil { 98 t.Fatal(err) 99 } 100 101 info = statemgr.NewLockInfo() 102 info.Operation = "test" 103 info.Who = "clientA" 104 105 lockID, err = s1.Lock(info) 106 if err != nil { 107 t.Fatal("unable to get initial lock:", err) 108 } 109 110 // s1 is now locked, get the same state through s2 and unlock it 111 s2, err = b2.StateMgr("test") 112 if err != nil { 113 t.Fatal("failed to get named state to force unlock:", err) 114 } 115 116 if err = s2.Unlock(lockID); err != nil { 117 t.Fatal("failed to force-unlock named state") 118 } 119 }