| package pg |
| |
| // Create the test database: createdb terraform_backend_pg_test |
| // TF_ACC=1 GO111MODULE=on go test -v -mod=vendor -timeout=2m -parallel=4 github.com/hashicorp/terraform/backend/remote-state/pg |
| |
| import ( |
| "database/sql" |
| "fmt" |
| "testing" |
| |
| "github.com/hashicorp/terraform/internal/backend" |
| "github.com/hashicorp/terraform/internal/states/remote" |
| ) |
| |
| func TestRemoteClient_impl(t *testing.T) { |
| var _ remote.Client = new(RemoteClient) |
| var _ remote.ClientLocker = new(RemoteClient) |
| } |
| |
| func TestRemoteClient(t *testing.T) { |
| testACC(t) |
| connStr := getDatabaseUrl() |
| schemaName := fmt.Sprintf("terraform_%s", t.Name()) |
| dbCleaner, err := sql.Open("postgres", connStr) |
| if err != nil { |
| t.Fatal(err) |
| } |
| defer dbCleaner.Query(fmt.Sprintf("DROP SCHEMA IF EXISTS %s CASCADE", schemaName)) |
| |
| config := backend.TestWrapConfig(map[string]interface{}{ |
| "conn_str": connStr, |
| "schema_name": schemaName, |
| }) |
| b := backend.TestBackendConfig(t, New(), config).(*Backend) |
| |
| if b == nil { |
| t.Fatal("Backend could not be configured") |
| } |
| |
| s, err := b.StateMgr(backend.DefaultStateName) |
| if err != nil { |
| t.Fatal(err) |
| } |
| |
| remote.TestClient(t, s.(*remote.State).Client) |
| } |
| |
| func TestRemoteLocks(t *testing.T) { |
| testACC(t) |
| connStr := getDatabaseUrl() |
| schemaName := fmt.Sprintf("terraform_%s", t.Name()) |
| dbCleaner, err := sql.Open("postgres", connStr) |
| if err != nil { |
| t.Fatal(err) |
| } |
| defer dbCleaner.Query(fmt.Sprintf("DROP SCHEMA IF EXISTS %s CASCADE", schemaName)) |
| |
| config := backend.TestWrapConfig(map[string]interface{}{ |
| "conn_str": connStr, |
| "schema_name": schemaName, |
| }) |
| |
| b1 := backend.TestBackendConfig(t, New(), config).(*Backend) |
| s1, err := b1.StateMgr(backend.DefaultStateName) |
| if err != nil { |
| t.Fatal(err) |
| } |
| |
| b2 := backend.TestBackendConfig(t, New(), config).(*Backend) |
| s2, err := b2.StateMgr(backend.DefaultStateName) |
| if err != nil { |
| t.Fatal(err) |
| } |
| |
| remote.TestRemoteLocks(t, s1.(*remote.State).Client, s2.(*remote.State).Client) |
| } |