From 47f40ccd5ee1b54019cec6b5d3bce6b8075a1384 Mon Sep 17 00:00:00 2001 From: Ethan Koenig Date: Sun, 12 Nov 2017 05:36:16 -0800 Subject: [PATCH] Add integration test for user deleting account (#2891) --- integrations/delete_user_test.go | 47 ++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/integrations/delete_user_test.go b/integrations/delete_user_test.go index 889f8dae2..a6e44c15c 100644 --- a/integrations/delete_user_test.go +++ b/integrations/delete_user_test.go @@ -5,13 +5,26 @@ package integrations import ( + "fmt" "net/http" "testing" "code.gitea.io/gitea/models" ) -func TestDeleteUser(t *testing.T) { +func assertUserDeleted(t *testing.T, userID int64) { + models.AssertNotExistsBean(t, &models.User{ID: userID}) + models.AssertNotExistsBean(t, &models.Follow{UserID: userID}) + models.AssertNotExistsBean(t, &models.Follow{FollowID: userID}) + models.AssertNotExistsBean(t, &models.Repository{OwnerID: userID}) + models.AssertNotExistsBean(t, &models.Access{UserID: userID}) + models.AssertNotExistsBean(t, &models.OrgUser{UID: userID}) + models.AssertNotExistsBean(t, &models.IssueUser{UID: userID}) + models.AssertNotExistsBean(t, &models.TeamUser{UID: userID}) + models.AssertNotExistsBean(t, &models.Star{UID: userID}) +} + +func TestAdminDeleteUser(t *testing.T) { prepareTestEnv(t) session := loginUser(t, "user1") @@ -22,6 +35,36 @@ func TestDeleteUser(t *testing.T) { }) session.MakeRequest(t, req, http.StatusOK) - models.AssertNotExistsBean(t, &models.User{ID: 8}) + assertUserDeleted(t, 8) models.CheckConsistencyFor(t, &models.User{}) } + +func TestUserDeleteAccount(t *testing.T) { + prepareTestEnv(t) + + session := loginUser(t, "user8") + csrf := GetCSRF(t, session, "/user/settings/delete") + urlStr := fmt.Sprintf("/user/settings/delete?password=%s", userPassword) + req := NewRequestWithValues(t, "POST", urlStr, map[string]string{ + "_csrf": csrf, + }) + session.MakeRequest(t, req, http.StatusFound) + + assertUserDeleted(t, 8) + models.CheckConsistencyFor(t, &models.User{}) +} + +func TestUserDeleteAccountStillOwnRepos(t *testing.T) { + prepareTestEnv(t) + + session := loginUser(t, "user2") + csrf := GetCSRF(t, session, "/user/settings/delete") + urlStr := fmt.Sprintf("/user/settings/delete?password=%s", userPassword) + req := NewRequestWithValues(t, "POST", urlStr, map[string]string{ + "_csrf": csrf, + }) + session.MakeRequest(t, req, http.StatusFound) + + // user should not have been deleted, because the user still owns repos + models.AssertExistsAndLoadBean(t, &models.User{ID: 2}) +}