Repository navigation
Expand file tree
/
Copy pathgcs_test.go
More file actions
69 lines (56 loc) · 1.92 KB
/
Copy pathgcs_test.go
File metadata and controls
69 lines (56 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package remote
import (
"fmt"
"os"
"testing"
"time"
storage "google.golang.org/api/storage/v1"
)
func TestGCSClient_impl(t *testing.T) {
var _ Client = new(GCSClient)
}
func TestGCSClient(t *testing.T) {
// This test creates a bucket in GCS and populates it.
// It may incur costs, so it will only run if GCS credential environment
// variables are present.
projectID := os.Getenv("GOOGLE_PROJECT")
if projectID == "" {
t.Skipf("skipping; GOOGLE_PROJECT must be set")
}
bucketName := fmt.Sprintf("terraform-remote-gcs-test-%x", time.Now().Unix())
keyName := "testState"
testData := []byte(`testing data`)
config := make(map[string]string)
config["bucket"] = bucketName
config["path"] = keyName
client, err := gcsFactory(config)
if err != nil {
t.Fatalf("Error for valid config: %v", err)
}
gcsClient := client.(*GCSClient)
nativeClient := gcsClient.clientStorage
// Be clear about what we're doing in case the user needs to clean
// this up later.
if _, err := nativeClient.Buckets.Get(bucketName).Do(); err == nil {
fmt.Printf("Bucket %s already exists - skipping buckets.insert call.", bucketName)
} else {
// Create a bucket.
if res, err := nativeClient.Buckets.Insert(projectID, &storage.Bucket{Name: bucketName}).Do(); err == nil {
fmt.Printf("Created bucket %v at location %v\n\n", res.Name, res.SelfLink)
} else {
t.Skipf("Failed to create test GCS bucket, so skipping")
}
}
// Ensure we can perform a PUT request with the encryption header
err = gcsClient.Put(testData)
if err != nil {
t.Logf("WARNING: Failed to send test data to GCS bucket. (error was %s)", err)
}
defer func() {
// Delete the test bucket in the project
if err := gcsClient.clientStorage.Buckets.Delete(bucketName).Do(); err != nil {
t.Logf("WARNING: Failed to delete the test GCS bucket. It has been left in your GCE account and may incur storage charges. (error was %s)", err)
}
}()
testClient(t, client)
}