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