github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/aws/resource_aws_codecommit_repository_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/codecommit"
    10  	"github.com/hashicorp/terraform/helper/acctest"
    11  	"github.com/hashicorp/terraform/helper/resource"
    12  	"github.com/hashicorp/terraform/terraform"
    13  )
    14  
    15  func TestAccAWSCodeCommitRepository_basic(t *testing.T) {
    16  	rInt := acctest.RandInt()
    17  	resource.Test(t, resource.TestCase{
    18  		PreCheck:     func() { testAccPreCheck(t) },
    19  		Providers:    testAccProviders,
    20  		CheckDestroy: testAccCheckCodeCommitRepositoryDestroy,
    21  		Steps: []resource.TestStep{
    22  			{
    23  				Config: testAccCodeCommitRepository_basic(rInt),
    24  				Check: resource.ComposeTestCheckFunc(
    25  					testAccCheckCodeCommitRepositoryExists("aws_codecommit_repository.test"),
    26  				),
    27  			},
    28  		},
    29  	})
    30  }
    31  
    32  func TestAccAWSCodeCommitRepository_withChanges(t *testing.T) {
    33  	rInt := acctest.RandInt()
    34  	resource.Test(t, resource.TestCase{
    35  		PreCheck:     func() { testAccPreCheck(t) },
    36  		Providers:    testAccProviders,
    37  		CheckDestroy: testAccCheckCodeCommitRepositoryDestroy,
    38  		Steps: []resource.TestStep{
    39  			{
    40  				Config: testAccCodeCommitRepository_basic(rInt),
    41  				Check: resource.ComposeTestCheckFunc(
    42  					testAccCheckCodeCommitRepositoryExists("aws_codecommit_repository.test"),
    43  					resource.TestCheckResourceAttr(
    44  						"aws_codecommit_repository.test", "description", "This is a test description"),
    45  				),
    46  			},
    47  			{
    48  				Config: testAccCodeCommitRepository_withChanges(rInt),
    49  				Check: resource.ComposeTestCheckFunc(
    50  					testAccCheckCodeCommitRepositoryExists("aws_codecommit_repository.test"),
    51  					resource.TestCheckResourceAttr(
    52  						"aws_codecommit_repository.test", "description", "This is a test description - with changes"),
    53  				),
    54  			},
    55  		},
    56  	})
    57  }
    58  
    59  func TestAccAWSCodeCommitRepository_create_default_branch(t *testing.T) {
    60  	rInt := acctest.RandInt()
    61  	resource.Test(t, resource.TestCase{
    62  		PreCheck:     func() { testAccPreCheck(t) },
    63  		Providers:    testAccProviders,
    64  		CheckDestroy: testAccCheckCodeCommitRepositoryDestroy,
    65  		Steps: []resource.TestStep{
    66  			{
    67  				Config: testAccCodeCommitRepository_with_default_branch(rInt),
    68  				Check: resource.ComposeTestCheckFunc(
    69  					testAccCheckCodeCommitRepositoryExists("aws_codecommit_repository.test"),
    70  					resource.TestCheckResourceAttr(
    71  						"aws_codecommit_repository.test", "default_branch", "master"),
    72  				),
    73  			},
    74  		},
    75  	})
    76  }
    77  
    78  func TestAccAWSCodeCommitRepository_create_and_update_default_branch(t *testing.T) {
    79  	rInt := acctest.RandInt()
    80  	resource.Test(t, resource.TestCase{
    81  		PreCheck:     func() { testAccPreCheck(t) },
    82  		Providers:    testAccProviders,
    83  		CheckDestroy: testAccCheckCodeCommitRepositoryDestroy,
    84  		Steps: []resource.TestStep{
    85  			{
    86  				Config: testAccCodeCommitRepository_basic(rInt),
    87  				Check: resource.ComposeTestCheckFunc(
    88  					testAccCheckCodeCommitRepositoryExists("aws_codecommit_repository.test"),
    89  					resource.TestCheckNoResourceAttr(
    90  						"aws_codecommit_repository.test", "default_branch"),
    91  				),
    92  			},
    93  			{
    94  				Config: testAccCodeCommitRepository_with_default_branch(rInt),
    95  				Check: resource.ComposeTestCheckFunc(
    96  					testAccCheckCodeCommitRepositoryExists("aws_codecommit_repository.test"),
    97  					resource.TestCheckResourceAttr(
    98  						"aws_codecommit_repository.test", "default_branch", "master"),
    99  				),
   100  			},
   101  		},
   102  	})
   103  }
   104  
   105  func testAccCheckCodeCommitRepositoryExists(name string) resource.TestCheckFunc {
   106  	return func(s *terraform.State) error {
   107  		rs, ok := s.RootModule().Resources[name]
   108  		if !ok {
   109  			return fmt.Errorf("Not found: %s", name)
   110  		}
   111  
   112  		if rs.Primary.ID == "" {
   113  			return fmt.Errorf("No ID is set")
   114  		}
   115  
   116  		codecommitconn := testAccProvider.Meta().(*AWSClient).codecommitconn
   117  		out, err := codecommitconn.GetRepository(&codecommit.GetRepositoryInput{
   118  			RepositoryName: aws.String(rs.Primary.ID),
   119  		})
   120  
   121  		if err != nil {
   122  			return err
   123  		}
   124  
   125  		if out.RepositoryMetadata.Arn == nil {
   126  			return fmt.Errorf("No CodeCommit Repository Vault Found")
   127  		}
   128  
   129  		if *out.RepositoryMetadata.RepositoryName != rs.Primary.ID {
   130  			return fmt.Errorf("CodeCommit Repository Mismatch - existing: %q, state: %q",
   131  				*out.RepositoryMetadata.RepositoryName, rs.Primary.ID)
   132  		}
   133  
   134  		return nil
   135  	}
   136  }
   137  
   138  func testAccCheckCodeCommitRepositoryDestroy(s *terraform.State) error {
   139  	conn := testAccProvider.Meta().(*AWSClient).codecommitconn
   140  
   141  	for _, rs := range s.RootModule().Resources {
   142  		if rs.Type != "aws_codecommit_repository" {
   143  			continue
   144  		}
   145  
   146  		_, err := conn.GetRepository(&codecommit.GetRepositoryInput{
   147  			RepositoryName: aws.String(rs.Primary.ID),
   148  		})
   149  
   150  		if ae, ok := err.(awserr.Error); ok && ae.Code() == "RepositoryDoesNotExistException" {
   151  			continue
   152  		}
   153  		if err == nil {
   154  			return fmt.Errorf("Repository still exists: %s", rs.Primary.ID)
   155  		}
   156  		return err
   157  	}
   158  
   159  	return nil
   160  }
   161  
   162  func testAccCodeCommitRepository_basic(rInt int) string {
   163  	return fmt.Sprintf(`
   164  resource "aws_codecommit_repository" "test" {
   165    repository_name = "test_repository_%d"
   166    description = "This is a test description"
   167  }
   168  `, rInt)
   169  }
   170  
   171  func testAccCodeCommitRepository_withChanges(rInt int) string {
   172  	return fmt.Sprintf(`
   173  resource "aws_codecommit_repository" "test" {
   174    repository_name = "test_repository_%d"
   175    description = "This is a test description - with changes"
   176  }
   177  `, rInt)
   178  }
   179  
   180  func testAccCodeCommitRepository_with_default_branch(rInt int) string {
   181  	return fmt.Sprintf(`
   182  resource "aws_codecommit_repository" "test" {
   183    repository_name = "test_repository_%d"
   184    description = "This is a test description"
   185    default_branch = "master"
   186  }
   187  `, rInt)
   188  }