terraform-provider-google/google/config_test.go
The Magician 4f7decf1e0 Changes ancillary to supporting the Terraform mapper. (#3177)
Signed-off-by: Modular Magician <magic-modules@google.com>
2019-03-04 12:56:25 -08:00

140 lines
3.3 KiB
Go

package google
import (
"context"
"fmt"
"io/ioutil"
"os"
"testing"
"github.com/hashicorp/terraform/helper/resource"
"golang.org/x/oauth2/google"
)
const testFakeCredentialsPath = "./test-fixtures/fake_account.json"
const testOauthScope = "https://www.googleapis.com/auth/compute"
func TestConfigLoadAndValidate_accountFilePath(t *testing.T) {
config := Config{
Credentials: testFakeCredentialsPath,
Project: "my-gce-project",
Region: "us-central1",
}
err := config.LoadAndValidate()
if err != nil {
t.Fatalf("error: %v", err)
}
}
func TestConfigLoadAndValidate_accountFileJSON(t *testing.T) {
contents, err := ioutil.ReadFile(testFakeCredentialsPath)
if err != nil {
t.Fatalf("error: %v", err)
}
config := Config{
Credentials: string(contents),
Project: "my-gce-project",
Region: "us-central1",
}
err = config.LoadAndValidate()
if err != nil {
t.Fatalf("error: %v", err)
}
}
func TestConfigLoadAndValidate_accountFileJSONInvalid(t *testing.T) {
config := Config{
Credentials: "{this is not json}",
Project: "my-gce-project",
Region: "us-central1",
}
if config.LoadAndValidate() == nil {
t.Fatalf("expected error, but got nil")
}
}
func TestAccConfigLoadValidate_credentials(t *testing.T) {
if os.Getenv(resource.TestEnvVar) == "" {
t.Skip(fmt.Sprintf("Network access not allowed; use %s=1 to enable", resource.TestEnvVar))
}
testAccPreCheck(t)
creds := getTestCredsFromEnv()
proj := getTestProjectFromEnv()
config := Config{
Credentials: creds,
Project: proj,
Region: "us-central1",
}
err := config.LoadAndValidate()
if err != nil {
t.Fatalf("error: %v", err)
}
_, err = config.clientCompute.Zones.Get(proj, "us-central1-a").Do()
if err != nil {
t.Fatalf("expected call with loaded config client to work, got error: %s", err)
}
}
func TestAccConfigLoadValidate_accessToken(t *testing.T) {
if os.Getenv(resource.TestEnvVar) == "" {
t.Skip(fmt.Sprintf("Network access not allowed; use %s=1 to enable", resource.TestEnvVar))
}
testAccPreCheck(t)
creds := getTestCredsFromEnv()
proj := getTestProjectFromEnv()
c, err := google.CredentialsFromJSON(context.Background(), []byte(creds), testOauthScope)
if err != nil {
t.Fatalf("invalid test credentials: %s", err)
}
token, err := c.TokenSource.Token()
if err != nil {
t.Fatalf("Unable to generate test access token: %s", err)
}
config := Config{
AccessToken: token.AccessToken,
Project: proj,
Region: "us-central1",
}
err = config.LoadAndValidate()
if err != nil {
t.Fatalf("error: %v", err)
}
_, err = config.clientCompute.Zones.Get(proj, "us-central1-a").Do()
if err != nil {
t.Fatalf("expected API call with loaded config to work, got error: %s", err)
}
}
func TestConfigLoadAndValidate_customScopes(t *testing.T) {
config := Config{
Credentials: testFakeCredentialsPath,
Project: "my-gce-project",
Region: "us-central1",
Scopes: []string{"https://www.googleapis.com/auth/compute"},
}
err := config.LoadAndValidate()
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if len(config.Scopes) != 1 {
t.Fatalf("expected 1 scope, got %d scopes: %v", len(config.Scopes), config.Scopes)
}
if config.Scopes[0] != "https://www.googleapis.com/auth/compute" {
t.Fatalf("expected scope to be %q, got %q", "https://www.googleapis.com/auth/compute", config.Scopes[0])
}
}