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  }