github.com/aspring/terraform@v0.8.2-0.20161216122603-6a8619a5db2e/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  			resource.TestStep{
    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  			resource.TestStep{
    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  			resource.TestStep{
    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  			resource.TestStep{
    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  			resource.TestStep{
    86  				Config: testAccCodeCommitRepository_basic(rInt),
    87  				Check: resource.ComposeTestCheckFunc(
    88  					testAccCheckCodeCommitRepositoryExists("aws_codecommit_repository.test"),
    89  					resource.TestCheckResourceAttr(
    90  						"aws_codecommit_repository.test", "default_branch", ""),
    91  				),
    92  			},
    93  			resource.TestStep{
    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  provider "aws" {
   165    region = "us-east-1"
   166  }
   167  resource "aws_codecommit_repository" "test" {
   168    repository_name = "test_repository_%d"
   169    description = "This is a test description"
   170  }
   171  `, rInt)
   172  }
   173  
   174  func testAccCodeCommitRepository_withChanges(rInt int) string {
   175  	return fmt.Sprintf(`
   176  provider "aws" {
   177    region = "us-east-1"
   178  }
   179  resource "aws_codecommit_repository" "test" {
   180    repository_name = "test_repository_%d"
   181    description = "This is a test description - with changes"
   182  }
   183  `, rInt)
   184  }
   185  
   186  func testAccCodeCommitRepository_with_default_branch(rInt int) string {
   187  	return fmt.Sprintf(`
   188  provider "aws" {
   189    region = "us-east-1"
   190  }
   191  resource "aws_codecommit_repository" "test" {
   192    repository_name = "test_repository_%d"
   193    description = "This is a test description"
   194    default_branch = "master"
   195  }
   196  `, rInt)
   197  }