github.com/cloudfoundry-attic/cli-with-i18n@v6.32.1-0.20171002233121-7401370d3b85+incompatible/api/uaa/auth_test.go (about) 1 package uaa_test 2 3 import ( 4 "fmt" 5 "net/http" 6 7 . "code.cloudfoundry.org/cli/api/uaa" 8 "code.cloudfoundry.org/cli/integration/helpers" 9 . "github.com/onsi/ginkgo" 10 . "github.com/onsi/gomega" 11 . "github.com/onsi/gomega/ghttp" 12 ) 13 14 var _ = Describe("Auth", func() { 15 var ( 16 client *Client 17 ) 18 19 BeforeEach(func() { 20 client = NewTestUAAClientAndStore() 21 }) 22 23 Describe("Authenticate", func() { 24 Context("when no errors occur", func() { 25 var ( 26 username string 27 password string 28 ) 29 30 BeforeEach(func() { 31 response := `{ 32 "access_token":"some-access-token", 33 "refresh_token":"some-refresh-token" 34 }` 35 username = helpers.NewUsername() 36 password = helpers.NewPassword() 37 server.AppendHandlers( 38 CombineHandlers( 39 verifyRequestHost(TestAuthorizationResource), 40 VerifyRequest(http.MethodPost, "/oauth/token"), 41 VerifyHeaderKV("Content-Type", "application/x-www-form-urlencoded"), 42 VerifyHeaderKV("Authorization", "Basic Y2xpZW50LWlkOmNsaWVudC1zZWNyZXQ="), 43 VerifyBody([]byte(fmt.Sprintf("grant_type=password&password=%s&username=%s", password, username))), 44 RespondWith(http.StatusOK, response), 45 )) 46 }) 47 48 It("authenticates with the credentials provided", func() { 49 accessToken, refreshToken, err := client.Authenticate(username, password) 50 Expect(err).NotTo(HaveOccurred()) 51 52 Expect(accessToken).To(Equal("some-access-token")) 53 Expect(refreshToken).To(Equal("some-refresh-token")) 54 }) 55 }) 56 57 Context("when an error occurs", func() { 58 var response string 59 60 BeforeEach(func() { 61 response = `{ 62 "error": "some-error", 63 "error_description": "some-description" 64 }` 65 server.AppendHandlers( 66 CombineHandlers( 67 verifyRequestHost(TestAuthorizationResource), 68 VerifyRequest(http.MethodPost, "/oauth/token"), 69 RespondWith(http.StatusTeapot, response), 70 )) 71 }) 72 73 It("returns the error", func() { 74 _, _, err := client.Authenticate("us3r", "pa55") 75 Expect(err).To(MatchError(RawHTTPStatusError{ 76 StatusCode: http.StatusTeapot, 77 RawResponse: []byte(response), 78 })) 79 }) 80 }) 81 }) 82 })