示例#1
0
			},
			EgressRules:   egressRules,
			Timeout:       timeout,
			Lifecycle:     "docker",
			LifecycleData: &lifecycleData,
		}
	})

	Describe("request validation", func() {
		Context("with a missing docker image url", func() {
			BeforeEach(func() {
				dockerImageUrl = ""
			})

			It("returns an error", func() {
				_, _, _, err := docker.BuildRecipe(stagingGuid, stagingRequest)
				Expect(err).To(Equal(backend.ErrMissingDockerImageUrl))
			})
		})

		Context("with a missing credentials set", func() {
			Context("with missing user", func() {
				BeforeEach(func() {
					dockerPassword = "******"
					dockerEmail = "*****@*****.**"
				})

				It("returns an error", func() {
					_, _, _, err := docker.BuildRecipe(stagingGuid, stagingRequest)
					Expect(err).To(Equal(backend.ErrMissingDockerCredentials))
				})
			EgressRules:        egressRules,
			Timeout:            timeout,
			Lifecycle:          "buildpack",
			LifecycleData:      &lifecycleData,
			CompletionCallback: "https://api.cc.com/v1/staging/some-staging-guid/droplet_completed",
		}
	})

	Describe("request validation", func() {
		Context("with a missing app bits download uri", func() {
			BeforeEach(func() {
				appBitsDownloadUri = ""
			})

			It("returns an error", func() {
				_, _, _, err := traditional.BuildRecipe(stagingGuid, stagingRequest)
				Expect(err).To(Equal(backend.ErrMissingAppBitsDownloadUri))
			})
		})

		Context("with missing lifecycle data", func() {
			JustBeforeEach(func() {
				stagingRequest.LifecycleData = nil
			})

			It("returns an error", func() {
				_, _, _, err := traditional.BuildRecipe(stagingGuid, stagingRequest)
				Expect(err).To(Equal(backend.ErrMissingLifecycleData))
			})
		})
	})
示例#3
0
				EgressRules: []*models.SecurityGroupRule{
					{
						Protocol:     "TCP",
						Destinations: []string{"0.0.0.0/0"},
						PortRange:    &models.PortRange{Start: 80, End: 443},
					},
				},
				Timeout:            timeout,
				Lifecycle:          "docker",
				LifecycleData:      &lifecycleData,
				CompletionCallback: "https://api.cc.com/v1/staging/some-staging-guid/droplet_completed",
			}
		})

		It("returns the task domain", func() {
			_, _, domain, err := docker.BuildRecipe("staging-guid", stagingRequest)
			Expect(err).NotTo(HaveOccurred())
			Expect(domain).To(Equal("config-task-domain"))
		})

		It("returns the task guid", func() {
			_, guid, _, err := docker.BuildRecipe("staging-guid", stagingRequest)
			Expect(err).NotTo(HaveOccurred())
			Expect(guid).To(Equal("staging-guid"))
		})

		It("sets the task LogGuid", func() {
			taskDef, _, _, err := docker.BuildRecipe("staging-guid", stagingRequest)
			Expect(err).NotTo(HaveOccurred())
			Expect(taskDef.LogGuid).To(Equal("log-guid"))
		})
			stagingRequest    cc_messages.StagingRequestFromCC
		)

		BeforeEach(func() {
			dockerRegistryIPs = []string{"10.244.2.6", "10.244.2.7"}
			consulCluster = newConsulCluster(dockerRegistryIPs)
		})

		Context("user did not opt-in for docker image caching", func() {
			BeforeEach(func() {
				dockerBackend = setupDockerBackend(validDockerRegistryAddress, []string{}, consulCluster)
				stagingRequest = setupStagingRequest(false, "", "", "", "")
			})

			It("creates a cf-app-docker-staging Task with no additional egress rules", func() {
				taskDef, _, _, err := dockerBackend.BuildRecipe("staging-guid", stagingRequest)
				Expect(err).NotTo(HaveOccurred())
				Expect(taskDef.EgressRules).To(Equal(stagingRequest.EgressRules))
			})
		})

		Context("user opted-in for docker image caching", func() {
			BeforeEach(func() {
				stagingRequest = setupStagingRequest(true, "", "", "", "")
			})

			Context("when an invalid docker registry address is given", func() {
				BeforeEach(func() {
					dockerBackend = setupDockerBackend("://host:", []string{}, consulCluster)
				})