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  `