github.com/terramate-io/tf@v0.0.0-20230830114523-fce866b4dfcd/backend/remote-state/pg/client_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 package pg 5 6 // Create the test database: createdb terraform_backend_pg_test 7 // TF_ACC=1 GO111MODULE=on go test -v -mod=vendor -timeout=2m -parallel=4 github.com/terramate-io/tf/backend/remote-state/pg 8 9 import ( 10 "database/sql" 11 "fmt" 12 "testing" 13 14 "github.com/terramate-io/tf/backend" 15 "github.com/terramate-io/tf/states/remote" 16 ) 17 18 func TestRemoteClient_impl(t *testing.T) { 19 var _ remote.Client = new(RemoteClient) 20 var _ remote.ClientLocker = new(RemoteClient) 21 } 22 23 func TestRemoteClient(t *testing.T) { 24 testACC(t) 25 connStr := getDatabaseUrl() 26 schemaName := fmt.Sprintf("terraform_%s", t.Name()) 27 dbCleaner, err := sql.Open("postgres", connStr) 28 if err != nil { 29 t.Fatal(err) 30 } 31 defer dbCleaner.Query(fmt.Sprintf("DROP SCHEMA IF EXISTS %s CASCADE", schemaName)) 32 33 config := backend.TestWrapConfig(map[string]interface{}{ 34 "conn_str": connStr, 35 "schema_name": schemaName, 36 }) 37 b := backend.TestBackendConfig(t, New(), config).(*Backend) 38 39 if b == nil { 40 t.Fatal("Backend could not be configured") 41 } 42 43 s, err := b.StateMgr(backend.DefaultStateName) 44 if err != nil { 45 t.Fatal(err) 46 } 47 48 remote.TestClient(t, s.(*remote.State).Client) 49 } 50 51 func TestRemoteLocks(t *testing.T) { 52 testACC(t) 53 connStr := getDatabaseUrl() 54 schemaName := fmt.Sprintf("terraform_%s", t.Name()) 55 dbCleaner, err := sql.Open("postgres", connStr) 56 if err != nil { 57 t.Fatal(err) 58 } 59 defer dbCleaner.Query(fmt.Sprintf("DROP SCHEMA IF EXISTS %s CASCADE", schemaName)) 60 61 config := backend.TestWrapConfig(map[string]interface{}{ 62 "conn_str": connStr, 63 "schema_name": schemaName, 64 }) 65 66 b1 := backend.TestBackendConfig(t, New(), config).(*Backend) 67 s1, err := b1.StateMgr(backend.DefaultStateName) 68 if err != nil { 69 t.Fatal(err) 70 } 71 72 b2 := backend.TestBackendConfig(t, New(), config).(*Backend) 73 s2, err := b2.StateMgr(backend.DefaultStateName) 74 if err != nil { 75 t.Fatal(err) 76 } 77 78 remote.TestRemoteLocks(t, s1.(*remote.State).Client, s2.(*remote.State).Client) 79 }