Have the consul provider use a local test server
We're providing a local test server for the consul backends, so we might as well use it to make the provider acceptance tests more relible as well. TODO: the TLS test doesn't actualy test anything other than the Config. The tests have been modified to make it apparent that they aren't connecting to the server at all.
This commit is contained in:
parent
90055c6ae2
commit
9529bd3bf0
|
@ -10,7 +10,6 @@ import (
|
|||
|
||||
func TestAccDataConsulAgentSelf_basic(t *testing.T) {
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
|
@ -25,7 +24,8 @@ func TestAccDataConsulAgentSelf_basic(t *testing.T) {
|
|||
testAccCheckDataSourceValue("data.consul_agent_self.read", "advertise_addr", "<any>"),
|
||||
testAccCheckDataSourceValue("data.consul_agent_self.read", "bind_addr", "<any>"),
|
||||
testAccCheckDataSourceValue("data.consul_agent_self.read", "bootstrap_expect", "<all>"),
|
||||
testAccCheckDataSourceValue("data.consul_agent_self.read", "bootstrap_mode", "false"),
|
||||
// the local test server is bootstrapped
|
||||
testAccCheckDataSourceValue("data.consul_agent_self.read", "bootstrap_mode", "true"),
|
||||
testAccCheckDataSourceValue("data.consul_agent_self.read", "client_addr", "<any>"),
|
||||
testAccCheckDataSourceValue("data.consul_agent_self.read", "datacenter", "<any>"),
|
||||
testAccCheckDataSourceValue("data.consul_agent_self.read", "dev_mode", "<any>"),
|
||||
|
|
|
@ -8,7 +8,6 @@ import (
|
|||
|
||||
func TestAccDataConsulCatalogNodes_basic(t *testing.T) {
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
|
|
|
@ -8,7 +8,6 @@ import (
|
|||
|
||||
func TestAccDataConsulCatalogService_basic(t *testing.T) {
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
|
|
|
@ -8,7 +8,6 @@ import (
|
|||
|
||||
func TestAccDataConsulCatalogServices_basic(t *testing.T) {
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
|
|
|
@ -8,7 +8,6 @@ import (
|
|||
|
||||
func TestAccDataConsulKeys_basic(t *testing.T) {
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
|
|
|
@ -11,7 +11,6 @@ import (
|
|||
|
||||
func TestAccConsulKeyPrefix_basic(t *testing.T) {
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
CheckDestroy: resource.ComposeTestCheckFunc(
|
||||
testAccCheckConsulKeyPrefixKeyAbsent("species"),
|
||||
|
|
|
@ -11,7 +11,6 @@ import (
|
|||
|
||||
func TestAccConsulKeys_basic(t *testing.T) {
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
CheckDestroy: testAccCheckConsulKeysDestroy,
|
||||
Steps: []resource.TestStep{
|
||||
|
|
|
@ -11,7 +11,6 @@ import (
|
|||
|
||||
func TestAccConsulPreparedQuery_basic(t *testing.T) {
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
CheckDestroy: testAccCheckConsulPreparedQueryDestroy,
|
||||
Steps: []resource.TestStep{
|
||||
|
|
|
@ -1,24 +1,64 @@
|
|||
package consul
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/hashicorp/consul/testutil"
|
||||
"github.com/hashicorp/terraform/config"
|
||||
"github.com/hashicorp/terraform/helper/schema"
|
||||
"github.com/hashicorp/terraform/terraform"
|
||||
"github.com/mitchellh/mapstructure"
|
||||
)
|
||||
|
||||
var testAccProviders map[string]terraform.ResourceProvider
|
||||
var testAccProvider *schema.Provider
|
||||
var testConsulHTTPAddr string
|
||||
|
||||
func init() {
|
||||
testAccProvider = Provider().(*schema.Provider)
|
||||
testAccProvider.ConfigureFunc = testProviderConfigure
|
||||
|
||||
testAccProviders = map[string]terraform.ResourceProvider{
|
||||
"consul": testAccProvider,
|
||||
}
|
||||
}
|
||||
|
||||
// we need to overrride the configured address for the tests
|
||||
func testProviderConfigure(d *schema.ResourceData) (interface{}, error) {
|
||||
var config Config
|
||||
configRaw := d.Get("").(map[string]interface{})
|
||||
if err := mapstructure.Decode(configRaw, &config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
config.Address = testConsulHTTPAddr
|
||||
|
||||
log.Printf("[INFO] Initializing Consul test client")
|
||||
return config.Client()
|
||||
}
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
t := struct {
|
||||
testutil.TestingT
|
||||
}{}
|
||||
|
||||
// start and stop the test consul server once for all tests
|
||||
srv := testutil.NewTestServerConfig(t, func(c *testutil.TestServerConfig) {
|
||||
c.LogLevel = "warn"
|
||||
c.Stdout = ioutil.Discard
|
||||
c.Stderr = ioutil.Discard
|
||||
})
|
||||
|
||||
testConsulHTTPAddr = srv.HTTPAddr
|
||||
|
||||
ret := m.Run()
|
||||
|
||||
srv.Stop()
|
||||
os.Exit(ret)
|
||||
}
|
||||
|
||||
func TestResourceProvider(t *testing.T) {
|
||||
if err := Provider().(*schema.Provider).InternalValidate(); err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
|
@ -32,8 +72,9 @@ func TestResourceProvider_impl(t *testing.T) {
|
|||
func TestResourceProvider_Configure(t *testing.T) {
|
||||
rp := Provider()
|
||||
|
||||
// these configuration tests don't require an running server
|
||||
raw := map[string]interface{}{
|
||||
"address": "demo.consul.io:80",
|
||||
"address": "example.com:8500",
|
||||
"datacenter": "nyc3",
|
||||
"scheme": "https",
|
||||
}
|
||||
|
@ -53,7 +94,7 @@ func TestResourceProvider_ConfigureTLS(t *testing.T) {
|
|||
rp := Provider()
|
||||
|
||||
raw := map[string]interface{}{
|
||||
"address": "demo.consul.io:80",
|
||||
"address": "example.com:8943",
|
||||
"ca_file": "test-fixtures/cacert.pem",
|
||||
"cert_file": "test-fixtures/usercert.pem",
|
||||
"datacenter": "nyc3",
|
||||
|
@ -71,13 +112,3 @@ func TestResourceProvider_ConfigureTLS(t *testing.T) {
|
|||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
func testAccPreCheck(t *testing.T) {
|
||||
if v := os.Getenv("CONSUL_HTTP_ADDR"); v != "" {
|
||||
return
|
||||
}
|
||||
if v := os.Getenv("CONSUL_ADDRESS"); v != "" {
|
||||
return
|
||||
}
|
||||
t.Fatal("Either CONSUL_ADDRESS or CONSUL_HTTP_ADDR must be set for acceptance tests")
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue