github.com/peterbale/terraform@v0.9.0-beta2.0.20170315142748-5723acd55547/builtin/providers/consul/resource_provider_test.go (about)

     1  package consul
     2  
     3  import (
     4  	"io/ioutil"
     5  	"log"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/hashicorp/consul/testutil"
    10  	"github.com/hashicorp/terraform/config"
    11  	"github.com/hashicorp/terraform/helper/schema"
    12  	"github.com/hashicorp/terraform/terraform"
    13  	"github.com/mitchellh/mapstructure"
    14  )
    15  
    16  var testAccProviders map[string]terraform.ResourceProvider
    17  var testAccProvider *schema.Provider
    18  var testConsulHTTPAddr string
    19  
    20  func init() {
    21  	testAccProvider = Provider().(*schema.Provider)
    22  	testAccProvider.ConfigureFunc = testProviderConfigure
    23  
    24  	testAccProviders = map[string]terraform.ResourceProvider{
    25  		"consul": testAccProvider,
    26  	}
    27  }
    28  
    29  // we need to overrride the configured address for the tests
    30  func testProviderConfigure(d *schema.ResourceData) (interface{}, error) {
    31  	var config Config
    32  	configRaw := d.Get("").(map[string]interface{})
    33  	if err := mapstructure.Decode(configRaw, &config); err != nil {
    34  		return nil, err
    35  	}
    36  	config.Address = testConsulHTTPAddr
    37  
    38  	log.Printf("[INFO] Initializing Consul test client")
    39  	return config.Client()
    40  }
    41  
    42  func TestMain(m *testing.M) {
    43  	t := struct {
    44  		testutil.TestingT
    45  	}{}
    46  
    47  	// start and stop the test consul server once for all tests
    48  	srv := testutil.NewTestServerConfig(t, func(c *testutil.TestServerConfig) {
    49  		c.LogLevel = "warn"
    50  		c.Stdout = ioutil.Discard
    51  		c.Stderr = ioutil.Discard
    52  	})
    53  
    54  	testConsulHTTPAddr = srv.HTTPAddr
    55  
    56  	ret := m.Run()
    57  
    58  	srv.Stop()
    59  	os.Exit(ret)
    60  }
    61  
    62  func TestResourceProvider(t *testing.T) {
    63  	if err := Provider().(*schema.Provider).InternalValidate(); err != nil {
    64  		t.Fatalf("err: %s", err)
    65  	}
    66  }
    67  
    68  func TestResourceProvider_impl(t *testing.T) {
    69  	var _ terraform.ResourceProvider = Provider()
    70  }
    71  
    72  func TestResourceProvider_Configure(t *testing.T) {
    73  	rp := Provider()
    74  
    75  	// these configuration tests don't require an running server
    76  	raw := map[string]interface{}{
    77  		"address":    "example.com:8500",
    78  		"datacenter": "nyc3",
    79  		"scheme":     "https",
    80  	}
    81  
    82  	rawConfig, err := config.NewRawConfig(raw)
    83  	if err != nil {
    84  		t.Fatalf("err: %s", err)
    85  	}
    86  
    87  	err = rp.Configure(terraform.NewResourceConfig(rawConfig))
    88  	if err != nil {
    89  		t.Fatalf("err: %s", err)
    90  	}
    91  }
    92  
    93  func TestResourceProvider_ConfigureTLS(t *testing.T) {
    94  	rp := Provider()
    95  
    96  	raw := map[string]interface{}{
    97  		"address":    "example.com:8943",
    98  		"ca_file":    "test-fixtures/cacert.pem",
    99  		"cert_file":  "test-fixtures/usercert.pem",
   100  		"datacenter": "nyc3",
   101  		"key_file":   "test-fixtures/userkey.pem",
   102  		"scheme":     "https",
   103  	}
   104  
   105  	rawConfig, err := config.NewRawConfig(raw)
   106  	if err != nil {
   107  		t.Fatalf("err: %s", err)
   108  	}
   109  
   110  	err = rp.Configure(terraform.NewResourceConfig(rawConfig))
   111  	if err != nil {
   112  		t.Fatalf("err: %s", err)
   113  	}
   114  }