github.com/ctrox/terraform@v0.11.12-beta1/backend/remote-state/consul/backend_test.go (about)

     1  package consul
     2  
     3  import (
     4  	"fmt"
     5  	"io/ioutil"
     6  	"os"
     7  	"testing"
     8  	"time"
     9  
    10  	"github.com/hashicorp/consul/testutil"
    11  	"github.com/hashicorp/terraform/backend"
    12  )
    13  
    14  func TestBackend_impl(t *testing.T) {
    15  	var _ backend.Backend = new(Backend)
    16  }
    17  
    18  var srv *testutil.TestServer
    19  
    20  func TestMain(m *testing.M) {
    21  	if os.Getenv("TF_ACC") == "" && os.Getenv("TF_CONSUL_TEST") == "" {
    22  		fmt.Println("consul server tests require setting TF_ACC or TF_CONSUL_TEST")
    23  		return
    24  	}
    25  
    26  	var err error
    27  	srv, err = newConsulTestServer()
    28  	if err != nil {
    29  		fmt.Println(err)
    30  		os.Exit(1)
    31  	}
    32  
    33  	rc := m.Run()
    34  	srv.Stop()
    35  	os.Exit(rc)
    36  }
    37  
    38  func newConsulTestServer() (*testutil.TestServer, error) {
    39  	srv, err := testutil.NewTestServerConfig(func(c *testutil.TestServerConfig) {
    40  		c.LogLevel = "warn"
    41  
    42  		if !testing.Verbose() {
    43  			c.Stdout = ioutil.Discard
    44  			c.Stderr = ioutil.Discard
    45  		}
    46  	})
    47  
    48  	return srv, err
    49  }
    50  
    51  func TestBackend(t *testing.T) {
    52  	path := fmt.Sprintf("tf-unit/%s", time.Now().String())
    53  
    54  	// Get the backend. We need two to test locking.
    55  	b1 := backend.TestBackendConfig(t, New(), map[string]interface{}{
    56  		"address": srv.HTTPAddr,
    57  		"path":    path,
    58  	})
    59  
    60  	b2 := backend.TestBackendConfig(t, New(), map[string]interface{}{
    61  		"address": srv.HTTPAddr,
    62  		"path":    path,
    63  	})
    64  
    65  	// Test
    66  	backend.TestBackendStates(t, b1)
    67  	backend.TestBackendStateLocks(t, b1, b2)
    68  }
    69  
    70  func TestBackend_lockDisabled(t *testing.T) {
    71  	path := fmt.Sprintf("tf-unit/%s", time.Now().String())
    72  
    73  	// Get the backend. We need two to test locking.
    74  	b1 := backend.TestBackendConfig(t, New(), map[string]interface{}{
    75  		"address": srv.HTTPAddr,
    76  		"path":    path,
    77  		"lock":    false,
    78  	})
    79  
    80  	b2 := backend.TestBackendConfig(t, New(), map[string]interface{}{
    81  		"address": srv.HTTPAddr,
    82  		"path":    path + "different", // Diff so locking test would fail if it was locking
    83  		"lock":    false,
    84  	})
    85  
    86  	// Test
    87  	backend.TestBackendStates(t, b1)
    88  	backend.TestBackendStateLocks(t, b1, b2)
    89  }
    90  
    91  func TestBackend_gzip(t *testing.T) {
    92  	// Get the backend
    93  	b := backend.TestBackendConfig(t, New(), map[string]interface{}{
    94  		"address": srv.HTTPAddr,
    95  		"path":    fmt.Sprintf("tf-unit/%s", time.Now().String()),
    96  		"gzip":    true,
    97  	})
    98  
    99  	// Test
   100  	backend.TestBackendStates(t, b)
   101  }