| @@ -5,13 +5,26 @@ | |||||
| package integrations | package integrations | ||||
| import ( | import ( | ||||
| "fmt" | |||||
| "net/http" | "net/http" | ||||
| "testing" | "testing" | ||||
| "code.gitea.io/gitea/models" | "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) | prepareTestEnv(t) | ||||
| session := loginUser(t, "user1") | session := loginUser(t, "user1") | ||||
| @@ -22,6 +35,36 @@ func TestDeleteUser(t *testing.T) { | |||||
| }) | }) | ||||
| session.MakeRequest(t, req, http.StatusOK) | session.MakeRequest(t, req, http.StatusOK) | ||||
| models.AssertNotExistsBean(t, &models.User{ID: 8}) | |||||
| assertUserDeleted(t, 8) | |||||
| models.CheckConsistencyFor(t, &models.User{}) | 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}) | |||||
| } | |||||