Skip to content

Commit 003cec4

Browse files
committed
feat: add tests for revoke and enable access
1 parent 7a18fc6 commit 003cec4

File tree

3 files changed

+113
-0
lines changed

3 files changed

+113
-0
lines changed

server/test/enable_access_test.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package test
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/authorizerdev/authorizer/server/constants"
8+
"github.com/authorizerdev/authorizer/server/crypto"
9+
"github.com/authorizerdev/authorizer/server/db"
10+
"github.com/authorizerdev/authorizer/server/envstore"
11+
"github.com/authorizerdev/authorizer/server/graph/model"
12+
"github.com/authorizerdev/authorizer/server/resolvers"
13+
"github.com/stretchr/testify/assert"
14+
)
15+
16+
func enableAccessTest(t *testing.T, s TestSetup) {
17+
t.Helper()
18+
t.Run(`should revoke access`, func(t *testing.T) {
19+
req, ctx := createContext(s)
20+
email := "revoke_access." + s.TestInfo.Email
21+
_, err := resolvers.MagicLinkLoginResolver(ctx, model.MagicLinkLoginInput{
22+
Email: email,
23+
})
24+
assert.NoError(t, err)
25+
verificationRequest, err := db.Provider.GetVerificationRequestByEmail(email, constants.VerificationTypeMagicLinkLogin)
26+
verifyRes, err := resolvers.VerifyEmailResolver(ctx, model.VerifyEmailInput{
27+
Token: verificationRequest.Token,
28+
})
29+
assert.NoError(t, err)
30+
assert.NotNil(t, verifyRes.AccessToken)
31+
32+
h, err := crypto.EncryptPassword(envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAdminSecret))
33+
assert.Nil(t, err)
34+
req.Header.Set("Cookie", fmt.Sprintf("%s=%s", envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAdminCookieName), h))
35+
36+
res, err := resolvers.RevokeAccessResolver(ctx, model.UpdateAccessInput{
37+
UserID: verifyRes.User.ID,
38+
})
39+
assert.NoError(t, err)
40+
assert.NotEmpty(t, res.Message)
41+
42+
res, err = resolvers.EnableAccessResolver(ctx, model.UpdateAccessInput{
43+
UserID: verifyRes.User.ID,
44+
})
45+
assert.NoError(t, err)
46+
assert.NotEmpty(t, res.Message)
47+
48+
// it should allow login with revoked access
49+
res, err = resolvers.MagicLinkLoginResolver(ctx, model.MagicLinkLoginInput{
50+
Email: email,
51+
})
52+
assert.Nil(t, err)
53+
assert.NotEmpty(t, res.Message)
54+
55+
cleanData(email)
56+
})
57+
}

server/test/resolvers_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ func TestResolvers(t *testing.T) {
4848
adminSessionTests(t, s)
4949
updateEnvTests(t, s)
5050
envTests(t, s)
51+
revokeAccessTest(t, s)
52+
enableAccessTest(t, s)
5153
generateJWTkeyTest(t, s)
5254

5355
// user tests

server/test/revoke_access_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package test
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/authorizerdev/authorizer/server/constants"
8+
"github.com/authorizerdev/authorizer/server/crypto"
9+
"github.com/authorizerdev/authorizer/server/db"
10+
"github.com/authorizerdev/authorizer/server/envstore"
11+
"github.com/authorizerdev/authorizer/server/graph/model"
12+
"github.com/authorizerdev/authorizer/server/resolvers"
13+
"github.com/stretchr/testify/assert"
14+
)
15+
16+
func revokeAccessTest(t *testing.T, s TestSetup) {
17+
t.Helper()
18+
t.Run(`should revoke access`, func(t *testing.T) {
19+
req, ctx := createContext(s)
20+
email := "revoke_access." + s.TestInfo.Email
21+
_, err := resolvers.MagicLinkLoginResolver(ctx, model.MagicLinkLoginInput{
22+
Email: email,
23+
})
24+
assert.NoError(t, err)
25+
verificationRequest, err := db.Provider.GetVerificationRequestByEmail(email, constants.VerificationTypeMagicLinkLogin)
26+
verifyRes, err := resolvers.VerifyEmailResolver(ctx, model.VerifyEmailInput{
27+
Token: verificationRequest.Token,
28+
})
29+
assert.NoError(t, err)
30+
assert.NotNil(t, verifyRes.AccessToken)
31+
32+
res, err := resolvers.RevokeAccessResolver(ctx, model.UpdateAccessInput{
33+
UserID: verifyRes.User.ID,
34+
})
35+
assert.Error(t, err)
36+
37+
h, err := crypto.EncryptPassword(envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAdminSecret))
38+
assert.Nil(t, err)
39+
req.Header.Set("Cookie", fmt.Sprintf("%s=%s", envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAdminCookieName), h))
40+
41+
res, err = resolvers.RevokeAccessResolver(ctx, model.UpdateAccessInput{
42+
UserID: verifyRes.User.ID,
43+
})
44+
assert.NoError(t, err)
45+
assert.NotEmpty(t, res.Message)
46+
47+
// it should not allow login with revoked access
48+
_, err = resolvers.MagicLinkLoginResolver(ctx, model.MagicLinkLoginInput{
49+
Email: email,
50+
})
51+
assert.Error(t, err)
52+
cleanData(email)
53+
})
54+
}

0 commit comments

Comments
 (0)