github.com/graywolf-at-work-2/terraform-vendor@v1.4.5/internal/backend/remote-state/inmem/backend_test.go (about)

     1  package inmem
     2  
     3  import (
     4  	"flag"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/hashicorp/hcl/v2"
     9  
    10  	"github.com/hashicorp/terraform/internal/backend"
    11  	statespkg "github.com/hashicorp/terraform/internal/states"
    12  	"github.com/hashicorp/terraform/internal/states/remote"
    13  
    14  	_ "github.com/hashicorp/terraform/internal/logging"
    15  )
    16  
    17  func TestMain(m *testing.M) {
    18  	flag.Parse()
    19  	os.Exit(m.Run())
    20  }
    21  
    22  func TestBackend_impl(t *testing.T) {
    23  	var _ backend.Backend = new(Backend)
    24  }
    25  
    26  func TestBackendConfig(t *testing.T) {
    27  	defer Reset()
    28  	testID := "test_lock_id"
    29  
    30  	config := map[string]interface{}{
    31  		"lock_id": testID,
    32  	}
    33  
    34  	b := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(config)).(*Backend)
    35  
    36  	s, err := b.StateMgr(backend.DefaultStateName)
    37  	if err != nil {
    38  		t.Fatal(err)
    39  	}
    40  
    41  	c := s.(*remote.State).Client.(*RemoteClient)
    42  	if c.Name != backend.DefaultStateName {
    43  		t.Fatal("client name is not configured")
    44  	}
    45  
    46  	if err := locks.unlock(backend.DefaultStateName, testID); err != nil {
    47  		t.Fatalf("default state should have been locked: %s", err)
    48  	}
    49  }
    50  
    51  func TestBackend(t *testing.T) {
    52  	defer Reset()
    53  	b := backend.TestBackendConfig(t, New(), hcl.EmptyBody()).(*Backend)
    54  	backend.TestBackendStates(t, b)
    55  }
    56  
    57  func TestBackendLocked(t *testing.T) {
    58  	defer Reset()
    59  	b1 := backend.TestBackendConfig(t, New(), hcl.EmptyBody()).(*Backend)
    60  	b2 := backend.TestBackendConfig(t, New(), hcl.EmptyBody()).(*Backend)
    61  
    62  	backend.TestBackendStateLocks(t, b1, b2)
    63  }
    64  
    65  // use the this backen to test the remote.State implementation
    66  func TestRemoteState(t *testing.T) {
    67  	defer Reset()
    68  	b := backend.TestBackendConfig(t, New(), hcl.EmptyBody())
    69  
    70  	workspace := "workspace"
    71  
    72  	// create a new workspace in this backend
    73  	s, err := b.StateMgr(workspace)
    74  	if err != nil {
    75  		t.Fatal(err)
    76  	}
    77  
    78  	// force overwriting the remote state
    79  	newState := statespkg.NewState()
    80  
    81  	if err := s.WriteState(newState); err != nil {
    82  		t.Fatal(err)
    83  	}
    84  
    85  	if err := s.PersistState(nil); err != nil {
    86  		t.Fatal(err)
    87  	}
    88  
    89  	if err := s.RefreshState(); err != nil {
    90  		t.Fatal(err)
    91  	}
    92  }