Explorar el Código

add tests for 'check' with a private repo

Alex Suraci hace 7 años
padre
commit
134dbc7b41
Se han modificado 4 ficheros con 108 adiciones y 1 borrados
  1. 3 0
      Dockerfile
  2. 90 0
      check_test.go
  3. 1 1
      cmd/check/main.go
  4. 14 0
      suite_test.go

+ 3 - 0
Dockerfile

@@ -18,6 +18,9 @@ RUN chmod +x /opt/resource/*
 FROM resource AS tests
 COPY --from=builder /tests /tests
 ADD . /docker-image-resource
+ARG PRIVATE_REPO
+ARG PRIVATE_REPO_USERNAME
+ARG PRIVATE_REPO_PASSWORD
 RUN set -e; for test in /tests/*.test; do \
 		$test -ginkgo.v; \
 	done

+ 90 - 0
check_test.go

@@ -53,6 +53,26 @@ var _ = Describe("Check", func() {
 				{Digest: LATEST_STATIC_DIGEST},
 			}))
 		})
+
+		Context("against a private repo with credentials", func() {
+			BeforeEach(func() {
+				req.Source = resource.Source{
+					Repository: privateRepo,
+					Tag:        "latest",
+
+					Username: privateRepoUsername,
+					Password: privateRepoPassword,
+				}
+
+				checkPrivateRepoConfigured()
+			})
+
+			It("returns the current digest", func() {
+				Expect(res).To(Equal([]resource.Version{
+					{Digest: PRIVATE_LATEST_STATIC_DIGEST},
+				}))
+			})
+		})
 	})
 
 	Context("when invoked with an up-to-date cursor version", func() {
@@ -72,6 +92,30 @@ var _ = Describe("Check", func() {
 				{Digest: LATEST_STATIC_DIGEST},
 			}))
 		})
+
+		Context("against a private repo with credentials", func() {
+			BeforeEach(func() {
+				req.Source = resource.Source{
+					Repository: privateRepo,
+					Tag:        "latest",
+
+					Username: privateRepoUsername,
+					Password: privateRepoPassword,
+				}
+
+				checkPrivateRepoConfigured()
+
+				req.Version = &resource.Version{
+					Digest: PRIVATE_LATEST_STATIC_DIGEST,
+				}
+			})
+
+			It("returns the current digest", func() {
+				Expect(res).To(Equal([]resource.Version{
+					{Digest: PRIVATE_LATEST_STATIC_DIGEST},
+				}))
+			})
+		})
 	})
 
 	Context("when invoked with a valid but out-of-date cursor version", func() {
@@ -93,6 +137,32 @@ var _ = Describe("Check", func() {
 				{Digest: LATEST_STATIC_DIGEST},
 			}))
 		})
+
+		Context("against a private repo with credentials", func() {
+			BeforeEach(func() {
+				req.Source = resource.Source{
+					Repository: privateRepo,
+					Tag:        "latest",
+
+					Username: privateRepoUsername,
+					Password: privateRepoPassword,
+				}
+
+				checkPrivateRepoConfigured()
+
+				req.Version = &resource.Version{
+					// this was previously pushed to the 'latest' tag
+					Digest: PRIVATE_OLDER_STATIC_DIGEST,
+				}
+			})
+
+			It("returns the current digest", func() {
+				Expect(res).To(Equal([]resource.Version{
+					{Digest: PRIVATE_OLDER_STATIC_DIGEST},
+					{Digest: PRIVATE_LATEST_STATIC_DIGEST},
+				}))
+			})
+		})
 	})
 
 	Context("when invoked with an invalid cursor version", func() {
@@ -113,5 +183,25 @@ var _ = Describe("Check", func() {
 				{Digest: LATEST_STATIC_DIGEST},
 			}))
 		})
+
+		Context("against a private repo with credentials", func() {
+			BeforeEach(func() {
+				req.Source = resource.Source{
+					Repository: privateRepo,
+					Tag:        "latest",
+
+					Username: privateRepoUsername,
+					Password: privateRepoPassword,
+				}
+
+				checkPrivateRepoConfigured()
+			})
+
+			It("returns the current digest", func() {
+				Expect(res).To(Equal([]resource.Version{
+					{Digest: PRIVATE_LATEST_STATIC_DIGEST},
+				}))
+			})
+		})
 	})
 })

+ 1 - 1
cmd/check/main.go

@@ -74,10 +74,10 @@ func main() {
 			os.Exit(1)
 			return
 		}
+
 		var digestImage v1.Image
 		if auth.Username != "" && auth.Password != "" {
 			digestImage, err = remote.Image(digestRef, remote.WithAuth(auth))
-
 		} else {
 			digestImage, err = remote.Image(digestRef)
 		}

+ 14 - 0
suite_test.go

@@ -24,6 +24,20 @@ var bins struct {
 const OLDER_STATIC_DIGEST = "sha256:031567a617423a84ad68b62267c30693185bd2b92c2668732efc8c70b036bd3a"
 const LATEST_STATIC_DIGEST = "sha256:64a6988c58cbdd634198f56452e8f8945e5b54a4bbca4bff7e960e1c830671ff"
 
+// same Dockerfile, but pushed again (twice; old + latest) to a private repo
+const PRIVATE_OLDER_STATIC_DIGEST = "sha256:a5e6442b86fd5f555f528deea32326e9709851f6b18d490d6dfb290c22d6ff52"
+const PRIVATE_LATEST_STATIC_DIGEST = "sha256:96c8ddb11d01b236fbf063e5a468d17f4c44ccffa19470471162dbd5bdc922a4"
+
+var privateRepo = os.Getenv("PRIVATE_REPO")
+var privateRepoUsername = os.Getenv("PRIVATE_REPO_USERNAME")
+var privateRepoPassword = os.Getenv("PRIVATE_REPO_PASSWORD")
+
+func checkPrivateRepoConfigured() {
+	if privateRepo == "" || privateRepoUsername == "" || privateRepoPassword == "" {
+		Skip("must specify $PRIVATE_REPO, $PRIVATE_REPO_USERNAME, and $PRIVATE_REPO_PASSWORD")
+	}
+}
+
 var _ = SynchronizedBeforeSuite(func() []byte {
 	var err error