|
|
@ -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}) |
|
|
|
|
|
|
|
} |
|
|
|