github.com/aspring/terraform@v0.8.2-0.20161216122603-6a8619a5db2e/builtin/providers/aws/resource_aws_opsworks_application_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/aws/aws-sdk-go/aws" 8 "github.com/aws/aws-sdk-go/aws/awserr" 9 "github.com/aws/aws-sdk-go/service/opsworks" 10 "github.com/hashicorp/terraform/helper/resource" 11 "github.com/hashicorp/terraform/terraform" 12 ) 13 14 func TestAccAWSOpsworksApplication(t *testing.T) { 15 resource.Test(t, resource.TestCase{ 16 PreCheck: func() { testAccPreCheck(t) }, 17 Providers: testAccProviders, 18 CheckDestroy: testAccCheckAwsOpsworksApplicationDestroy, 19 Steps: []resource.TestStep{ 20 resource.TestStep{ 21 Config: testAccAwsOpsworksApplicationCreate, 22 Check: resource.ComposeTestCheckFunc( 23 resource.TestCheckResourceAttr( 24 "aws_opsworks_application.tf-acc-app", "name", "tf-ops-acc-application", 25 ), 26 resource.TestCheckResourceAttr( 27 "aws_opsworks_application.tf-acc-app", "type", "other", 28 ), 29 resource.TestCheckResourceAttr( 30 "aws_opsworks_application.tf-acc-app", "enable_ssl", "false", 31 ), 32 resource.TestCheckResourceAttr( 33 "aws_opsworks_application.tf-acc-app", "ssl_configuration", "", 34 ), 35 resource.TestCheckResourceAttr( 36 "aws_opsworks_application.tf-acc-app", "domains", "", 37 ), 38 resource.TestCheckResourceAttr( 39 "aws_opsworks_application.tf-acc-app", "app_source", "", 40 ), 41 resource.TestCheckResourceAttr( 42 "aws_opsworks_application.tf-acc-app", "environment.3077298702.key", "key1", 43 ), 44 resource.TestCheckResourceAttr( 45 "aws_opsworks_application.tf-acc-app", "environment.3077298702.value", "value1", 46 ), 47 resource.TestCheckResourceAttr( 48 "aws_opsworks_application.tf-acc-app", "environment.3077298702.secret", "", 49 ), 50 resource.TestCheckResourceAttr( 51 "aws_opsworks_application.tf-acc-app", "document_root", "foo", 52 ), 53 ), 54 }, 55 resource.TestStep{ 56 Config: testAccAwsOpsworksApplicationUpdate, 57 Check: resource.ComposeTestCheckFunc( 58 resource.TestCheckResourceAttr( 59 "aws_opsworks_application.tf-acc-app", "name", "tf-ops-acc-application", 60 ), 61 resource.TestCheckResourceAttr( 62 "aws_opsworks_application.tf-acc-app", "type", "rails", 63 ), 64 resource.TestCheckResourceAttr( 65 "aws_opsworks_application.tf-acc-app", "enable_ssl", "true", 66 ), 67 resource.TestCheckResourceAttr( 68 "aws_opsworks_application.tf-acc-app", "ssl_configuration.0.certificate", "-----BEGIN CERTIFICATE-----\nMIIBkDCB+gIJALoScFD0sJq3MA0GCSqGSIb3DQEBBQUAMA0xCzAJBgNVBAYTAkRF\nMB4XDTE1MTIxOTIwMzU1MVoXDTE2MDExODIwMzU1MVowDTELMAkGA1UEBhMCREUw\ngZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKKQKbTTH/Julz16xY7ArYlzJYCP\nedTCx1bopuryCx/+d1gC94MtRdlPSpQl8mfc9iBdtXbJppp73Qh/DzLzO9Ns25xZ\n+kUQMhbIyLsaCBzuEGLgAaVdGpNvRBw++UoYtd0U7QczFAreTGLH8n8+FIzuI5Mc\n+MJ1TKbbt5gFfRSzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEALARo96wCDmaHKCaX\nS0IGLGnZCfiIUfCmBxOXBSJxDBwter95QHR0dMGxYIujee5n4vvavpVsqZnfMC3I\nOZWPlwiUJbNIpK+04Bg2vd5m/NMMrvi75RfmyeMtSfq/NrIX2Q3+nyWI7DLq7yZI\nV/YEvOqdAiy5NEWBztHx8HvB9G4=\n-----END CERTIFICATE-----", 69 ), 70 resource.TestCheckResourceAttr( 71 "aws_opsworks_application.tf-acc-app", "ssl_configuration.0.private_key", "-----BEGIN RSA PRIVATE KEY-----\nMIICXQIBAAKBgQCikCm00x/ybpc9esWOwK2JcyWAj3nUwsdW6Kbq8gsf/ndYAveD\nLUXZT0qUJfJn3PYgXbV2yaaae90Ifw8y8zvTbNucWfpFEDIWyMi7Gggc7hBi4AGl\nXRqTb0QcPvlKGLXdFO0HMxQK3kxix/J/PhSM7iOTHPjCdUym27eYBX0UswIDAQAB\nAoGBAIYcrvuqDboguI8U4TUjCkfSAgds1pLLWk79wu8jXkA329d1IyNKT0y3WIye\nPbyoEzmidZmZROQ/+ZsPz8c12Y0DrX73WSVzKNyJeP7XMk9HSzA1D9RX0U0S+5Kh\nFAMc2NEVVFIfQtVtoVmHdKDpnRYtOCHLW9rRpvqOOjd4mYk5AkEAzeiFr1mtlnsa\n67shMxzDaOTAFMchRz6G7aSovvCztxcB63ulFI/w9OTUMdTQ7ff7pet+lVihLc2W\nefIL0HvsjQJBAMocNTKaR/TnsV5GSk2kPAdR+zFP5sQy8sfMy0lEXTylc7zN4ajX\nMeHVoxp+GZgpfDcZ3ya808H1umyXh+xA1j8CQE9x9ZKQYT98RAjL7KVR5btk9w+N\nPTPF1j1+mHUDXfO4ds8qp6jlWKzEVXLcj7ghRADiebaZuaZ4eiSW1SQdjEkCQQC4\nwDhQ3X9RfEpCp3ZcqvjEqEg6t5N3XitYQPjDLN8eBRBbUsgpEy3iBuxl10eGNMX7\niIbYXlwkPYAArDPv3wT5AkAwp4vym+YKmDqh6gseKfRDuJqRiW9yD5A8VGr/w88k\n5rkuduVGP7tK3uIp00Its3aEyKF8mLGWYszVGeeLxAMH\n-----END RSA PRIVATE KEY-----", 72 ), 73 resource.TestCheckResourceAttr( 74 "aws_opsworks_application.tf-acc-app", "domains.0", "example.com", 75 ), 76 resource.TestCheckResourceAttr( 77 "aws_opsworks_application.tf-acc-app", "domains.1", "sub.example.com", 78 ), 79 resource.TestCheckResourceAttr( 80 "aws_opsworks_application.tf-acc-app", "app_source.0.password", "", 81 ), 82 resource.TestCheckResourceAttr( 83 "aws_opsworks_application.tf-acc-app", "app_source.0.revision", "master", 84 ), 85 resource.TestCheckResourceAttr( 86 "aws_opsworks_application.tf-acc-app", "app_source.0.ssh_key", "", 87 ), 88 resource.TestCheckResourceAttr( 89 "aws_opsworks_application.tf-acc-app", "app_source.0.type", "git", 90 ), 91 resource.TestCheckResourceAttr( 92 "aws_opsworks_application.tf-acc-app", "app_source.0.url", "https://github.com/aws/example.git", 93 ), 94 resource.TestCheckResourceAttr( 95 "aws_opsworks_application.tf-acc-app", "app_source.0.username", "", 96 ), 97 resource.TestCheckResourceAttr( 98 "aws_opsworks_application.tf-acc-app", "environment.2107898637.key", "key2", 99 ), 100 resource.TestCheckResourceAttr( 101 "aws_opsworks_application.tf-acc-app", "environment.2107898637.value", "value2", 102 ), 103 resource.TestCheckResourceAttr( 104 "aws_opsworks_application.tf-acc-app", "environment.2107898637.secure", "true", 105 ), 106 resource.TestCheckResourceAttr( 107 "aws_opsworks_application.tf-acc-app", "environment.3077298702.key", "key1", 108 ), 109 resource.TestCheckResourceAttr( 110 "aws_opsworks_application.tf-acc-app", "environment.3077298702.value", "value1", 111 ), 112 resource.TestCheckResourceAttr( 113 "aws_opsworks_application.tf-acc-app", "environment.3077298702.secret", "", 114 ), 115 resource.TestCheckResourceAttr( 116 "aws_opsworks_application.tf-acc-app", "document_root", "root", 117 ), 118 resource.TestCheckResourceAttr( 119 "aws_opsworks_application.tf-acc-app", "auto_bundle_on_deploy", "true", 120 ), 121 resource.TestCheckResourceAttr( 122 "aws_opsworks_application.tf-acc-app", "rails_env", "staging", 123 ), 124 ), 125 }, 126 }, 127 }) 128 } 129 130 func testAccCheckAwsOpsworksApplicationDestroy(s *terraform.State) error { 131 client := testAccProvider.Meta().(*AWSClient).opsworksconn 132 133 for _, rs := range s.RootModule().Resources { 134 if rs.Type != "aws_opsworks_application" { 135 continue 136 } 137 138 req := &opsworks.DescribeAppsInput{ 139 AppIds: []*string{ 140 aws.String(rs.Primary.ID), 141 }, 142 } 143 144 resp, err := client.DescribeApps(req) 145 if err == nil { 146 if len(resp.Apps) > 0 { 147 return fmt.Errorf("OpsWorks App still exist.") 148 } 149 } 150 151 if awserr, ok := err.(awserr.Error); ok { 152 if awserr.Code() != "ResourceNotFoundException" { 153 return err 154 } 155 } 156 } 157 158 return nil 159 } 160 161 var testAccAwsOpsworksApplicationCreate = testAccAwsOpsworksStackConfigVpcCreate("tf-ops-acc-application") + ` 162 resource "aws_opsworks_application" "tf-acc-app" { 163 stack_id = "${aws_opsworks_stack.tf-acc.id}" 164 name = "tf-ops-acc-application" 165 type = "other" 166 enable_ssl = false 167 app_source ={ 168 type = "other" 169 } 170 environment = { key = "key1" value = "value1" secure = false} 171 document_root = "foo" 172 } 173 ` 174 175 var testAccAwsOpsworksApplicationUpdate = testAccAwsOpsworksStackConfigVpcCreate("tf-ops-acc-application") + ` 176 resource "aws_opsworks_application" "tf-acc-app" { 177 stack_id = "${aws_opsworks_stack.tf-acc.id}" 178 name = "tf-ops-acc-application" 179 type = "rails" 180 domains = ["example.com", "sub.example.com"] 181 enable_ssl = true 182 ssl_configuration = { 183 private_key = <<EOS 184 -----BEGIN RSA PRIVATE KEY----- 185 MIICXQIBAAKBgQCikCm00x/ybpc9esWOwK2JcyWAj3nUwsdW6Kbq8gsf/ndYAveD 186 LUXZT0qUJfJn3PYgXbV2yaaae90Ifw8y8zvTbNucWfpFEDIWyMi7Gggc7hBi4AGl 187 XRqTb0QcPvlKGLXdFO0HMxQK3kxix/J/PhSM7iOTHPjCdUym27eYBX0UswIDAQAB 188 AoGBAIYcrvuqDboguI8U4TUjCkfSAgds1pLLWk79wu8jXkA329d1IyNKT0y3WIye 189 PbyoEzmidZmZROQ/+ZsPz8c12Y0DrX73WSVzKNyJeP7XMk9HSzA1D9RX0U0S+5Kh 190 FAMc2NEVVFIfQtVtoVmHdKDpnRYtOCHLW9rRpvqOOjd4mYk5AkEAzeiFr1mtlnsa 191 67shMxzDaOTAFMchRz6G7aSovvCztxcB63ulFI/w9OTUMdTQ7ff7pet+lVihLc2W 192 efIL0HvsjQJBAMocNTKaR/TnsV5GSk2kPAdR+zFP5sQy8sfMy0lEXTylc7zN4ajX 193 MeHVoxp+GZgpfDcZ3ya808H1umyXh+xA1j8CQE9x9ZKQYT98RAjL7KVR5btk9w+N 194 PTPF1j1+mHUDXfO4ds8qp6jlWKzEVXLcj7ghRADiebaZuaZ4eiSW1SQdjEkCQQC4 195 wDhQ3X9RfEpCp3ZcqvjEqEg6t5N3XitYQPjDLN8eBRBbUsgpEy3iBuxl10eGNMX7 196 iIbYXlwkPYAArDPv3wT5AkAwp4vym+YKmDqh6gseKfRDuJqRiW9yD5A8VGr/w88k 197 5rkuduVGP7tK3uIp00Its3aEyKF8mLGWYszVGeeLxAMH 198 -----END RSA PRIVATE KEY----- 199 EOS 200 certificate = <<EOS 201 -----BEGIN CERTIFICATE----- 202 MIIBkDCB+gIJALoScFD0sJq3MA0GCSqGSIb3DQEBBQUAMA0xCzAJBgNVBAYTAkRF 203 MB4XDTE1MTIxOTIwMzU1MVoXDTE2MDExODIwMzU1MVowDTELMAkGA1UEBhMCREUw 204 gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKKQKbTTH/Julz16xY7ArYlzJYCP 205 edTCx1bopuryCx/+d1gC94MtRdlPSpQl8mfc9iBdtXbJppp73Qh/DzLzO9Ns25xZ 206 +kUQMhbIyLsaCBzuEGLgAaVdGpNvRBw++UoYtd0U7QczFAreTGLH8n8+FIzuI5Mc 207 +MJ1TKbbt5gFfRSzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEALARo96wCDmaHKCaX 208 S0IGLGnZCfiIUfCmBxOXBSJxDBwter95QHR0dMGxYIujee5n4vvavpVsqZnfMC3I 209 OZWPlwiUJbNIpK+04Bg2vd5m/NMMrvi75RfmyeMtSfq/NrIX2Q3+nyWI7DLq7yZI 210 V/YEvOqdAiy5NEWBztHx8HvB9G4= 211 -----END CERTIFICATE----- 212 EOS 213 } 214 app_source = { 215 type = "git" 216 revision = "master" 217 url = "https://github.com/aws/example.git" 218 } 219 environment = { key = "key1" value = "value1" secure = false} 220 environment = { key = "key2" value = "value2" } 221 document_root = "root" 222 auto_bundle_on_deploy = "true" 223 rails_env = "staging" 224 } 225 `