2018-09-13 13:04:25 +01:00
// Copyright 2017 The Gitea Authors. All rights reserved.
2022-11-27 13:20:29 -05:00
// SPDX-License-Identifier: MIT
2018-09-13 13:04:25 +01:00
package admin
import (
"testing"
2021-11-12 22:36:47 +08:00
"code.gitea.io/gitea/models/unittest"
2021-11-24 17:49:20 +08:00
user_model "code.gitea.io/gitea/models/user"
2021-06-26 22:53:14 +03:00
"code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs"
2021-01-26 23:36:53 +08:00
"code.gitea.io/gitea/modules/web"
2024-02-27 15:12:22 +08:00
"code.gitea.io/gitea/services/contexttest"
2021-04-06 20:44:05 +01:00
"code.gitea.io/gitea/services/forms"
2019-08-23 09:40:30 -07:00
2018-09-13 13:04:25 +01:00
"github.com/stretchr/testify/assert"
)
func TestNewUserPost_MustChangePassword ( t * testing . T ) {
2021-11-12 22:36:47 +08:00
unittest . PrepareTestEnv ( t )
2023-09-01 19:26:07 +08:00
ctx , _ := contexttest . MockContext ( t , "admin/users/new" )
2018-09-13 13:04:25 +01:00
2021-11-24 17:49:20 +08:00
u := unittest . AssertExistsAndLoadBean ( t , & user_model . User {
2018-09-13 13:04:25 +01:00
IsAdmin : true ,
ID : 2 ,
2022-08-16 10:22:25 +08:00
} )
2018-09-13 13:04:25 +01:00
2022-03-22 08:03:22 +01:00
ctx . Doer = u
2018-09-13 13:04:25 +01:00
username := "gitea"
email := "gitea@gitea.io"
2021-04-06 20:44:05 +01:00
form := forms . AdminCreateUserForm {
2018-09-13 17:34:36 +01:00
LoginType : "local" ,
LoginName : "local" ,
UserName : username ,
Email : email ,
2019-10-16 00:09:58 -03:00
Password : "abc123ABC!=$" ,
2018-09-13 17:34:36 +01:00
SendNotify : false ,
MustChangePassword : true ,
2018-09-13 13:04:25 +01:00
}
2021-01-26 23:36:53 +08:00
web . SetForm ( ctx , & form )
NewUserPost ( ctx )
2018-09-13 13:04:25 +01:00
assert . NotEmpty ( t , ctx . Flash . SuccessMsg )
2022-05-20 22:08:52 +08:00
u , err := user_model . GetUserByName ( ctx , username )
2018-09-13 13:04:25 +01:00
assert . NoError ( t , err )
assert . Equal ( t , username , u . Name )
assert . Equal ( t , email , u . Email )
assert . True ( t , u . MustChangePassword )
}
2018-09-13 17:34:36 +01:00
func TestNewUserPost_MustChangePasswordFalse ( t * testing . T ) {
2021-11-12 22:36:47 +08:00
unittest . PrepareTestEnv ( t )
2023-09-01 19:26:07 +08:00
ctx , _ := contexttest . MockContext ( t , "admin/users/new" )
2018-09-13 17:34:36 +01:00
2021-11-24 17:49:20 +08:00
u := unittest . AssertExistsAndLoadBean ( t , & user_model . User {
2018-09-13 17:34:36 +01:00
IsAdmin : true ,
ID : 2 ,
2022-08-16 10:22:25 +08:00
} )
2018-09-13 17:34:36 +01:00
2022-03-22 08:03:22 +01:00
ctx . Doer = u
2018-09-13 17:34:36 +01:00
username := "gitea"
email := "gitea@gitea.io"
2021-04-06 20:44:05 +01:00
form := forms . AdminCreateUserForm {
2018-09-13 17:34:36 +01:00
LoginType : "local" ,
LoginName : "local" ,
UserName : username ,
Email : email ,
2019-10-16 00:09:58 -03:00
Password : "abc123ABC!=$" ,
2018-09-13 17:34:36 +01:00
SendNotify : false ,
MustChangePassword : false ,
}
2021-01-26 23:36:53 +08:00
web . SetForm ( ctx , & form )
NewUserPost ( ctx )
2018-09-13 17:34:36 +01:00
assert . NotEmpty ( t , ctx . Flash . SuccessMsg )
2022-05-20 22:08:52 +08:00
u , err := user_model . GetUserByName ( ctx , username )
2018-09-13 17:34:36 +01:00
assert . NoError ( t , err )
assert . Equal ( t , username , u . Name )
assert . Equal ( t , email , u . Email )
assert . False ( t , u . MustChangePassword )
}
2020-11-15 00:53:43 +08:00
func TestNewUserPost_InvalidEmail ( t * testing . T ) {
2021-11-12 22:36:47 +08:00
unittest . PrepareTestEnv ( t )
2023-09-01 19:26:07 +08:00
ctx , _ := contexttest . MockContext ( t , "admin/users/new" )
2020-11-15 00:53:43 +08:00
2021-11-24 17:49:20 +08:00
u := unittest . AssertExistsAndLoadBean ( t , & user_model . User {
2020-11-15 00:53:43 +08:00
IsAdmin : true ,
ID : 2 ,
2022-08-16 10:22:25 +08:00
} )
2020-11-15 00:53:43 +08:00
2022-03-22 08:03:22 +01:00
ctx . Doer = u
2020-11-15 00:53:43 +08:00
username := "gitea"
email := "gitea@gitea.io\r\n"
2021-04-06 20:44:05 +01:00
form := forms . AdminCreateUserForm {
2020-11-15 00:53:43 +08:00
LoginType : "local" ,
LoginName : "local" ,
UserName : username ,
Email : email ,
Password : "abc123ABC!=$" ,
SendNotify : false ,
MustChangePassword : false ,
}
2021-01-26 23:36:53 +08:00
web . SetForm ( ctx , & form )
NewUserPost ( ctx )
2020-11-15 00:53:43 +08:00
assert . NotEmpty ( t , ctx . Flash . ErrorMsg )
}
2021-06-26 22:53:14 +03:00
2021-07-08 08:55:09 -04:00
func TestNewUserPost_VisibilityDefaultPublic ( t * testing . T ) {
2021-11-12 22:36:47 +08:00
unittest . PrepareTestEnv ( t )
2023-09-01 19:26:07 +08:00
ctx , _ := contexttest . MockContext ( t , "admin/users/new" )
2021-06-26 22:53:14 +03:00
2021-11-24 17:49:20 +08:00
u := unittest . AssertExistsAndLoadBean ( t , & user_model . User {
2021-06-26 22:53:14 +03:00
IsAdmin : true ,
ID : 2 ,
2022-08-16 10:22:25 +08:00
} )
2021-06-26 22:53:14 +03:00
2022-03-22 08:03:22 +01:00
ctx . Doer = u
2021-06-26 22:53:14 +03:00
username := "gitea"
email := "gitea@gitea.io"
form := forms . AdminCreateUserForm {
LoginType : "local" ,
LoginName : "local" ,
UserName : username ,
Email : email ,
Password : "abc123ABC!=$" ,
SendNotify : false ,
MustChangePassword : false ,
}
web . SetForm ( ctx , & form )
NewUserPost ( ctx )
assert . NotEmpty ( t , ctx . Flash . SuccessMsg )
2022-05-20 22:08:52 +08:00
u , err := user_model . GetUserByName ( ctx , username )
2021-06-26 22:53:14 +03:00
assert . NoError ( t , err )
assert . Equal ( t , username , u . Name )
assert . Equal ( t , email , u . Email )
// As default user visibility
assert . Equal ( t , setting . Service . DefaultUserVisibilityMode , u . Visibility )
}
func TestNewUserPost_VisibilityPrivate ( t * testing . T ) {
2021-11-12 22:36:47 +08:00
unittest . PrepareTestEnv ( t )
2023-09-01 19:26:07 +08:00
ctx , _ := contexttest . MockContext ( t , "admin/users/new" )
2021-06-26 22:53:14 +03:00
2021-11-24 17:49:20 +08:00
u := unittest . AssertExistsAndLoadBean ( t , & user_model . User {
2021-06-26 22:53:14 +03:00
IsAdmin : true ,
ID : 2 ,
2022-08-16 10:22:25 +08:00
} )
2021-06-26 22:53:14 +03:00
2022-03-22 08:03:22 +01:00
ctx . Doer = u
2021-06-26 22:53:14 +03:00
username := "gitea"
email := "gitea@gitea.io"
form := forms . AdminCreateUserForm {
LoginType : "local" ,
LoginName : "local" ,
UserName : username ,
Email : email ,
Password : "abc123ABC!=$" ,
SendNotify : false ,
MustChangePassword : false ,
Visibility : api . VisibleTypePrivate ,
}
web . SetForm ( ctx , & form )
NewUserPost ( ctx )
assert . NotEmpty ( t , ctx . Flash . SuccessMsg )
2022-05-20 22:08:52 +08:00
u , err := user_model . GetUserByName ( ctx , username )
2021-06-26 22:53:14 +03:00
assert . NoError ( t , err )
assert . Equal ( t , username , u . Name )
assert . Equal ( t , email , u . Email )
// As default user visibility
assert . True ( t , u . Visibility . IsPrivate ( ) )
}