]> source.dussan.org Git - gitea.git/commitdiff
Add integration test for user deleting account (#2891)
authorEthan Koenig <ethantkoenig@gmail.com>
Sun, 12 Nov 2017 13:36:16 +0000 (05:36 -0800)
committerLunny Xiao <xiaolunwen@gmail.com>
Sun, 12 Nov 2017 13:36:16 +0000 (21:36 +0800)
integrations/delete_user_test.go

index 889f8dae25368b1292315e56cf9ac6c9de487196..a6e44c15c09b33375ca68a6b6d628c5593a56c01 100644 (file)
@@ -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})
+}