Skip to content

Commit 3251344

Browse files
committed
Testing verify_mobile resolver
1 parent 58d9978 commit 3251344

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

server/test/verify_mobile_test.go

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package test
2+
3+
import (
4+
"strings"
5+
"testing"
6+
7+
"github.com/authorizerdev/authorizer/server/constants"
8+
"github.com/authorizerdev/authorizer/server/graph/model"
9+
"github.com/authorizerdev/authorizer/server/db"
10+
"github.com/authorizerdev/authorizer/server/refs"
11+
"github.com/authorizerdev/authorizer/server/resolvers"
12+
"github.com/stretchr/testify/assert"
13+
)
14+
15+
func verifyMobileTest(t *testing.T, s TestSetup) {
16+
t.Helper()
17+
t.Run(`should verify mobile`, func(t *testing.T) {
18+
_, ctx := createContext(s)
19+
email := "mobile_verification." + s.TestInfo.Email
20+
phoneNumber := "2234567890"
21+
signUpRes, err := resolvers.MobileSignupResolver(ctx, &model.MobileSignUpInput{
22+
Email: refs.NewStringRef(email),
23+
PhoneNumber: phoneNumber,
24+
Password: s.TestInfo.Password,
25+
ConfirmPassword: s.TestInfo.Password,
26+
})
27+
assert.NoError(t, err)
28+
assert.NotNil(t, signUpRes)
29+
assert.Equal(t, email, signUpRes.User.Email)
30+
assert.Equal(t, phoneNumber, refs.StringValue(signUpRes.User.PhoneNumber))
31+
assert.True(t, strings.Contains(signUpRes.User.SignupMethods, constants.AuthRecipeMethodMobileBasicAuth))
32+
assert.Len(t, strings.Split(signUpRes.User.SignupMethods, ","), 1)
33+
34+
res, err := resolvers.MobileLoginResolver(ctx, model.MobileLoginInput{
35+
PhoneNumber: phoneNumber,
36+
Password: "random_test",
37+
})
38+
assert.Error(t, err)
39+
assert.Nil(t, res)
40+
41+
// should fail because phone is not verified
42+
res, err = resolvers.MobileLoginResolver(ctx, model.MobileLoginInput{
43+
PhoneNumber: phoneNumber,
44+
Password: s.TestInfo.Password,
45+
})
46+
assert.NotNil(t, err, "should fail because phone is not verified")
47+
assert.Nil(t, res)
48+
49+
// get code from db
50+
smsRequest, err := db.Provider.GetCodeByPhone(ctx, phoneNumber)
51+
assert.NoError(t, err)
52+
assert.NotEmpty(t, smsRequest.Code)
53+
54+
// throw an error if the code is not correct
55+
verifySMSRequest, err := resolvers.VerifyMobileResolver(ctx, model.VerifyMobileRequest{
56+
PhoneNumber: phoneNumber,
57+
Code: "rand_12@1",
58+
})
59+
assert.NotNil(t, err, "should fail because of bad credentials")
60+
assert.Nil(t, verifySMSRequest)
61+
62+
verifySMSRequest, err = resolvers.VerifyMobileResolver(ctx, model.VerifyMobileRequest{
63+
PhoneNumber: phoneNumber,
64+
Code: smsRequest.Code,
65+
})
66+
assert.Nil(t, err)
67+
assert.NotEqual(t, verifySMSRequest.Message, "", "message should not be empty")
68+
69+
res, err = resolvers.MobileLoginResolver(ctx, model.MobileLoginInput{
70+
PhoneNumber: phoneNumber,
71+
Password: s.TestInfo.Password,
72+
})
73+
assert.NoError(t, err)
74+
assert.NotEmpty(t, res.AccessToken)
75+
assert.NotEmpty(t, res.IDToken)
76+
77+
cleanData(email)
78+
})
79+
}

0 commit comments

Comments
 (0)