github.com/jxgolibs/go-oauth2-server@v1.0.1/session/service_test.go (about)

     1  package session_test
     2  
     3  import (
     4  	"github.com/RichardKnop/go-oauth2-server/session"
     5  	"github.com/stretchr/testify/assert"
     6  )
     7  
     8  func (suite *SessionTestSuite) TestService() {
     9  	var (
    10  		userSession *session.UserSession
    11  		err         error
    12  	)
    13  
    14  	// No public methods should work before StartSession has been called
    15  	userSession, err = suite.service.GetUserSession()
    16  	assert.Nil(suite.T(), userSession)
    17  	if assert.NotNil(suite.T(), err) {
    18  		assert.Equal(suite.T(), session.ErrSessonNotStarted, err)
    19  	}
    20  
    21  	// Call the StartSession method so internal session object gets set
    22  	err = suite.service.StartSession()
    23  	assert.Nil(suite.T(), err)
    24  
    25  	// Let's clear the user session first
    26  	err = suite.service.ClearUserSession()
    27  	assert.Nil(suite.T(), err)
    28  
    29  	// Since the user session has not been set yet, this should return error
    30  	userSession, err = suite.service.GetUserSession()
    31  	assert.Nil(suite.T(), userSession)
    32  	if assert.NotNil(suite.T(), err) {
    33  		assert.Equal(suite.T(), "User session type assertion error", err.Error())
    34  	}
    35  
    36  	// Let's set the user session now
    37  	suite.service.SetUserSession(&session.UserSession{
    38  		ClientID:     "test_client",
    39  		Username:     "test@username",
    40  		AccessToken:  "test_access_token",
    41  		RefreshToken: "test_refresh_token",
    42  	})
    43  
    44  	// User session is set, this should return it
    45  	userSession, err = suite.service.GetUserSession()
    46  	assert.Nil(suite.T(), err)
    47  	if assert.NotNil(suite.T(), userSession) {
    48  		assert.Equal(suite.T(), "test_client", userSession.ClientID)
    49  		assert.Equal(suite.T(), "test@username", userSession.Username)
    50  		assert.Equal(suite.T(), "test_access_token", userSession.AccessToken)
    51  		assert.Equal(suite.T(), "test_refresh_token", userSession.RefreshToken)
    52  	}
    53  
    54  	// Let's clear the user session now
    55  	err = suite.service.ClearUserSession()
    56  	assert.Nil(suite.T(), err)
    57  
    58  	// Since the user session has been cleared, this should return error
    59  	userSession, err = suite.service.GetUserSession()
    60  	assert.Nil(suite.T(), userSession)
    61  	if assert.NotNil(suite.T(), err) {
    62  		assert.Equal(suite.T(), "User session type assertion error", err.Error())
    63  	}
    64  }