Skip to content

Commit d13783b

Browse files
committed
Add test to make sure verify does not always call core
1 parent 5e58fc2 commit d13783b

File tree

4 files changed

+75
-0
lines changed

4 files changed

+75
-0
lines changed

recipe/session/recipe.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,4 +225,5 @@ func (r *Recipe) getClaimValidatorsAddedByOtherRecipes() []claims.SessionClaimVa
225225

226226
func ResetForTest() {
227227
singletonInstance = nil
228+
didGetSessionCallCore = false
228229
}

recipe/session/sessionFunctions.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,9 @@ func getSessionHelper(config sessmodels.TypeNormalisedInput, querier supertokens
156156
requestBody["antiCsrfToken"] = *antiCsrfToken
157157
}
158158

159+
if supertokens.IsRunningInTestMode() {
160+
didGetSessionCallCore = true
161+
}
159162
response, err := querier.SendPostRequest("/recipe/session/verify", requestBody)
160163
if err != nil {
161164
return sessmodels.GetSessionResponse{}, err

recipe/session/testingUtils.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ import (
2222
"github.com/supertokens/supertokens-golang/test/unittesting"
2323
)
2424

25+
// Testing constants
26+
var didGetSessionCallCore = false
27+
2528
func resetAll() {
2629
supertokens.ResetForTest()
2730
ResetForTest()

recipe/session/verifySession_test.go

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -823,6 +823,74 @@ func TestShouldAllowCustomValidatorReturningTrueWithOverride(t *testing.T) {
823823
assert.NotEmpty(t, res["message"].(string))
824824
}
825825

826+
/**
827+
This test is to make sure that we dont always call the core for session verification by default.
828+
1. Create a session
829+
2. Call get session and expect to not call the core
830+
3. Call refresh session
831+
4. Call get session and expect the core to be called
832+
*/
833+
func TestThatVerifySessionDoesNotAlwaysCallCore(t *testing.T) {
834+
configValue := supertokens.TypeInput{
835+
Supertokens: &supertokens.ConnectionInfo{
836+
ConnectionURI: "http://localhost:8080",
837+
},
838+
AppInfo: supertokens.AppInfo{
839+
AppName: "SuperTokens",
840+
WebsiteDomain: "supertokens.io",
841+
APIDomain: "api.supertokens.io",
842+
},
843+
RecipeList: []supertokens.Recipe{
844+
Init(nil),
845+
},
846+
}
847+
BeforeEach()
848+
unittesting.StartUpST("localhost", "8080")
849+
defer AfterEach()
850+
err := supertokens.Init(configValue)
851+
if err != nil {
852+
t.Error(err.Error())
853+
}
854+
855+
createSessionResp, err := CreateNewSessionWithoutRequestResponse("test-user-id", nil, nil, nil)
856+
if err != nil {
857+
t.Error(err.Error())
858+
}
859+
860+
createdTokens := createSessionResp.GetAllSessionTokensDangerously()
861+
assert.True(t, createdTokens.AccessToken != "")
862+
assert.True(t, *createdTokens.RefreshToken != "")
863+
assert.True(t, createdTokens.FrontToken != "")
864+
865+
getSessionResp, err := GetSessionWithoutRequestResponse(createdTokens.AccessToken, createdTokens.AntiCsrfToken, nil)
866+
if err != nil {
867+
t.Error(err.Error())
868+
}
869+
870+
assert.False(t, didGetSessionCallCore)
871+
newTokens := getSessionResp.GetAllSessionTokensDangerously()
872+
assert.True(t, newTokens.AccessToken != "")
873+
assert.True(t, newTokens.RefreshToken == nil)
874+
assert.True(t, newTokens.FrontToken != "")
875+
876+
refreshResp, err := RefreshSessionWithoutRequestResponse(*createdTokens.RefreshToken, nil, nil)
877+
if err != nil {
878+
t.Error(err.Error())
879+
}
880+
881+
tokensAfterRefresh := refreshResp.GetAllSessionTokensDangerously()
882+
assert.True(t, tokensAfterRefresh.AccessToken != "")
883+
assert.True(t, *tokensAfterRefresh.RefreshToken != "")
884+
assert.True(t, tokensAfterRefresh.FrontToken != "")
885+
886+
getSessionResp, err = GetSessionWithoutRequestResponse(tokensAfterRefresh.AccessToken, tokensAfterRefresh.AntiCsrfToken, nil)
887+
if err != nil {
888+
t.Error(err.Error())
889+
}
890+
891+
assert.True(t, didGetSessionCallCore)
892+
}
893+
826894
type typeTestEndpoint struct {
827895
path string
828896
overrideGlobalClaimValidators func(globalClaimValidators []claims.SessionClaimValidator, sessionContainer sessmodels.SessionContainer, userContext supertokens.UserContext) ([]claims.SessionClaimValidator, error)

0 commit comments

Comments
 (0)