github.com/gabrielperezs/terraform@v0.7.0-rc2.0.20160715084931-f7da2612946f/builtin/providers/docker/resource_docker_image_test.go (about) 1 package docker 2 3 import ( 4 "fmt" 5 "regexp" 6 "testing" 7 8 dc "github.com/fsouza/go-dockerclient" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 var contentDigestRegexp = regexp.MustCompile(`\A[A-Za-z0-9_\+\.-]+:[A-Fa-f0-9]+\z`) 14 15 func TestAccDockerImage_basic(t *testing.T) { 16 resource.Test(t, resource.TestCase{ 17 PreCheck: func() { testAccPreCheck(t) }, 18 Providers: testAccProviders, 19 CheckDestroy: testAccDockerImageDestroy, 20 Steps: []resource.TestStep{ 21 resource.TestStep{ 22 Config: testAccDockerImageConfig, 23 Check: resource.ComposeTestCheckFunc( 24 resource.TestMatchResourceAttr("docker_image.foo", "latest", contentDigestRegexp), 25 ), 26 }, 27 }, 28 }) 29 } 30 31 func TestAccDockerImage_private(t *testing.T) { 32 resource.Test(t, resource.TestCase{ 33 PreCheck: func() { testAccPreCheck(t) }, 34 Providers: testAccProviders, 35 CheckDestroy: testAccDockerImageDestroy, 36 Steps: []resource.TestStep{ 37 resource.TestStep{ 38 Config: testAddDockerPrivateImageConfig, 39 Check: resource.ComposeTestCheckFunc( 40 resource.TestMatchResourceAttr("docker_image.foobar", "latest", contentDigestRegexp), 41 ), 42 }, 43 }, 44 }) 45 } 46 47 func TestAccDockerImage_destroy(t *testing.T) { 48 resource.Test(t, resource.TestCase{ 49 PreCheck: func() { testAccPreCheck(t) }, 50 Providers: testAccProviders, 51 CheckDestroy: func(s *terraform.State) error { 52 for _, rs := range s.RootModule().Resources { 53 if rs.Type != "docker_image" { 54 continue 55 } 56 57 client := testAccProvider.Meta().(*dc.Client) 58 _, err := client.InspectImage(rs.Primary.Attributes["latest"]) 59 if err != nil { 60 return err 61 } 62 } 63 return nil 64 }, 65 Steps: []resource.TestStep{ 66 resource.TestStep{ 67 Config: testAccDockerImageKeepLocallyConfig, 68 Check: resource.ComposeTestCheckFunc( 69 resource.TestMatchResourceAttr("docker_image.foobarzoo", "latest", contentDigestRegexp), 70 ), 71 }, 72 }, 73 }) 74 } 75 76 func testAccDockerImageDestroy(s *terraform.State) error { 77 for _, rs := range s.RootModule().Resources { 78 if rs.Type != "docker_image" { 79 continue 80 } 81 82 client := testAccProvider.Meta().(*dc.Client) 83 _, err := client.InspectImage(rs.Primary.Attributes["latest"]) 84 if err == nil { 85 return fmt.Errorf("Image still exists") 86 } else if err != dc.ErrNoSuchImage { 87 return err 88 } 89 } 90 return nil 91 } 92 93 const testAccDockerImageConfig = ` 94 resource "docker_image" "foo" { 95 name = "alpine:3.1" 96 keep_updated = false 97 } 98 ` 99 100 const testAddDockerPrivateImageConfig = ` 101 resource "docker_image" "foobar" { 102 name = "gcr.io:443/google_containers/pause:0.8.0" 103 keep_updated = true 104 } 105 ` 106 107 const testAccDockerImageKeepLocallyConfig = ` 108 resource "docker_image" "foobarzoo" { 109 name = "crux:3.1" 110 keep_locally = true 111 } 112 `