github.com/mponton/terratest@v0.44.0/modules/gcp/storage_test.go (about)

     1  //go:build gcp
     2  // +build gcp
     3  
     4  // NOTE: We use build tags to differentiate GCP testing for better isolation and parallelism when executing our tests.
     5  
     6  package gcp
     7  
     8  import (
     9  	"bytes"
    10  	"fmt"
    11  	"strings"
    12  	"testing"
    13  
    14  	"github.com/mponton/terratest/modules/logger"
    15  	"github.com/mponton/terratest/modules/random"
    16  	"github.com/stretchr/testify/require"
    17  )
    18  
    19  func TestCreateAndDestroyStorageBucket(t *testing.T) {
    20  	t.Parallel()
    21  
    22  	projectID := GetGoogleProjectIDFromEnvVar(t)
    23  	id := random.UniqueId()
    24  	gsBucketName := "gruntwork-terratest-" + strings.ToLower(id)
    25  	testFilePath := fmt.Sprintf("test-file-%s.txt", random.UniqueId())
    26  	testFileBody := "test file text"
    27  
    28  	logger.Logf(t, "Random values selected Bucket Name = %s, Test Filepath: %s\n", gsBucketName, testFilePath)
    29  
    30  	CreateStorageBucket(t, projectID, gsBucketName, nil)
    31  	defer DeleteStorageBucket(t, gsBucketName)
    32  
    33  	// Write a test file to the storage bucket
    34  	objectURL := WriteBucketObject(t, gsBucketName, testFilePath, strings.NewReader(testFileBody), "text/plain")
    35  	logger.Logf(t, "Got URL: %s", objectURL)
    36  
    37  	// Then verify its contents matches the expected result
    38  	fileReader := ReadBucketObject(t, gsBucketName, testFilePath)
    39  
    40  	buf := new(bytes.Buffer)
    41  	buf.ReadFrom(fileReader)
    42  	result := buf.String()
    43  
    44  	require.Equal(t, testFileBody, result)
    45  
    46  	// Empty the storage bucket so we can delete it
    47  	defer EmptyStorageBucket(t, gsBucketName)
    48  }
    49  
    50  func TestAssertStorageBucketExistsNoFalseNegative(t *testing.T) {
    51  	t.Parallel()
    52  
    53  	projectID := GetGoogleProjectIDFromEnvVar(t)
    54  	id := random.UniqueId()
    55  	gsBucketName := "gruntwork-terratest-" + strings.ToLower(id)
    56  	logger.Logf(t, "Random values selected Id = %s\n", id)
    57  
    58  	CreateStorageBucket(t, projectID, gsBucketName, nil)
    59  	defer DeleteStorageBucket(t, gsBucketName)
    60  
    61  	AssertStorageBucketExists(t, gsBucketName)
    62  }
    63  
    64  func TestAssertStorageBucketExistsNoFalsePositive(t *testing.T) {
    65  	t.Parallel()
    66  
    67  	id := random.UniqueId()
    68  	gsBucketName := "gruntwork-terratest-" + strings.ToLower(id)
    69  	logger.Logf(t, "Random values selected Id = %s\n", id)
    70  
    71  	// Don't create a new storage bucket so we can confirm that our function works as expected.
    72  
    73  	err := AssertStorageBucketExistsE(t, gsBucketName)
    74  	if err == nil {
    75  		t.Fatalf("Function claimed that the Storage Bucket '%s' exists, but in fact it does not.", gsBucketName)
    76  	}
    77  }