@@ -13,32 +13,54 @@ import (
1313 user_model "code.gitea.io/gitea/models/user"
1414
1515 "github.com/stretchr/testify/assert"
16+ "github.com/stretchr/testify/require"
1617)
1718
1819func TestAdminUserCreate (t * testing.T ) {
1920 app := NewMainApp (AppVersion {})
2021
2122 reset := func () {
22- assert .NoError (t , db .TruncateBeans (db .DefaultContext , & user_model.User {}))
23- assert .NoError (t , db .TruncateBeans (db .DefaultContext , & user_model.EmailAddress {}))
23+ require .NoError (t , db .TruncateBeans (db .DefaultContext , & user_model.User {}))
24+ require .NoError (t , db .TruncateBeans (db .DefaultContext , & user_model.EmailAddress {}))
2425 }
2526
26- type createCheck struct { IsAdmin , MustChangePassword bool }
27- createUser := func (name , args string ) createCheck {
28- assert .
NoError (
t ,
app .
Run (
strings .
Fields (
fmt .
Sprintf (
"./gitea admin user create --username %s --email %[email protected] %s --password foobar" ,
name ,
name ,
args ))))
29- u := unittest .AssertExistsAndLoadBean (t , & user_model.User {LowerName : name })
30- return createCheck {u .IsAdmin , u .MustChangePassword }
31- }
32- reset ()
33- assert .Equal (t , createCheck {IsAdmin : false , MustChangePassword : false }, createUser ("u" , "" ), "first non-admin user doesn't need to change password" )
34-
35- reset ()
36- assert .Equal (t , createCheck {IsAdmin : true , MustChangePassword : false }, createUser ("u" , "--admin" ), "first admin user doesn't need to change password" )
37-
38- reset ()
39- assert .Equal (t , createCheck {IsAdmin : true , MustChangePassword : true }, createUser ("u" , "--admin --must-change-password" ))
40- assert .Equal (t , createCheck {IsAdmin : true , MustChangePassword : true }, createUser ("u2" , "--admin" ))
41- assert .Equal (t , createCheck {IsAdmin : true , MustChangePassword : false }, createUser ("u3" , "--admin --must-change-password=false" ))
42- assert .Equal (t , createCheck {IsAdmin : false , MustChangePassword : true }, createUser ("u4" , "" ))
43- assert .Equal (t , createCheck {IsAdmin : false , MustChangePassword : false }, createUser ("u5" , "--must-change-password=false" ))
27+ t .Run ("MustChangePassword" , func (t * testing.T ) {
28+ type check struct {
29+ IsAdmin bool
30+ MustChangePassword bool
31+ }
32+ createCheck := func (name , args string ) check {
33+ require .
NoError (
t ,
app .
Run (
strings .
Fields (
fmt .
Sprintf (
"./gitea admin user create --username %s --email %[email protected] %s --password foobar" ,
name ,
name ,
args ))))
34+ u := unittest .AssertExistsAndLoadBean (t , & user_model.User {LowerName : name })
35+ return check {IsAdmin : u .IsAdmin , MustChangePassword : u .MustChangePassword }
36+ }
37+ reset ()
38+ assert .Equal (t , check {IsAdmin : false , MustChangePassword : false }, createCheck ("u" , "" ), "first non-admin user doesn't need to change password" )
39+
40+ reset ()
41+ assert .Equal (t , check {IsAdmin : true , MustChangePassword : false }, createCheck ("u" , "--admin" ), "first admin user doesn't need to change password" )
42+
43+ reset ()
44+ assert .Equal (t , check {IsAdmin : true , MustChangePassword : true }, createCheck ("u" , "--admin --must-change-password" ))
45+ assert .Equal (t , check {IsAdmin : true , MustChangePassword : true }, createCheck ("u2" , "--admin" ))
46+ assert .Equal (t , check {IsAdmin : true , MustChangePassword : false }, createCheck ("u3" , "--admin --must-change-password=false" ))
47+ assert .Equal (t , check {IsAdmin : false , MustChangePassword : true }, createCheck ("u4" , "" ))
48+ assert .Equal (t , check {IsAdmin : false , MustChangePassword : false }, createCheck ("u5" , "--must-change-password=false" ))
49+ })
50+
51+ t .Run ("UserType" , func (t * testing.T ) {
52+ createUser := func (name , args string ) error {
53+ return app .
Run (
strings .
Fields (
fmt .
Sprintf (
"./gitea admin user create --username %s --email %[email protected] %s" ,
name ,
name ,
args )))
54+ }
55+
56+ reset ()
57+ assert .ErrorContains (t , createUser ("u" , "--user-type invalid" ), "invalid user type" )
58+ assert .ErrorContains (t , createUser ("u" , "--user-type bot --password 123" ), "can only be set for individual users" )
59+ assert .ErrorContains (t , createUser ("u" , "--user-type bot --must-change-password" ), "can only be set for individual users" )
60+
61+ assert .NoError (t , createUser ("u" , "--user-type bot" ))
62+ u := unittest .AssertExistsAndLoadBean (t , & user_model.User {LowerName : "u" })
63+ assert .Equal (t , user_model .UserTypeBot , u .Type )
64+ assert .Equal (t , "" , u .Passwd )
65+ })
4466}
0 commit comments