github.com/winebarrel/terraform-provider-lambdazip@v0.6.1-0.20240313233639-361839f8c5c5/lambdazip/data_source_files_sha256_test.go (about)

     1  package lambdazip_test
     2  
     3  import (
     4  	"os"
     5  	"regexp"
     6  	"testing"
     7  
     8  	"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
     9  )
    10  
    11  func TestFilesSha256_basic(t *testing.T) {
    12  	cwd, _ := os.Getwd()
    13  	os.Chdir(t.TempDir())
    14  	defer os.Chdir(cwd)
    15  
    16  	os.Mkdir("app", 0755)
    17  	os.Mkdir("app/lib", 0755)
    18  	os.WriteFile("app/hello.rb", []byte("puts 'world'"), 0755)
    19  	os.WriteFile("app/world.rb", []byte("puts 'hello'"), 0755)
    20  	os.WriteFile("app/README.md", []byte("# hello.rb"), 0644)
    21  	os.WriteFile("app/lib/const.rb", []byte("A = 100"), 0644)
    22  
    23  	resource.Test(t, resource.TestCase{
    24  		IsUnitTest: true,
    25  		Providers:  testProviders,
    26  		Steps: []resource.TestStep{
    27  			// Step 1 =====================================================
    28  			{
    29  				Config: `
    30  					data "lambdazip_files_sha256" "trigger" {
    31  						files = ["**"]
    32  					}
    33  				`,
    34  				Check: resource.ComposeTestCheckFunc(
    35  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.%", "4"),
    36  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.app/hello.rb", "06db2c7a260efaf6e2e3f4c635c83506f1f40f6d3898e0e6025e3e55f44ddebe"),
    37  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.app/world.rb", "293c10e07909b3a823d7d2ba87c6cdf7400c9ed70132c2c952d7c8147d945a74"),
    38  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.app/README.md", "29200c6da7d08c5115ad63fe7b9c542e5d8e8cf8a185f5cd49d2ce71fcde8d75"),
    39  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.app/lib/const.rb", "62ed3c7896eb965afcfabafe23828a526fcc4fdc8c9e43ed65f3ffecf140036f"),
    40  				),
    41  			},
    42  			// Step 2 =====================================================
    43  			{
    44  				Config: `
    45  					data "lambdazip_files_sha256" "trigger" {
    46  						files = ["**/*.rb"]
    47  					}
    48  				`,
    49  				Check: resource.ComposeTestCheckFunc(
    50  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.%", "3"),
    51  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.app/hello.rb", "06db2c7a260efaf6e2e3f4c635c83506f1f40f6d3898e0e6025e3e55f44ddebe"),
    52  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.app/world.rb", "293c10e07909b3a823d7d2ba87c6cdf7400c9ed70132c2c952d7c8147d945a74"),
    53  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.app/lib/const.rb", "62ed3c7896eb965afcfabafe23828a526fcc4fdc8c9e43ed65f3ffecf140036f"),
    54  				),
    55  			},
    56  			// Step 3 =====================================================
    57  			{
    58  				Config: `
    59  					data "lambdazip_files_sha256" "trigger" {
    60  						files = ["app/lib/*.rb", "app/*.md"]
    61  					}
    62  				`,
    63  				Check: resource.ComposeTestCheckFunc(
    64  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.%", "2"),
    65  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.app/README.md", "29200c6da7d08c5115ad63fe7b9c542e5d8e8cf8a185f5cd49d2ce71fcde8d75"),
    66  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.app/lib/const.rb", "62ed3c7896eb965afcfabafe23828a526fcc4fdc8c9e43ed65f3ffecf140036f"),
    67  				),
    68  			},
    69  			// Step 5 =====================================================
    70  			{
    71  				Config: `
    72  					data "lambdazip_files_sha256" "trigger" {
    73  						files = ["**"]
    74  						excludes = ["app/*.md", "*/*.rb"]
    75  					}
    76  				`,
    77  				Check: resource.ComposeTestCheckFunc(
    78  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.%", "1"),
    79  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.app/lib/const.rb", "62ed3c7896eb965afcfabafe23828a526fcc4fdc8c9e43ed65f3ffecf140036f"),
    80  				),
    81  			},
    82  			// Step 6 =====================================================
    83  			{
    84  				Config: `
    85  					data "lambdazip_files_sha256" "trigger" {
    86  						files = ["**/*rb"]
    87  						excludes = ["app/world.*"]
    88  					}
    89  				`,
    90  				Check: resource.ComposeTestCheckFunc(
    91  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.%", "2"),
    92  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.app/hello.rb", "06db2c7a260efaf6e2e3f4c635c83506f1f40f6d3898e0e6025e3e55f44ddebe"),
    93  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.app/lib/const.rb", "62ed3c7896eb965afcfabafe23828a526fcc4fdc8c9e43ed65f3ffecf140036f"),
    94  				),
    95  			},
    96  		},
    97  	})
    98  }
    99  
   100  func TestFilesSha256_notExist(t *testing.T) {
   101  	cwd, _ := os.Getwd()
   102  	os.Chdir(t.TempDir())
   103  	defer os.Chdir(cwd)
   104  
   105  	os.Mkdir("app", 0755)
   106  	os.WriteFile("app/hello.rb", []byte("puts 'world'"), 0755)
   107  
   108  	resource.Test(t, resource.TestCase{
   109  		IsUnitTest: true,
   110  		Providers:  testProviders,
   111  		Steps: []resource.TestStep{
   112  			// Step 1 =====================================================
   113  			{
   114  				Config: `
   115  					data "lambdazip_files_sha256" "trigger" {
   116  						files = ["app/hello.rb"]
   117  					}
   118  				`,
   119  				Check: resource.ComposeTestCheckFunc(
   120  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "allow_not_exist", "false"),
   121  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.%", "1"),
   122  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.app/hello.rb", "06db2c7a260efaf6e2e3f4c635c83506f1f40f6d3898e0e6025e3e55f44ddebe"),
   123  				),
   124  			},
   125  			// Step 2 =====================================================
   126  			{
   127  				Config: `
   128  					data "lambdazip_files_sha256" "trigger" {
   129  						files = ["app/xhello.rb"]
   130  					}
   131  				`,
   132  				ExpectError: regexp.MustCompile(`pattern does not exist`),
   133  			},
   134  			// Step 3 =====================================================
   135  			{
   136  				Config: `
   137  					data "lambdazip_files_sha256" "trigger" {
   138  						files           = ["app/xhello.rb"]
   139  						allow_not_exist = true
   140  					}
   141  				`,
   142  				Check: resource.ComposeTestCheckFunc(
   143  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "allow_not_exist", "true"),
   144  					resource.TestCheckResourceAttr("data.lambdazip_files_sha256.trigger", "map.%", "0"),
   145  				),
   146  			},
   147  		},
   148  	})
   149  }