github.com/richardbowden/terraform@v0.6.12-0.20160901200758-30ea22c25211/builtin/providers/archive/resource_archive_file_test.go (about)

     1  package archive
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"testing"
     7  
     8  	r "github.com/hashicorp/terraform/helper/resource"
     9  	"github.com/hashicorp/terraform/terraform"
    10  )
    11  
    12  func TestAccArchiveFile_Basic(t *testing.T) {
    13  	var fileSize string
    14  	r.Test(t, r.TestCase{
    15  		Providers: testProviders,
    16  		CheckDestroy: r.ComposeTestCheckFunc(
    17  			testAccArchiveFileMissing("zip_file_acc_test.zip"),
    18  		),
    19  		Steps: []r.TestStep{
    20  			r.TestStep{
    21  				Config: testAccArchiveFileContentConfig,
    22  				Check: r.ComposeTestCheckFunc(
    23  					testAccArchiveFileExists("zip_file_acc_test.zip", &fileSize),
    24  					r.TestCheckResourceAttrPtr("archive_file.foo", "output_size", &fileSize),
    25  				),
    26  			},
    27  			r.TestStep{
    28  				Config: testAccArchiveFileFileConfig,
    29  				Check: r.ComposeTestCheckFunc(
    30  					testAccArchiveFileExists("zip_file_acc_test.zip", &fileSize),
    31  					r.TestCheckResourceAttrPtr("archive_file.foo", "output_size", &fileSize),
    32  				),
    33  			},
    34  			r.TestStep{
    35  				Config: testAccArchiveFileDirConfig,
    36  				Check: r.ComposeTestCheckFunc(
    37  					testAccArchiveFileExists("zip_file_acc_test.zip", &fileSize),
    38  					r.TestCheckResourceAttrPtr("archive_file.foo", "output_size", &fileSize),
    39  				),
    40  			},
    41  			r.TestStep{
    42  				Config: testAccArchiveFileOutputPath,
    43  				Check: r.ComposeTestCheckFunc(
    44  					testAccArchiveFileExists(fmt.Sprintf("%s/test.zip", tmpDir), &fileSize),
    45  				),
    46  			},
    47  		},
    48  	})
    49  }
    50  
    51  func testAccArchiveFileExists(filename string, fileSize *string) r.TestCheckFunc {
    52  	return func(s *terraform.State) error {
    53  		*fileSize = ""
    54  		fi, err := os.Stat(filename)
    55  		if err != nil {
    56  			return err
    57  		}
    58  		*fileSize = fmt.Sprintf("%d", fi.Size())
    59  		return nil
    60  	}
    61  }
    62  
    63  func testAccArchiveFileMissing(filename string) r.TestCheckFunc {
    64  	return func(s *terraform.State) error {
    65  		_, err := os.Stat(filename)
    66  		if err != nil {
    67  			if os.IsNotExist(err) {
    68  				return nil
    69  			}
    70  			return err
    71  		}
    72  		return fmt.Errorf("found file expected to be deleted: %s", filename)
    73  	}
    74  }
    75  
    76  var testAccArchiveFileContentConfig = `
    77  resource "archive_file" "foo" {
    78    type                    = "zip"
    79    source_content          = "This is some content"
    80    source_content_filename = "content.txt"
    81    output_path             = "zip_file_acc_test.zip"
    82  }
    83  `
    84  
    85  var tmpDir = os.TempDir() + "/test"
    86  var testAccArchiveFileOutputPath = fmt.Sprintf(`
    87  resource "archive_file" "foo" {
    88    type                    = "zip"
    89    source_content          = "This is some content"
    90    source_content_filename = "content.txt"
    91    output_path             = "%s/test.zip"
    92  }
    93  `, tmpDir)
    94  
    95  var testAccArchiveFileFileConfig = `
    96  resource "archive_file" "foo" {
    97    type        = "zip"
    98    source_file = "test-fixtures/test-file.txt"
    99    output_path = "zip_file_acc_test.zip"
   100  }
   101  `
   102  
   103  var testAccArchiveFileDirConfig = `
   104  resource "archive_file" "foo" {
   105    type        = "zip"
   106    source_dir  = "test-fixtures/test-dir"
   107    output_path = "zip_file_acc_test.zip"
   108  }
   109  `