Skip to content

Commit 5b6dd83

Browse files
committed
adds more tests
1 parent d4fc64c commit 5b6dd83

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

recipe/emailpassword/passwordReset_test.go

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,3 +455,106 @@ func TestValidTokenInputAndPasswordHasChanged(t *testing.T) {
455455
assert.Equal(t, userInfo["id"], result3["user"].(map[string]interface{})["id"].(string))
456456
assert.Equal(t, userInfo["email"], result3["user"].(map[string]interface{})["email"].(string))
457457
}
458+
459+
func TestPasswordResetLinkUsesOriginFunctionIfProvided(t *testing.T) {
460+
resetURL := ""
461+
tokenInfo := ""
462+
ridInfo := ""
463+
sendEmailFunc := func(input emaildelivery.EmailType, userContext supertokens.UserContext) error {
464+
u, err := url.Parse(input.PasswordReset.PasswordResetLink)
465+
if err != nil {
466+
return err
467+
}
468+
resetURL = u.Scheme + "://" + u.Host + u.Path
469+
tokenInfo = u.Query().Get("token")
470+
ridInfo = u.Query().Get("rid")
471+
return nil
472+
}
473+
configValue := supertokens.TypeInput{
474+
Supertokens: &supertokens.ConnectionInfo{
475+
ConnectionURI: "http://localhost:8080",
476+
},
477+
AppInfo: supertokens.AppInfo{
478+
APIDomain: "api.supertokens.io",
479+
AppName: "SuperTokens",
480+
GetOrigin: func(request *http.Request, userContext supertokens.UserContext) (string, error) {
481+
// read request body
482+
decoder := json.NewDecoder(request.Body)
483+
var requestBody map[string]interface{}
484+
err := decoder.Decode(&requestBody)
485+
if err != nil {
486+
return "https://supertokens.com", nil
487+
}
488+
if requestBody["origin"] == nil {
489+
return "https://supertokens.com", nil
490+
}
491+
return requestBody["origin"].(string), nil
492+
},
493+
},
494+
RecipeList: []supertokens.Recipe{
495+
Init(&epmodels.TypeInput{
496+
EmailDelivery: &emaildelivery.TypeInput{
497+
Service: &emaildelivery.EmailDeliveryInterface{
498+
SendEmail: &sendEmailFunc,
499+
},
500+
},
501+
}),
502+
session.Init(nil),
503+
},
504+
}
505+
506+
BeforeEach()
507+
unittesting.StartUpST("localhost", "8080")
508+
defer AfterEach()
509+
err := supertokens.Init(configValue)
510+
if err != nil {
511+
t.Error(err.Error())
512+
}
513+
mux := http.NewServeMux()
514+
testServer := httptest.NewServer(supertokens.Middleware(mux))
515+
defer testServer.Close()
516+
517+
res, err := unittesting.SignupRequest("[email protected]", "validpass123", testServer.URL)
518+
if err != nil {
519+
t.Error(err.Error())
520+
}
521+
assert.NoError(t, err)
522+
dataInBytes, err := io.ReadAll(res.Body)
523+
if err != nil {
524+
t.Error(err.Error())
525+
}
526+
res.Body.Close()
527+
var result map[string]interface{}
528+
err = json.Unmarshal(dataInBytes, &result)
529+
if err != nil {
530+
t.Error(err.Error())
531+
}
532+
assert.Equal(t, 200, res.StatusCode)
533+
assert.Equal(t, "OK", result["status"])
534+
535+
formFields := map[string]interface{}{
536+
"origin": "localhost:2000",
537+
"formFields": []map[string]interface{}{{
538+
"id": "email",
539+
"value": "[email protected]",
540+
}},
541+
}
542+
543+
postBody, err := json.Marshal(formFields)
544+
if err != nil {
545+
t.Error(err.Error())
546+
}
547+
548+
resp, err := http.Post(testServer.URL+"/auth/user/password/reset/token", "application/json", bytes.NewBuffer(postBody))
549+
550+
if err != nil {
551+
t.Error(err.Error())
552+
}
553+
554+
assert.NoError(t, err)
555+
556+
assert.Equal(t, 200, resp.StatusCode)
557+
assert.Equal(t, "http://localhost:2000/auth/reset-password", resetURL)
558+
assert.NotEmpty(t, tokenInfo)
559+
assert.True(t, strings.HasPrefix(ridInfo, "emailpassword"))
560+
}

0 commit comments

Comments
 (0)