@ -4,10 +4,13 @@
package user
import (
"fmt"
"path/filepath"
"strings"
"testing"
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/models/auth"
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/models/organization"
repo_model "code.gitea.io/gitea/models/repo"
@ -94,6 +97,67 @@ func TestCreateUser(t *testing.T) {
assert . NoError ( t , DeleteUser ( db . DefaultContext , user , false ) )
}
func TestRenameUser ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
user := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : 21 } )
t . Run ( "Non-Local" , func ( t * testing . T ) {
u := & user_model . User {
Type : user_model . UserTypeIndividual ,
LoginType : auth . OAuth2 ,
}
assert . ErrorIs ( t , RenameUser ( db . DefaultContext , u , "user_rename" ) , user_model . ErrUserIsNotLocal { } )
} )
t . Run ( "Same username" , func ( t * testing . T ) {
assert . ErrorIs ( t , RenameUser ( db . DefaultContext , user , user . Name ) , user_model . ErrUsernameNotChanged { UID : user . ID , Name : user . Name } )
} )
t . Run ( "Non usable username" , func ( t * testing . T ) {
usernames := [ ] string { "--diff" , "aa.png" , ".well-known" , "search" , "aaa.atom" }
for _ , username := range usernames {
t . Run ( username , func ( t * testing . T ) {
assert . Error ( t , user_model . IsUsableUsername ( username ) )
assert . Error ( t , RenameUser ( db . DefaultContext , user , username ) )
} )
}
} )
t . Run ( "Only capitalization" , func ( t * testing . T ) {
caps := strings . ToUpper ( user . Name )
unittest . AssertNotExistsBean ( t , & user_model . User { ID : user . ID , Name : caps } )
unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { OwnerID : user . ID , OwnerName : user . Name } )
assert . NoError ( t , RenameUser ( db . DefaultContext , user , caps ) )
unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : user . ID , Name : caps } )
unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { OwnerID : user . ID , OwnerName : caps } )
} )
t . Run ( "Already exists" , func ( t * testing . T ) {
existUser := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : 1 } )
assert . ErrorIs ( t , RenameUser ( db . DefaultContext , user , existUser . Name ) , user_model . ErrUserAlreadyExist { Name : existUser . Name } )
assert . ErrorIs ( t , RenameUser ( db . DefaultContext , user , existUser . LowerName ) , user_model . ErrUserAlreadyExist { Name : existUser . LowerName } )
newUsername := fmt . Sprintf ( "uSEr%d" , existUser . ID )
assert . ErrorIs ( t , RenameUser ( db . DefaultContext , user , newUsername ) , user_model . ErrUserAlreadyExist { Name : newUsername } )
} )
t . Run ( "Normal" , func ( t * testing . T ) {
oldUsername := user . Name
newUsername := "User_Rename"
assert . NoError ( t , RenameUser ( db . DefaultContext , user , newUsername ) )
unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : user . ID , Name : newUsername , LowerName : strings . ToLower ( newUsername ) } )
redirectUID , err := user_model . LookupUserRedirect ( oldUsername )
assert . NoError ( t , err )
assert . EqualValues ( t , user . ID , redirectUID )
unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { OwnerID : user . ID , OwnerName : user . Name } )
} )
}
func TestCreateUser_Issue5882 ( t * testing . T ) {
// Init settings
_ = setting . Admin