Skip to content

Commit 47f2610

Browse files
test:
* added integration test for role deletion functionality
1 parent b8c2ab4 commit 47f2610

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed

server/test/integration_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ func TestResolvers(t *testing.T) {
122122
updateEmailTemplateTest(t, s)
123123
emailTemplatesTest(t, s)
124124
deleteEmailTemplateTest(t, s)
125+
RoleDeletionTest(t, s)
125126

126127
// user resolvers tests
127128
loginTests(t, s)

server/test/role_deletion_test.go

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package test
2+
3+
import (
4+
"fmt"
5+
"github.com/authorizerdev/authorizer/server/crypto"
6+
"strings"
7+
"testing"
8+
9+
"github.com/stretchr/testify/assert"
10+
11+
"github.com/authorizerdev/authorizer/server/constants"
12+
"github.com/authorizerdev/authorizer/server/graph/model"
13+
"github.com/authorizerdev/authorizer/server/memorystore"
14+
"github.com/authorizerdev/authorizer/server/refs"
15+
"github.com/authorizerdev/authorizer/server/resolvers"
16+
)
17+
18+
func RoleDeletionTest(t *testing.T, s TestSetup) {
19+
t.Helper()
20+
t.Run(`should complete role deletion`, func(t *testing.T) {
21+
// login as admin
22+
req, ctx := createContext(s)
23+
24+
_, err := resolvers.AdminLoginResolver(ctx, model.AdminLoginInput{
25+
AdminSecret: "admin_test",
26+
})
27+
assert.NotNil(t, err)
28+
29+
adminSecret, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyAdminSecret)
30+
assert.Nil(t, err)
31+
_, err = resolvers.AdminLoginResolver(ctx, model.AdminLoginInput{
32+
AdminSecret: adminSecret,
33+
})
34+
assert.Nil(t, err)
35+
36+
h, err := crypto.EncryptPassword(adminSecret)
37+
assert.Nil(t, err)
38+
req.Header.Set("Cookie", fmt.Sprintf("%s=%s", constants.AdminCookieName, h))
39+
40+
// add new default role to get role, if not present in roles
41+
originalDefaultRoles, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyDefaultRoles)
42+
assert.Nil(t, err)
43+
originalDefaultRolesSlice := strings.Split(originalDefaultRoles, ",")
44+
45+
data := model.UpdateEnvInput{
46+
DefaultRoles: append(originalDefaultRolesSlice, "abc"),
47+
}
48+
_, err = resolvers.UpdateEnvResolver(ctx, data)
49+
assert.Error(t, err)
50+
51+
// add new role
52+
originalRoles, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyRoles)
53+
assert.Nil(t, err)
54+
originalRolesSlice := strings.Split(originalRoles, ",")
55+
roleToBeAdded := "abc"
56+
newRoles := append(originalRolesSlice, roleToBeAdded)
57+
data = model.UpdateEnvInput{
58+
Roles: newRoles,
59+
}
60+
_, err = resolvers.UpdateEnvResolver(ctx, data)
61+
assert.Nil(t, err)
62+
63+
// register a user with all roles
64+
email := "update_user." + s.TestInfo.Email
65+
_, err = resolvers.SignupResolver(ctx, model.SignUpInput{
66+
Email: refs.NewStringRef(email),
67+
Password: s.TestInfo.Password,
68+
ConfirmPassword: s.TestInfo.Password,
69+
Roles: newRoles,
70+
})
71+
assert.Nil(t, err)
72+
73+
regUserDetails, _ := resolvers.UserResolver(ctx, model.GetUserRequest{
74+
Email: refs.NewStringRef(email),
75+
})
76+
77+
// update env by removing role "abc"
78+
var newRolesAfterDeletion []string
79+
for _, value := range newRoles {
80+
if value != roleToBeAdded {
81+
newRolesAfterDeletion = append(newRolesAfterDeletion, value)
82+
}
83+
}
84+
data = model.UpdateEnvInput{
85+
Roles: newRolesAfterDeletion,
86+
}
87+
_, err = resolvers.UpdateEnvResolver(ctx, data)
88+
assert.Nil(t, err)
89+
90+
// check user if role still exist
91+
userDetails, err := resolvers.UserResolver(ctx, model.GetUserRequest{
92+
Email: refs.NewStringRef(email),
93+
})
94+
assert.Nil(t, err)
95+
assert.Equal(t, newRolesAfterDeletion, userDetails.Roles)
96+
assert.NotEqual(t, newRolesAfterDeletion, regUserDetails.Roles)
97+
})
98+
}

0 commit comments

Comments
 (0)