2015-04-24 18:18:24 +02:00
|
|
|
package azure
|
|
|
|
|
|
|
|
import (
|
2015-08-03 22:12:30 +02:00
|
|
|
"io"
|
|
|
|
"io/ioutil"
|
|
|
|
"log"
|
2015-04-24 18:18:24 +02:00
|
|
|
"os"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/hashicorp/terraform/helper/schema"
|
|
|
|
"github.com/hashicorp/terraform/terraform"
|
|
|
|
)
|
|
|
|
|
|
|
|
var testAccProviders map[string]terraform.ResourceProvider
|
|
|
|
var testAccProvider *schema.Provider
|
|
|
|
|
2015-06-26 14:48:55 +02:00
|
|
|
const (
|
|
|
|
testAccSecurityGroupName = "terraform-security-group"
|
|
|
|
testAccHostedServiceName = "terraform-testing-service"
|
|
|
|
)
|
2015-06-05 16:12:21 +02:00
|
|
|
|
|
|
|
// testAccStorageServiceName is used as the name for the Storage Service
|
|
|
|
// created in all storage-related tests.
|
|
|
|
// It is much more convenient to provide a Storage Service which
|
|
|
|
// has been created beforehand as the creation of one takes a lot
|
|
|
|
// and would greatly impede the multitude of tests which rely on one.
|
2015-06-11 20:26:49 +02:00
|
|
|
// NOTE: the storage container should be located in `West US`.
|
2015-06-05 16:12:21 +02:00
|
|
|
var testAccStorageServiceName = os.Getenv("AZURE_STORAGE")
|
|
|
|
|
|
|
|
const testAccStorageContainerName = "terraform-testing-container"
|
|
|
|
|
2015-04-24 18:18:24 +02:00
|
|
|
func init() {
|
|
|
|
testAccProvider = Provider().(*schema.Provider)
|
|
|
|
testAccProviders = map[string]terraform.ResourceProvider{
|
|
|
|
"azure": testAccProvider,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestProvider(t *testing.T) {
|
|
|
|
if err := Provider().(*schema.Provider).InternalValidate(); err != nil {
|
|
|
|
t.Fatalf("err: %s", err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestProvider_impl(t *testing.T) {
|
|
|
|
var _ terraform.ResourceProvider = Provider()
|
|
|
|
}
|
|
|
|
|
|
|
|
func testAccPreCheck(t *testing.T) {
|
|
|
|
if v := os.Getenv("AZURE_SETTINGS_FILE"); v == "" {
|
2015-05-28 00:50:45 +02:00
|
|
|
subscriptionID := os.Getenv("AZURE_SUBSCRIPTION_ID")
|
|
|
|
certificate := os.Getenv("AZURE_CERTIFICATE")
|
|
|
|
|
|
|
|
if subscriptionID == "" || certificate == "" {
|
|
|
|
t.Fatal("either AZURE_SETTINGS_FILE, or AZURE_SUBSCRIPTION_ID " +
|
|
|
|
"and AZURE_CERTIFICATE must be set for acceptance tests")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if v := os.Getenv("AZURE_STORAGE"); v == "" {
|
|
|
|
t.Fatal("AZURE_STORAGE must be set for acceptance tests")
|
2015-04-24 18:18:24 +02:00
|
|
|
}
|
|
|
|
}
|
2015-08-03 22:12:30 +02:00
|
|
|
|
|
|
|
func TestAzure_validateSettingsFile(t *testing.T) {
|
|
|
|
f, err := ioutil.TempFile("", "tf-test")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("Error creating temporary file in TestAzure_validateSettingsFile: %s", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
fx, err := ioutil.TempFile("", "tf-test-xml")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("Error creating temporary file with XML in TestAzure_validateSettingsFile: %s", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err = io.WriteString(fx, "<PublishData></PublishData>")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("Error writing XML File: %s", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
log.Printf("fx name: %s", fx.Name())
|
|
|
|
fx.Close()
|
|
|
|
|
|
|
|
cases := []struct {
|
|
|
|
Input string // String of XML or a path to an XML file
|
|
|
|
W int // expected count of warnings
|
|
|
|
E int // expected count of errors
|
|
|
|
}{
|
|
|
|
{"test", 1, 1},
|
|
|
|
{f.Name(), 1, 0},
|
|
|
|
{fx.Name(), 1, 0},
|
|
|
|
{"<PublishData></PublishData>", 0, 0},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range cases {
|
|
|
|
w, e := validateSettingsFile(tc.Input, "")
|
|
|
|
|
|
|
|
if len(w) != tc.W {
|
|
|
|
t.Errorf("Error in TestAzureValidateSettingsFile: input: %s , warnings: %#v, errors: %#v", tc.Input, w, e)
|
|
|
|
}
|
|
|
|
if len(e) != tc.E {
|
|
|
|
t.Errorf("Error in TestAzureValidateSettingsFile: input: %s , warnings: %#v, errors: %#v", tc.Input, w, e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestAzure_isFile(t *testing.T) {
|
|
|
|
f, err := ioutil.TempFile("", "tf-test-file")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("Error creating temporary file with XML in TestAzure_isFile: %s", err)
|
|
|
|
}
|
|
|
|
cases := []struct {
|
|
|
|
Input string // String path to file
|
|
|
|
B bool // expected true/false
|
|
|
|
E bool // expect error
|
|
|
|
}{
|
|
|
|
{"test", false, true},
|
|
|
|
{f.Name(), true, false},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range cases {
|
|
|
|
x, y := isFile(tc.Input)
|
|
|
|
if tc.B != x {
|
|
|
|
t.Errorf("Error in TestAzure_isFile: input: %s , returned: %#v, expected: %#v", tc.Input, x, tc.B)
|
|
|
|
}
|
|
|
|
|
|
|
|
if tc.E != (y != nil) {
|
|
|
|
t.Errorf("Error in TestAzure_isFile: input: %s , returned: %#v, expected: %#v", tc.Input, y, tc.E)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|