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 }