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