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