}, 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)) }) }) })
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) })