github.com/pivotal-cf/go-pivnet/v6@v6.0.2/uaa_test.go (about) 1 package pivnet 2 3 import ( 4 "errors" 5 6 "net/http" 7 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 "github.com/onsi/gomega/ghttp" 11 ) 12 13 var _ = Describe("UAA", func() { 14 Describe("TokenFetcher", func() { 15 var ( 16 server *ghttp.Server 17 tokenFetcher *TokenFetcher 18 ) 19 20 BeforeEach(func() { 21 server = ghttp.NewServer() 22 tokenFetcher = NewTokenFetcher(server.URL(), "some-refresh-token", false, "") 23 }) 24 25 AfterEach(func() { 26 server.Close() 27 }) 28 29 It("returns a UAA token without error", func() { 30 response := AuthResp{Token: "some-uaa-token"} 31 server.AppendHandlers( 32 ghttp.CombineHandlers( 33 ghttp.VerifyRequest("POST", "/authentication/access_tokens"), 34 ghttp.VerifyBody([]byte(`{"refresh_token":"some-refresh-token"}`)), 35 ghttp.RespondWithJSONEncoded(http.StatusOK, response), 36 ), 37 ) 38 39 token, err := tokenFetcher.GetToken() 40 Expect(err).NotTo(HaveOccurred()) 41 Expect(token).To(Equal("some-uaa-token")) 42 }) 43 44 It("passes on the user agent in the request header", func() { 45 userAgent := "my_user_agent" 46 tokenFetcher = NewTokenFetcher(server.URL(), "some-refresh-token", false, userAgent) 47 server.AppendHandlers( 48 ghttp.CombineHandlers( 49 ghttp.VerifyHeaderKV("User-Agent", userAgent), 50 ), 51 ) 52 53 tokenFetcher.GetToken() 54 }) 55 56 Context("when UAA server responds with a non-200 status code", func() { 57 It("returns the error 418", func() { 58 server.AppendHandlers( 59 ghttp.CombineHandlers( 60 ghttp.VerifyRequest("POST", "/authentication/access_tokens"), 61 ghttp.VerifyBody([]byte(`{"refresh_token":"some-refresh-token"}`)), 62 ghttp.RespondWithJSONEncoded(http.StatusTeapot, nil), 63 ), 64 ) 65 66 _, err := tokenFetcher.GetToken() 67 Expect(err).To(HaveOccurred()) 68 Expect(err).To(MatchError(errors.New("failed to fetch API token - received status 418"))) 69 }) 70 71 It("returns an error without endpoint", func() { 72 tokenFetcher = NewTokenFetcher("", "some-refresh-token", false, "") 73 server.AppendHandlers( 74 ghttp.CombineHandlers( 75 ghttp.VerifyRequest("POST", "/authentication/access_tokens"), 76 ghttp.VerifyBody([]byte(`{"refresh_token":"some-refresh-token"}`)), 77 ghttp.RespondWithJSONEncoded(http.StatusTeapot, nil), 78 ), 79 ) 80 81 _, err := tokenFetcher.GetToken() 82 Expect(err).To(HaveOccurred()) 83 }) 84 }) 85 86 }) 87 })