2017-05-20 11:48:22 +03:00
// Copyright 2017 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2017-05-20 11:48:22 +03:00
2022-09-02 22:18:23 +03:00
package integration
2017-05-20 11:48:22 +03:00
import (
2017-11-12 16:36:16 +03:00
"fmt"
2017-05-20 11:48:22 +03:00
"net/http"
"testing"
2022-06-13 12:37:59 +03:00
issues_model "code.gitea.io/gitea/models/issues"
2022-03-29 09:29:02 +03:00
"code.gitea.io/gitea/models/organization"
2022-05-11 13:09:36 +03:00
access_model "code.gitea.io/gitea/models/perm/access"
2021-12-10 04:27:50 +03:00
repo_model "code.gitea.io/gitea/models/repo"
2021-11-16 11:53:21 +03:00
"code.gitea.io/gitea/models/unittest"
2021-11-17 12:58:31 +03:00
user_model "code.gitea.io/gitea/models/user"
2022-09-02 22:18:23 +03:00
"code.gitea.io/gitea/tests"
2017-05-20 11:48:22 +03:00
)
2017-11-12 16:36:16 +03:00
func assertUserDeleted ( t * testing . T , userID int64 ) {
2021-11-24 12:49:20 +03:00
unittest . AssertNotExistsBean ( t , & user_model . User { ID : userID } )
2021-11-17 12:58:31 +03:00
unittest . AssertNotExistsBean ( t , & user_model . Follow { UserID : userID } )
unittest . AssertNotExistsBean ( t , & user_model . Follow { FollowID : userID } )
2021-12-10 04:27:50 +03:00
unittest . AssertNotExistsBean ( t , & repo_model . Repository { OwnerID : userID } )
2022-05-11 13:09:36 +03:00
unittest . AssertNotExistsBean ( t , & access_model . Access { UserID : userID } )
2022-03-29 09:29:02 +03:00
unittest . AssertNotExistsBean ( t , & organization . OrgUser { UID : userID } )
2022-06-13 12:37:59 +03:00
unittest . AssertNotExistsBean ( t , & issues_model . IssueUser { UID : userID } )
2022-03-29 09:29:02 +03:00
unittest . AssertNotExistsBean ( t , & organization . TeamUser { UID : userID } )
2021-12-12 18:48:20 +03:00
unittest . AssertNotExistsBean ( t , & repo_model . Star { UID : userID } )
2017-11-12 16:36:16 +03:00
}
func TestUserDeleteAccount ( t * testing . T ) {
2022-09-02 22:18:23 +03:00
defer tests . PrepareTestEnv ( t ) ( )
2017-11-12 16:36:16 +03:00
session := loginUser ( t , "user8" )
2024-10-10 06:48:21 +03:00
csrf := GetUserCSRFToken ( t , session )
2018-05-15 13:07:32 +03:00
urlStr := fmt . Sprintf ( "/user/settings/account/delete?password=%s" , userPassword )
2017-11-12 16:36:16 +03:00
req := NewRequestWithValues ( t , "POST" , urlStr , map [ string ] string {
"_csrf" : csrf ,
} )
2022-03-23 07:54:07 +03:00
session . MakeRequest ( t , req , http . StatusSeeOther )
2017-11-12 16:36:16 +03:00
assertUserDeleted ( t , 8 )
2021-11-24 12:49:20 +03:00
unittest . CheckConsistencyFor ( t , & user_model . User { } )
2017-11-12 16:36:16 +03:00
}
func TestUserDeleteAccountStillOwnRepos ( t * testing . T ) {
2022-09-02 22:18:23 +03:00
defer tests . PrepareTestEnv ( t ) ( )
2017-11-12 16:36:16 +03:00
session := loginUser ( t , "user2" )
2024-10-10 06:48:21 +03:00
csrf := GetUserCSRFToken ( t , session )
2018-05-15 13:07:32 +03:00
urlStr := fmt . Sprintf ( "/user/settings/account/delete?password=%s" , userPassword )
2017-11-12 16:36:16 +03:00
req := NewRequestWithValues ( t , "POST" , urlStr , map [ string ] string {
"_csrf" : csrf ,
} )
2022-03-23 07:54:07 +03:00
session . MakeRequest ( t , req , http . StatusSeeOther )
2017-11-12 16:36:16 +03:00
// user should not have been deleted, because the user still owns repos
2021-11-24 12:49:20 +03:00
unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : 2 } )
2017-11-12 16:36:16 +03:00
}