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 }