Skip to content

Commit 27f945f

Browse files
authored
Merge pull request #279 from supertokens/jwt-rework/additional-tests
chore: Add test for verify session calling the core
2 parents 5e58fc2 + 7ab5df4 commit 27f945f

File tree

3 files changed

+76
-0
lines changed

3 files changed

+76
-0
lines changed

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: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,13 @@ 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()
31+
didGetSessionCallCore = false
2832
}
2933

3034
func BeforeEach() {

recipe/session/verifySession_test.go

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -823,6 +823,75 @@ 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+
assert.False(t, didGetSessionCallCore)
882+
tokensAfterRefresh := refreshResp.GetAllSessionTokensDangerously()
883+
assert.True(t, tokensAfterRefresh.AccessToken != "")
884+
assert.True(t, *tokensAfterRefresh.RefreshToken != "")
885+
assert.True(t, tokensAfterRefresh.FrontToken != "")
886+
887+
getSessionResp, err = GetSessionWithoutRequestResponse(tokensAfterRefresh.AccessToken, tokensAfterRefresh.AntiCsrfToken, nil)
888+
if err != nil {
889+
t.Error(err.Error())
890+
}
891+
892+
assert.True(t, didGetSessionCallCore)
893+
}
894+
826895
type typeTestEndpoint struct {
827896
path string
828897
overrideGlobalClaimValidators func(globalClaimValidators []claims.SessionClaimValidator, sessionContainer sessmodels.SessionContainer, userContext supertokens.UserContext) ([]claims.SessionClaimValidator, error)

0 commit comments

Comments
 (0)