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