2018-10-31 16:45:03 +01:00
|
|
|
package remote
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"os"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/hashicorp/terraform/backend"
|
|
|
|
"github.com/hashicorp/terraform/state/remote"
|
|
|
|
"github.com/hashicorp/terraform/terraform"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestRemoteClient_impl(t *testing.T) {
|
|
|
|
var _ remote.Client = new(remoteClient)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestRemoteClient(t *testing.T) {
|
|
|
|
client := testRemoteClient(t)
|
|
|
|
remote.TestClient(t, client)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestRemoteClient_stateLock(t *testing.T) {
|
2019-02-06 09:36:42 +01:00
|
|
|
b, bCleanup := testBackendDefault(t)
|
|
|
|
defer bCleanup()
|
2018-10-31 16:45:03 +01:00
|
|
|
|
|
|
|
s1, err := b.StateMgr(backend.DefaultStateName)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("expected no error, got %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
s2, err := b.StateMgr(backend.DefaultStateName)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("expected no error, got %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
remote.TestRemoteLocks(t, s1.(*remote.State).Client, s2.(*remote.State).Client)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestRemoteClient_withRunID(t *testing.T) {
|
|
|
|
// Set the TFE_RUN_ID environment variable before creating the client!
|
|
|
|
if err := os.Setenv("TFE_RUN_ID", generateID("run-")); err != nil {
|
|
|
|
t.Fatalf("error setting env var TFE_RUN_ID: %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Create a new test client.
|
|
|
|
client := testRemoteClient(t)
|
|
|
|
|
|
|
|
// Create a new empty state.
|
|
|
|
state := bytes.NewBuffer(nil)
|
|
|
|
if err := terraform.WriteState(terraform.NewState(), state); err != nil {
|
|
|
|
t.Fatalf("expected no error, got: %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Store the new state to verify (this will be done
|
|
|
|
// by the mock that is used) that the run ID is set.
|
|
|
|
if err := client.Put(state.Bytes()); err != nil {
|
|
|
|
t.Fatalf("expected no error, got %v", err)
|
|
|
|
}
|
|
|
|
}
|