2017-05-20 04:48:22 -04:00
// Copyright 2017 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package integrations
import (
2017-11-12 05:36:16 -08:00
"fmt"
2017-05-20 04:48:22 -04:00
"net/http"
"testing"
"code.gitea.io/gitea/models"
)
2017-11-12 05:36:16 -08:00
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 ) {
2017-05-20 04:48:22 -04:00
prepareTestEnv ( t )
2017-06-17 00:49:45 -04:00
session := loginUser ( t , "user1" )
2017-05-20 04:48:22 -04:00
2017-07-07 15:36:47 -04:00
csrf := GetCSRF ( t , session , "/admin/users/8" )
req := NewRequestWithValues ( t , "POST" , "/admin/users/8/delete" , map [ string ] string {
"_csrf" : csrf ,
2017-06-17 00:49:45 -04:00
} )
2017-07-07 15:36:47 -04:00
session . MakeRequest ( t , req , http . StatusOK )
2017-05-20 04:48:22 -04:00
2017-11-12 05:36:16 -08:00
assertUserDeleted ( t , 8 )
2017-05-20 04:48:22 -04:00
models . CheckConsistencyFor ( t , & models . User { } )
}
2017-11-12 05:36:16 -08:00
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 } )
}