github.com/liamawhite/cli-with-i18n@v6.32.1-0.20171122084555-dede0a5c3448+incompatible/api/uaa/auth_test.go (about)

     1  package uaa_test
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  
     7  	. "github.com/liamawhite/cli-with-i18n/api/uaa"
     8  	"github.com/liamawhite/cli-with-i18n/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  })