@@ -122,3 +122,101 @@ func TestDefaultUserContext(t *testing.T) {
122122 assert .True (t , signInAPIContextWorks )
123123 assert .True (t , createNewSessionContextWorks )
124124}
125+
126+ func TestGetRequestFromUserContext (t * testing.T ) {
127+ signInContextWorks := false
128+ signInAPIContextWorks := false
129+ createNewSessionContextWorks := false
130+
131+ configValue := supertokens.TypeInput {
132+ Supertokens : & supertokens.ConnectionInfo {
133+ ConnectionURI : "http://localhost:8080" ,
134+ },
135+ AppInfo : supertokens.AppInfo {
136+ APIDomain : "api.supertokens.io" ,
137+ AppName : "SuperTokens" ,
138+ WebsiteDomain : "supertokens.io" ,
139+ },
140+ RecipeList : []supertokens.Recipe {
141+ Init (& epmodels.TypeInput {
142+ Override : & epmodels.OverrideStruct {
143+ Functions : func (originalImplementation epmodels.RecipeInterface ) epmodels.RecipeInterface {
144+ originalSignIn := * originalImplementation .SignIn
145+ newSignIn := func (email string , password string , userContext supertokens.UserContext ) (epmodels.SignInResponse , error ) {
146+ requestFromUserContext := supertokens .GetRequestFromUserContext (userContext )
147+ if requestFromUserContext != nil {
148+ assert .True (t , requestFromUserContext .Method == "POST" )
149+ assert .True (t , requestFromUserContext .RequestURI == "/auth/signin" )
150+ signInContextWorks = true
151+ }
152+ return originalSignIn (email , password , userContext )
153+ }
154+ * originalImplementation .SignIn = newSignIn
155+ return originalImplementation
156+ },
157+
158+ APIs : func (originalImplementation epmodels.APIInterface ) epmodels.APIInterface {
159+ originalSignInPOST := * originalImplementation .SignInPOST
160+ newSignInPOST := func (formFields []epmodels.TypeFormField , options epmodels.APIOptions , userContext supertokens.UserContext ) (epmodels.SignInPOSTResponse , error ) {
161+ requestFromUserContext := supertokens .GetRequestFromUserContext (userContext )
162+ if requestFromUserContext != nil {
163+ assert .True (t , requestFromUserContext .Method == "POST" )
164+ assert .True (t , requestFromUserContext .RequestURI == "/auth/signin" )
165+ signInAPIContextWorks = true
166+ }
167+ return originalSignInPOST (formFields , options , userContext )
168+ }
169+ * originalImplementation .SignInPOST = newSignInPOST
170+ return originalImplementation
171+ },
172+ },
173+ }),
174+ session .Init (& sessmodels.TypeInput {
175+ GetTokenTransferMethod : func (req * http.Request , forCreateNewSession bool , userContext supertokens.UserContext ) sessmodels.TokenTransferMethod {
176+ return sessmodels .CookieTransferMethod
177+ },
178+
179+ Override : & sessmodels.OverrideStruct {
180+ Functions : func (originalImplementation sessmodels.RecipeInterface ) sessmodels.RecipeInterface {
181+ originalCreateNewSession := * originalImplementation .CreateNewSession
182+ newCreateNewSession := func (userID string , accessTokenPayload map [string ]interface {}, sessionDataInDatabase map [string ]interface {}, disableAntiCsrf * bool , userContext supertokens.UserContext ) (sessmodels.SessionContainer , error ) {
183+ requestFromUserContext := supertokens .GetRequestFromUserContext (userContext )
184+ if requestFromUserContext != nil {
185+ assert .True (t , requestFromUserContext .Method == "POST" )
186+ assert .True (t , requestFromUserContext .RequestURI == "/auth/signin" || requestFromUserContext .RequestURI == "/auth/signup" )
187+ createNewSessionContextWorks = true
188+ }
189+ return originalCreateNewSession (userID , accessTokenPayload , sessionDataInDatabase , disableAntiCsrf , userContext )
190+ }
191+ * originalImplementation .CreateNewSession = newCreateNewSession
192+ return originalImplementation
193+ },
194+ },
195+ }),
196+ },
197+ }
198+
199+ BeforeEach ()
200+ unittesting .StartUpST ("localhost" , "8080" )
201+ defer AfterEach ()
202+ err := supertokens .Init (configValue )
203+ if err != nil {
204+ t .Error (err .Error ())
205+ }
206+ mux := http .NewServeMux ()
207+ testServer := httptest .NewServer (supertokens .Middleware (mux ))
208+ defer testServer .Close ()
209+
210+ unittesting .
SignupRequest (
"[email protected] " ,
"validpass123" ,
testServer .
URL )
211+
212+ res1 ,
err := unittesting .
SignInRequest (
"[email protected] " ,
"validpass123" ,
testServer .
URL )
213+
214+ if err != nil {
215+ t .Error (err .Error ())
216+ }
217+
218+ assert .Equal (t , 200 , res1 .StatusCode )
219+ assert .True (t , signInContextWorks )
220+ assert .True (t , signInAPIContextWorks )
221+ assert .True (t , createNewSessionContextWorks )
222+ }
0 commit comments