Delete user email on /deleteme request (#540)

* delete user email on deleteme request

* add tests for user email deletion in /deleteme request
This commit is contained in:
Dmitry Verkhoturov
2020-01-07 14:49:24 -06:00
committed by Umputun
parent eeb9c72248
commit e4d982dbca
2 changed files with 21 additions and 0 deletions
+8
View File
@@ -15,6 +15,7 @@ import (
"github.com/umputun/remark/backend/app/rest"
"github.com/umputun/remark/backend/app/store"
"github.com/umputun/remark/backend/app/store/engine"
)
// admin provides router for all requests available for admin users only
@@ -29,6 +30,7 @@ type admin struct {
type adminStore interface {
Delete(locator store.Locator, commentID string, mode store.DeleteMode) error
DeleteUser(siteID string, userID string, mode store.DeleteMode) error
DeleteUserDetail(siteID string, userID string, detail engine.UserDetail) error
User(siteID, userID string, limit, skip int, user store.User) ([]store.Comment, error)
IsBlocked(siteID string, userID string) bool
SetBlock(siteID string, userID string, status bool, ttl time.Duration) error
@@ -109,6 +111,12 @@ func (a *admin) deleteMeRequestCtrl(w http.ResponseWriter, r *http.Request) {
return
}
if err := a.dataService.DeleteUserDetail(claims.Audience, claims.User.ID, engine.UserEmail); err != nil {
code := parseError(err, rest.ErrInternal)
rest.SendErrorJSON(w, r, http.StatusBadRequest, err, "can't delete email for user", code)
return
}
if err = a.dataService.DeleteUser(claims.Audience, claims.User.ID, store.HardDelete); err != nil {
rest.SendErrorJSON(w, r, http.StatusBadRequest, err, "can't delete user", rest.ErrNoAccess)
return
+13
View File
@@ -668,6 +668,14 @@ func TestAdmin_DeleteMeRequest(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, 1, len(comments), "a comment for user1")
email, err := srv.DataService.SetUserEmail("remark42", "user1", "test@example.org")
assert.NoError(t, err)
assert.Equal(t, "test@example.org", email, "new email for user1")
email, err = srv.DataService.GetUserEmail("remark42", "user1")
assert.NoError(t, err)
assert.Equal(t, "test@example.org", email, "new email for user1 is readable")
claims := token.Claims{
SessionOnly: true,
StandardClaims: jwt.StandardClaims{
@@ -703,6 +711,11 @@ func TestAdmin_DeleteMeRequest(t *testing.T) {
_, err = srv.DataService.User("remark42", "user1", 0, 0, store.User{})
assert.EqualError(t, err, "no comments for user user1 in store")
email, err = srv.DataService.GetUserEmail("remark42", "user1")
assert.NoError(t, err)
assert.Empty(t, email, "user1 email was deleted")
}
func TestAdmin_DeleteMeRequestFailed(t *testing.T) {