github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/skymarshal/legacyserver/server_test.go (about) 1 package legacyserver_test 2 3 import ( 4 "net/http" 5 6 . "github.com/onsi/ginkgo" 7 . "github.com/onsi/gomega" 8 ) 9 10 var _ = Describe("Legacy API", func() { 11 var err error 12 var request *http.Request 13 var response *http.Response 14 15 BeforeEach(func() { 16 client = &http.Client{ 17 CheckRedirect: func(req *http.Request, via []*http.Request) error { 18 return http.ErrUseLastResponse 19 }, 20 Transport: &http.Transport{}, 21 } 22 }) 23 24 Context("GET /login", func() { 25 26 Context("when given no query params", func() { 27 28 BeforeEach(func() { 29 request, err = http.NewRequest("GET", server.URL+"/login", nil) 30 Expect(err).NotTo(HaveOccurred()) 31 32 response, err = client.Do(request) 33 Expect(err).NotTo(HaveOccurred()) 34 }) 35 36 It("should return status 302", func() { 37 Expect(response.StatusCode).To(Equal(http.StatusFound)) 38 39 url, err := response.Location() 40 Expect(err).NotTo(HaveOccurred()) 41 Expect(url.Path).To(Equal("/sky/login")) 42 }) 43 44 }) 45 46 Context("when given fly_port query param", func() { 47 48 BeforeEach(func() { 49 request, err = http.NewRequest("GET", server.URL+"/login?fly_port=1234", nil) 50 Expect(err).NotTo(HaveOccurred()) 51 52 response, err = client.Do(request) 53 Expect(err).NotTo(HaveOccurred()) 54 }) 55 56 It("should add redirect_uri", func() { 57 Expect(response.StatusCode).To(Equal(http.StatusFound)) 58 59 url, err := response.Location() 60 Expect(err).NotTo(HaveOccurred()) 61 Expect(url.Path).To(Equal("/sky/login")) 62 Expect(url.Query()["redirect_uri"]).To(Equal( 63 []string{"/fly_success?fly_port=1234"}, 64 )) 65 }) 66 }) 67 68 Context("when given other query param", func() { 69 70 BeforeEach(func() { 71 request, err = http.NewRequest("GET", server.URL+"/login?foo=bar", nil) 72 Expect(err).NotTo(HaveOccurred()) 73 74 response, err = client.Do(request) 75 Expect(err).NotTo(HaveOccurred()) 76 }) 77 78 It("should leave query params in the redirect", func() { 79 Expect(response.StatusCode).To(Equal(http.StatusFound)) 80 81 url, err := response.Location() 82 Expect(err).NotTo(HaveOccurred()) 83 Expect(url.Path).To(Equal("/sky/login")) 84 Expect(url.Query()["foo"]).To(Equal( 85 []string{"bar"}, 86 )) 87 }) 88 }) 89 }) 90 91 Context("GET /logout", func() { 92 93 BeforeEach(func() { 94 request, err = http.NewRequest("GET", server.URL+"/logout", nil) 95 Expect(err).NotTo(HaveOccurred()) 96 97 response, err = client.Do(request) 98 Expect(err).NotTo(HaveOccurred()) 99 }) 100 101 It("should return status 301", func() { 102 Expect(response.StatusCode).To(Equal(http.StatusMovedPermanently)) 103 104 url, err := response.Location() 105 Expect(err).NotTo(HaveOccurred()) 106 Expect(url.Path).To(Equal("/sky/logout")) 107 }) 108 }) 109 110 Context("GET /auth/:provider/callback", func() { 111 112 BeforeEach(func() { 113 request, err = http.NewRequest("GET", server.URL+"/auth/github/callback?code=1234567890&state=asdfghjkl", nil) 114 Expect(err).NotTo(HaveOccurred()) 115 116 response, err = client.Do(request) 117 Expect(err).NotTo(HaveOccurred()) 118 }) 119 120 It("should return status 301", func() { 121 Expect(response.StatusCode).To(Equal(http.StatusMovedPermanently)) 122 123 url, err := response.Location() 124 Expect(err).NotTo(HaveOccurred()) 125 Expect(url.Path).To(Equal("/sky/issuer/callback")) 126 Expect(url.RawQuery).To(Equal("code=1234567890&state=asdfghjkl")) 127 }) 128 }) 129 })