github.com/cloudfoundry-attic/ltc@v0.0.0-20151123212628-098adc7919fc/docker_runner/docker_metadata_fetcher/docker_session_factory_test.go (about) 1 package docker_metadata_fetcher_test 2 3 import ( 4 "net/url" 5 6 . "github.com/onsi/ginkgo" 7 . "github.com/onsi/gomega" 8 "github.com/onsi/gomega/ghttp" 9 10 "github.com/cloudfoundry-incubator/ltc/docker_runner/docker_metadata_fetcher" 11 "github.com/docker/docker/cliconfig" 12 "github.com/docker/docker/registry" 13 ) 14 15 var _ = Describe("DockerSessionFactory", func() { 16 Describe("MakeSession", func() { 17 var ( 18 registryHost string 19 dockerRegistryServer *ghttp.Server 20 sessionFactory docker_metadata_fetcher.DockerSessionFactory 21 ) 22 23 BeforeEach(func() { 24 sessionFactory = docker_metadata_fetcher.NewDockerSessionFactory() 25 dockerRegistryServer = ghttp.NewServer() 26 }) 27 28 AfterEach(func() { 29 dockerRegistryServer.Close() 30 }) 31 32 Describe("creating registry sessions", func() { 33 BeforeEach(func() { 34 parts, err := url.Parse(dockerRegistryServer.URL()) 35 Expect(err).NotTo(HaveOccurred()) 36 registryHost = parts.Host 37 38 dockerRegistryServer.RouteToHandler("GET", "/v1/_ping", ghttp.VerifyRequest("GET", "/v1/_ping")) 39 dockerRegistryServer.RouteToHandler("GET", "/v2/", ghttp.VerifyRequest("GET", "/v2/")) 40 }) 41 42 Context("when connecting to a secure registry", func() { 43 It("creates a registry session for the given repo", func() { 44 session, err := sessionFactory.MakeSession(registryHost+"/lattice-mappppppppppppappapapa", false) 45 Expect(err).NotTo(HaveOccurred()) 46 47 registrySession, ok := session.(*registry.Session) 48 Expect(ok).To(BeTrue()) 49 Expect(*registrySession.GetAuthConfig(true)).To(Equal(cliconfig.AuthConfig{})) 50 51 Expect(dockerRegistryServer.ReceivedRequests()).To(HaveLen(2)) 52 }) 53 }) 54 55 Context("when connecting to an insecure registry", func() { 56 It("creates a registry session for the given repo", func() { 57 session, err := sessionFactory.MakeSession(registryHost+"/lattice-mappppppppppppappapapa", true) 58 Expect(err).NotTo(HaveOccurred()) 59 60 registrySession, ok := session.(*registry.Session) 61 Expect(ok).To(BeTrue()) 62 Expect(*registrySession.GetAuthConfig(true)).To(Equal(cliconfig.AuthConfig{})) 63 64 Expect(dockerRegistryServer.ReceivedRequests()).To(HaveLen(2)) 65 }) 66 }) 67 }) 68 69 Context("when resolving the repo name fails", func() { 70 It("returns errors from resolving the repo name", func() { 71 _, err := sessionFactory.MakeSession("¥Not-A-Valid-Repo-Name¥"+"/lattice-mappppppppppppappapapa", false) 72 Expect(err).To(MatchError(ContainSubstring("Error resolving Docker repository name:\nrepository name component must match"))) 73 74 Expect(dockerRegistryServer.ReceivedRequests()).To(HaveLen(0)) 75 }) 76 }) 77 78 Context("when creating a new endpoint fails", func() { 79 It("returns an error", func() { 80 _, err := sessionFactory.MakeSession("nonexistantregistry.example.com/lattice-mappppppppppppappapapa", false) 81 Expect(err).To(MatchError(ContainSubstring("Error Connecting to Docker registry:\ninvalid registry endpoint"))) 82 83 Expect(dockerRegistryServer.ReceivedRequests()).To(HaveLen(0)) 84 }) 85 }) 86 87 }) 88 })