feat: roles system backend
This commit is contained in:
1 parent
44cca46d5e
commit
8c6c6456da
50 files changed
+2578
-22
No files matched your search
@@ -27,7 +27,7 @@ func newDisplayNameRouter(userRepo *mockUserRepo, token *authtoken.Auth) *chi.Mu
|
||||
getUser := useCases.NewGetUserUseCase(userRepo)
|
||||
update := useCases.NewUpdateUserProfileUseCase(userRepo, discardRecorder)
|
||||
handler := userhandler.NewHandler(update)
|
||||
meHandler := auth.NewMeHandler(getUser, useCases.NewGetMyAuthorUseCase(plainAuthors()))
|
||||
meHandler := auth.NewMeHandler(getUser, useCases.NewGetMyAuthorUseCase(plainAuthors()), useCases.NewGetMyAccessUseCase(newSeededMockRoleRepo()))
|
||||
loginHandler := auth.NewLoginHandler(
|
||||
token,
|
||||
useCases.NewCreateUserUseCase(userRepo, hasher, newMockMailRepo(), "https://cms.example.com", discardRecorder),
|
||||
@@ -91,6 +91,7 @@ func seededDisplayNameRepo(displayName string) *mockUserRepo {
|
||||
Email: "marta@renew.example",
|
||||
Password: "hashed:correct-horse",
|
||||
IsVerified: true,
|
||||
Role: user.RoleOwner,
|
||||
DisplayName: displayName,
|
||||
}
|
||||
return repo
|
||||
@@ -123,7 +124,7 @@ func assertSevenKeys(t *testing.T, body []byte) map[string]json.RawMessage {
|
||||
func assertMeKeys(t *testing.T, body []byte) map[string]json.RawMessage {
|
||||
t.Helper()
|
||||
decoded := decodeKeys(t, body)
|
||||
expected := append(append([]string{}, displayNameResponseKeys...), "author")
|
||||
expected := append(append([]string{}, displayNameResponseKeys...), "author", "access")
|
||||
if len(decoded) != len(expected) {
|
||||
t.Errorf("expected exactly %d keys, got %d: %s", len(expected), len(decoded), string(body))
|
||||
}
|
||||
@@ -392,7 +393,7 @@ func TestUserDisplayNameHttp(t *testing.T) {
|
||||
|
||||
t.Run("GET /v1/auth/me returns an empty display_name, not a missing key, when none is set", func(t *testing.T) {
|
||||
repo := newMockUserRepo()
|
||||
repo.users[8] = user.User{ID: 8, Username: "bob", IsVerified: false}
|
||||
repo.users[8] = user.User{ID: 8, Username: "bob", IsVerified: false, Role: user.RoleAdmin}
|
||||
router := newDisplayNameRouter(repo, token)
|
||||
rec := sendDisplayNameRequest(router, http.MethodGet, "/v1/auth/me", "", displayNameCookie(t, token, 8, 0))
|
||||
if rec.Code != http.StatusOK {
|
||||
@@ -420,7 +421,7 @@ func TestUserDisplayNameHttp(t *testing.T) {
|
||||
|
||||
t.Run("An unverified user is refused", func(t *testing.T) {
|
||||
repo := newMockUserRepo()
|
||||
repo.users[8] = user.User{ID: 8, Username: "bob", IsVerified: false}
|
||||
repo.users[8] = user.User{ID: 8, Username: "bob", IsVerified: false, Role: user.RoleAdmin}
|
||||
router := newDisplayNameRouter(repo, token)
|
||||
rec := sendDisplayNameRequest(router, http.MethodPatch, "/v1/user/me", `{"display_name": "Bob"}`, displayNameCookie(t, token, 8, 0))
|
||||
if rec.Code != http.StatusForbidden || rec.Body.String() != apperr.VerificationRequiredErrorMessage+"\n" {
|
||||
|
||||
Reference in new issue
Block a user