code.gitea.io/gitea@v1.22.3/tests/integration/delete_user_test.go (about)

     1  // Copyright 2017 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package integration
     5  
     6  import (
     7  	"fmt"
     8  	"net/http"
     9  	"testing"
    10  
    11  	issues_model "code.gitea.io/gitea/models/issues"
    12  	"code.gitea.io/gitea/models/organization"
    13  	access_model "code.gitea.io/gitea/models/perm/access"
    14  	repo_model "code.gitea.io/gitea/models/repo"
    15  	"code.gitea.io/gitea/models/unittest"
    16  	user_model "code.gitea.io/gitea/models/user"
    17  	"code.gitea.io/gitea/tests"
    18  )
    19  
    20  func assertUserDeleted(t *testing.T, userID int64) {
    21  	unittest.AssertNotExistsBean(t, &user_model.User{ID: userID})
    22  	unittest.AssertNotExistsBean(t, &user_model.Follow{UserID: userID})
    23  	unittest.AssertNotExistsBean(t, &user_model.Follow{FollowID: userID})
    24  	unittest.AssertNotExistsBean(t, &repo_model.Repository{OwnerID: userID})
    25  	unittest.AssertNotExistsBean(t, &access_model.Access{UserID: userID})
    26  	unittest.AssertNotExistsBean(t, &organization.OrgUser{UID: userID})
    27  	unittest.AssertNotExistsBean(t, &issues_model.IssueUser{UID: userID})
    28  	unittest.AssertNotExistsBean(t, &organization.TeamUser{UID: userID})
    29  	unittest.AssertNotExistsBean(t, &repo_model.Star{UID: userID})
    30  }
    31  
    32  func TestUserDeleteAccount(t *testing.T) {
    33  	defer tests.PrepareTestEnv(t)()
    34  
    35  	session := loginUser(t, "user8")
    36  	csrf := GetCSRF(t, session, "/user/settings/account")
    37  	urlStr := fmt.Sprintf("/user/settings/account/delete?password=%s", userPassword)
    38  	req := NewRequestWithValues(t, "POST", urlStr, map[string]string{
    39  		"_csrf": csrf,
    40  	})
    41  	session.MakeRequest(t, req, http.StatusSeeOther)
    42  
    43  	assertUserDeleted(t, 8)
    44  	unittest.CheckConsistencyFor(t, &user_model.User{})
    45  }
    46  
    47  func TestUserDeleteAccountStillOwnRepos(t *testing.T) {
    48  	defer tests.PrepareTestEnv(t)()
    49  
    50  	session := loginUser(t, "user2")
    51  	csrf := GetCSRF(t, session, "/user/settings/account")
    52  	urlStr := fmt.Sprintf("/user/settings/account/delete?password=%s", userPassword)
    53  	req := NewRequestWithValues(t, "POST", urlStr, map[string]string{
    54  		"_csrf": csrf,
    55  	})
    56  	session.MakeRequest(t, req, http.StatusSeeOther)
    57  
    58  	// user should not have been deleted, because the user still owns repos
    59  	unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
    60  }