@@ -20,6 +20,7 @@ import (
2020 org_service "code.gitea.io/gitea/services/org"
2121
2222 "github.com/stretchr/testify/assert"
23+ "github.com/stretchr/testify/require"
2324)
2425
2526func TestMain (m * testing.M ) {
@@ -101,23 +102,31 @@ func TestRenameUser(t *testing.T) {
101102 assert .NoError (t , unittest .PrepareTestDatabase ())
102103 user := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 21 })
103104
104- t .Run ("Non-Local" , func (t * testing.T ) {
105- u := & user_model.User {
106- Type : user_model .UserTypeIndividual ,
107- LoginType : auth .OAuth2 ,
105+ t .Run ("External user" , func (t * testing.T ) {
106+ adminUser := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 1 , IsAdmin : true })
107+ externalUser := & user_model.User {
108+ Name : "external_user" ,
109+ 110+ LoginType : auth .LDAP ,
108111 }
109- assert .ErrorIs (t , RenameUser (t .Context (), u , "user_rename" ), user_model.ErrUserIsNotLocal {})
112+ require .NoError (t , user_model .CreateUser (t .Context (), externalUser , & user_model.Meta {}))
113+
114+ err := RenameUser (t .Context (), externalUser , externalUser .Name + "_changed" , externalUser )
115+ assert .True (t , user_model .IsErrUserIsNotLocal (err ), "external user is not allowed to rename themselves" )
116+
117+ err = RenameUser (t .Context (), externalUser , externalUser .Name + "_changed" , adminUser )
118+ assert .NoError (t , err , "admin can rename external user" )
110119 })
111120
112121 t .Run ("Same username" , func (t * testing.T ) {
113- assert .NoError (t , RenameUser (t .Context (), user , user .Name ))
122+ assert .NoError (t , RenameUser (t .Context (), user , user .Name , user ))
114123 })
115124
116125 t .Run ("Non usable username" , func (t * testing.T ) {
117126 usernames := []string {"--diff" , ".well-known" , "gitea-actions" , "aaa.atom" , "aa.png" }
118127 for _ , username := range usernames {
119128 assert .Error (t , user_model .IsUsableUsername (username ), "non-usable username: %s" , username )
120- assert .Error (t , RenameUser (t .Context (), user , username ), "non-usable username: %s" , username )
129+ assert .Error (t , RenameUser (t .Context (), user , username , user ), "non-usable username: %s" , username )
121130 }
122131 })
123132
@@ -126,7 +135,7 @@ func TestRenameUser(t *testing.T) {
126135 unittest .AssertNotExistsBean (t , & user_model.User {ID : user .ID , Name : caps })
127136 unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {OwnerID : user .ID , OwnerName : user .Name })
128137
129- assert .NoError (t , RenameUser (t .Context (), user , caps ))
138+ assert .NoError (t , RenameUser (t .Context (), user , caps , user ))
130139
131140 unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : user .ID , Name : caps })
132141 unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {OwnerID : user .ID , OwnerName : caps })
@@ -135,17 +144,17 @@ func TestRenameUser(t *testing.T) {
135144 t .Run ("Already exists" , func (t * testing.T ) {
136145 existUser := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 1 })
137146
138- assert .ErrorIs (t , RenameUser (t .Context (), user , existUser .Name ), user_model.ErrUserAlreadyExist {Name : existUser .Name })
139- assert .ErrorIs (t , RenameUser (t .Context (), user , existUser .LowerName ), user_model.ErrUserAlreadyExist {Name : existUser .LowerName })
147+ assert .ErrorIs (t , RenameUser (t .Context (), user , existUser .Name , user ), user_model.ErrUserAlreadyExist {Name : existUser .Name })
148+ assert .ErrorIs (t , RenameUser (t .Context (), user , existUser .LowerName , user ), user_model.ErrUserAlreadyExist {Name : existUser .LowerName })
140149 newUsername := fmt .Sprintf ("uSEr%d" , existUser .ID )
141- assert .ErrorIs (t , RenameUser (t .Context (), user , newUsername ), user_model.ErrUserAlreadyExist {Name : newUsername })
150+ assert .ErrorIs (t , RenameUser (t .Context (), user , newUsername , user ), user_model.ErrUserAlreadyExist {Name : newUsername })
142151 })
143152
144153 t .Run ("Normal" , func (t * testing.T ) {
145154 oldUsername := user .Name
146155 newUsername := "User_Rename"
147156
148- assert .NoError (t , RenameUser (t .Context (), user , newUsername ))
157+ assert .NoError (t , RenameUser (t .Context (), user , newUsername , user ))
149158 unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : user .ID , Name : newUsername , LowerName : strings .ToLower (newUsername )})
150159
151160 redirectUID , err := user_model .LookupUserRedirect (t .Context (), oldUsername )
0 commit comments