github.com/jxgolibs/go-oauth2-server@v1.0.1/models/oauth_test.go (about)

     1  package models_test
     2  
     3  import (
     4  	"database/sql/driver"
     5  	"testing"
     6  
     7  	"github.com/RichardKnop/go-oauth2-server/models"
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestNewAccessToken(t *testing.T) {
    12  	var (
    13  		client      = &models.OauthClient{MyGormModel: models.MyGormModel{ID: "1"}}
    14  		user        = &models.OauthUser{MyGormModel: models.MyGormModel{ID: "2"}}
    15  		accessToken *models.OauthAccessToken
    16  		v           driver.Value
    17  		err         error
    18  	)
    19  
    20  	// When user object is nil
    21  	accessToken = models.NewOauthAccessToken(
    22  		client, // client
    23  		nil,    // user
    24  		3600,   // expires in
    25  		"scope doesn't matter", // scope
    26  	)
    27  
    28  	// accessToken.ClientID.Valid should be true
    29  	assert.True(t, accessToken.ClientID.Valid)
    30  
    31  	// accessToken.ClientID.Value() should return the object id, in this case string(1)
    32  	v, err = accessToken.ClientID.Value()
    33  	assert.Nil(t, err)
    34  	assert.Equal(t, string("1"), v)
    35  
    36  	// accessToken.UserID.Valid should be false
    37  	assert.False(t, accessToken.UserID.Valid)
    38  
    39  	// accessToken.UserID.Value() should return nil
    40  	v, err = accessToken.UserID.Value()
    41  	assert.Nil(t, err)
    42  	assert.Nil(t, v)
    43  
    44  	// When user object is not nil
    45  	accessToken = models.NewOauthAccessToken(
    46  		client, // client
    47  		user,   // user
    48  		3600,   // expires in
    49  		"scope doesn't matter", // scope
    50  	)
    51  
    52  	// accessToken.ClientID.Valid should be true
    53  	assert.True(t, accessToken.ClientID.Valid)
    54  
    55  	// accessToken.ClientID.Value() should return the object id, in this case string(1)
    56  	v, err = accessToken.ClientID.Value()
    57  	assert.Nil(t, err)
    58  	assert.Equal(t, string("1"), v)
    59  
    60  	// accessToken.UserID.Valid should be true
    61  	assert.True(t, accessToken.UserID.Valid)
    62  
    63  	// accessToken.UserID.Value() should return the object id, in this case string(2)
    64  	v, err = accessToken.UserID.Value()
    65  	assert.Nil(t, err)
    66  	assert.Equal(t, string("2"), v)
    67  }
    68  
    69  func TestNewRefreshToken(t *testing.T) {
    70  	var (
    71  		client       = &models.OauthClient{MyGormModel: models.MyGormModel{ID: "1"}}
    72  		user         = &models.OauthUser{MyGormModel: models.MyGormModel{ID: "2"}}
    73  		refreshToken *models.OauthRefreshToken
    74  		v            driver.Value
    75  		err          error
    76  	)
    77  
    78  	// When user object is nil
    79  	refreshToken = models.NewOauthRefreshToken(
    80  		client,                 // client
    81  		nil,                    // user
    82  		1209600,                // expires in
    83  		"scope doesn't matter", // scope
    84  	)
    85  
    86  	// refreshToken.ClientID.Valid should be true
    87  	assert.True(t, refreshToken.ClientID.Valid)
    88  
    89  	// refreshToken.ClientID.Value() should return the object id, in this case string(1)
    90  	v, err = refreshToken.ClientID.Value()
    91  	assert.Nil(t, err)
    92  	assert.Equal(t, string("1"), v)
    93  
    94  	// refreshToken.UserID.Valid should be false
    95  	assert.False(t, refreshToken.UserID.Valid)
    96  
    97  	// refreshToken.UserID.Value() should return nil
    98  	v, err = refreshToken.UserID.Value()
    99  	assert.Nil(t, err)
   100  	assert.Nil(t, v)
   101  
   102  	// When user object is not nil
   103  	refreshToken = models.NewOauthRefreshToken(
   104  		client,                 // client
   105  		user,                   // user
   106  		1209600,                // expires in
   107  		"scope doesn't matter", // scope
   108  	)
   109  
   110  	// accessToken.ClientID.Valid should be true
   111  	assert.True(t, refreshToken.ClientID.Valid)
   112  
   113  	// accessToken.ClientID.Value() should return the object id, in this case string(1)
   114  	v, err = refreshToken.ClientID.Value()
   115  	assert.Nil(t, err)
   116  	assert.Equal(t, string("1"), v)
   117  
   118  	// refreshToken.UserID.Valid should be true
   119  	assert.True(t, refreshToken.UserID.Valid)
   120  
   121  	// refreshToken.UserID.Value() should return the object id, in this case string(2)
   122  	v, err = refreshToken.UserID.Value()
   123  	assert.Nil(t, err)
   124  	assert.Equal(t, string("2"), v)
   125  }
   126  
   127  func TestNewAuthorizationCode(t *testing.T) {
   128  	var (
   129  		client            = &models.OauthClient{MyGormModel: models.MyGormModel{ID: "1"}}
   130  		user              = &models.OauthUser{MyGormModel: models.MyGormModel{ID: "2"}}
   131  		authorizationCode *models.OauthAuthorizationCode
   132  		v                 driver.Value
   133  		err               error
   134  	)
   135  
   136  	// When user object is not nil
   137  	authorizationCode = models.NewOauthAuthorizationCode(
   138  		client, // client
   139  		user,   // user
   140  		3600,   // expires in
   141  		"redirect URI doesn't matter", // redirect URI
   142  		"scope doesn't matter",        // scope
   143  	)
   144  
   145  	// authorizationCode.ClientID.Valid should be true
   146  	assert.True(t, authorizationCode.ClientID.Valid)
   147  
   148  	// authorizationCode.ClientID.Value() should return the object id, in this case string(1)
   149  	v, err = authorizationCode.ClientID.Value()
   150  	assert.Nil(t, err)
   151  	assert.Equal(t, string("1"), v)
   152  
   153  	// authorizationCode.UserID.Valid should be true
   154  	assert.True(t, authorizationCode.UserID.Valid)
   155  
   156  	// authorizationCode.UserID.Value() should return the object id, in this case string(2)
   157  	v, err = authorizationCode.UserID.Value()
   158  	assert.Nil(t, err)
   159  	assert.Equal(t, string("2"), v)
   160  }