github.com/Richardknop/go-oauth2-server@v1.0.1/oauth/grant_type_client_credentials_test.go (about) 1 package oauth_test 2 3 import ( 4 "net/http" 5 "net/http/httptest" 6 "net/url" 7 8 "github.com/RichardKnop/go-oauth2-server/models" 9 "github.com/RichardKnop/go-oauth2-server/oauth" 10 "github.com/RichardKnop/go-oauth2-server/oauth/tokentypes" 11 "github.com/RichardKnop/go-oauth2-server/test-util" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func (suite *OauthTestSuite) TestClientCredentialsGrant() { 16 // Prepare a request 17 r, err := http.NewRequest("POST", "http://1.2.3.4/v1/oauth/tokens", nil) 18 assert.NoError(suite.T(), err, "Request setup should not get an error") 19 r.SetBasicAuth("test_client_1", "test_secret") 20 r.PostForm = url.Values{ 21 "grant_type": {"client_credentials"}, 22 "scope": {"read_write"}, 23 } 24 25 // Serve the request 26 w := httptest.NewRecorder() 27 suite.router.ServeHTTP(w, r) 28 29 // Fetch data 30 accessToken := new(models.OauthAccessToken) 31 assert.False(suite.T(), models.OauthAccessTokenPreload(suite.db). 32 Last(accessToken).RecordNotFound()) 33 34 // Check the response 35 expected := &oauth.AccessTokenResponse{ 36 AccessToken: accessToken.Token, 37 ExpiresIn: 3600, 38 TokenType: tokentypes.Bearer, 39 Scope: "read_write", 40 } 41 testutil.TestResponseObject(suite.T(), w, expected, 200) 42 43 // Client credentials grant does not produce refresh token 44 assert.True(suite.T(), models.OauthRefreshTokenPreload(suite.db). 45 First(new(models.OauthRefreshToken)).RecordNotFound()) 46 }