code.gitea.io/gitea@v1.21.7/routers/web/admin/users_test.go (about) 1 // Copyright 2017 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package admin 5 6 import ( 7 "testing" 8 9 "code.gitea.io/gitea/models/unittest" 10 user_model "code.gitea.io/gitea/models/user" 11 "code.gitea.io/gitea/modules/contexttest" 12 "code.gitea.io/gitea/modules/setting" 13 api "code.gitea.io/gitea/modules/structs" 14 "code.gitea.io/gitea/modules/web" 15 "code.gitea.io/gitea/services/forms" 16 17 "github.com/stretchr/testify/assert" 18 ) 19 20 func TestNewUserPost_MustChangePassword(t *testing.T) { 21 unittest.PrepareTestEnv(t) 22 ctx, _ := contexttest.MockContext(t, "admin/users/new") 23 24 u := unittest.AssertExistsAndLoadBean(t, &user_model.User{ 25 IsAdmin: true, 26 ID: 2, 27 }) 28 29 ctx.Doer = u 30 31 username := "gitea" 32 email := "gitea@gitea.io" 33 34 form := forms.AdminCreateUserForm{ 35 LoginType: "local", 36 LoginName: "local", 37 UserName: username, 38 Email: email, 39 Password: "abc123ABC!=$", 40 SendNotify: false, 41 MustChangePassword: true, 42 } 43 44 web.SetForm(ctx, &form) 45 NewUserPost(ctx) 46 47 assert.NotEmpty(t, ctx.Flash.SuccessMsg) 48 49 u, err := user_model.GetUserByName(ctx, username) 50 51 assert.NoError(t, err) 52 assert.Equal(t, username, u.Name) 53 assert.Equal(t, email, u.Email) 54 assert.True(t, u.MustChangePassword) 55 } 56 57 func TestNewUserPost_MustChangePasswordFalse(t *testing.T) { 58 unittest.PrepareTestEnv(t) 59 ctx, _ := contexttest.MockContext(t, "admin/users/new") 60 61 u := unittest.AssertExistsAndLoadBean(t, &user_model.User{ 62 IsAdmin: true, 63 ID: 2, 64 }) 65 66 ctx.Doer = u 67 68 username := "gitea" 69 email := "gitea@gitea.io" 70 71 form := forms.AdminCreateUserForm{ 72 LoginType: "local", 73 LoginName: "local", 74 UserName: username, 75 Email: email, 76 Password: "abc123ABC!=$", 77 SendNotify: false, 78 MustChangePassword: false, 79 } 80 81 web.SetForm(ctx, &form) 82 NewUserPost(ctx) 83 84 assert.NotEmpty(t, ctx.Flash.SuccessMsg) 85 86 u, err := user_model.GetUserByName(ctx, username) 87 88 assert.NoError(t, err) 89 assert.Equal(t, username, u.Name) 90 assert.Equal(t, email, u.Email) 91 assert.False(t, u.MustChangePassword) 92 } 93 94 func TestNewUserPost_InvalidEmail(t *testing.T) { 95 unittest.PrepareTestEnv(t) 96 ctx, _ := contexttest.MockContext(t, "admin/users/new") 97 98 u := unittest.AssertExistsAndLoadBean(t, &user_model.User{ 99 IsAdmin: true, 100 ID: 2, 101 }) 102 103 ctx.Doer = u 104 105 username := "gitea" 106 email := "gitea@gitea.io\r\n" 107 108 form := forms.AdminCreateUserForm{ 109 LoginType: "local", 110 LoginName: "local", 111 UserName: username, 112 Email: email, 113 Password: "abc123ABC!=$", 114 SendNotify: false, 115 MustChangePassword: false, 116 } 117 118 web.SetForm(ctx, &form) 119 NewUserPost(ctx) 120 121 assert.NotEmpty(t, ctx.Flash.ErrorMsg) 122 } 123 124 func TestNewUserPost_VisibilityDefaultPublic(t *testing.T) { 125 unittest.PrepareTestEnv(t) 126 ctx, _ := contexttest.MockContext(t, "admin/users/new") 127 128 u := unittest.AssertExistsAndLoadBean(t, &user_model.User{ 129 IsAdmin: true, 130 ID: 2, 131 }) 132 133 ctx.Doer = u 134 135 username := "gitea" 136 email := "gitea@gitea.io" 137 138 form := forms.AdminCreateUserForm{ 139 LoginType: "local", 140 LoginName: "local", 141 UserName: username, 142 Email: email, 143 Password: "abc123ABC!=$", 144 SendNotify: false, 145 MustChangePassword: false, 146 } 147 148 web.SetForm(ctx, &form) 149 NewUserPost(ctx) 150 151 assert.NotEmpty(t, ctx.Flash.SuccessMsg) 152 153 u, err := user_model.GetUserByName(ctx, username) 154 155 assert.NoError(t, err) 156 assert.Equal(t, username, u.Name) 157 assert.Equal(t, email, u.Email) 158 // As default user visibility 159 assert.Equal(t, setting.Service.DefaultUserVisibilityMode, u.Visibility) 160 } 161 162 func TestNewUserPost_VisibilityPrivate(t *testing.T) { 163 unittest.PrepareTestEnv(t) 164 ctx, _ := contexttest.MockContext(t, "admin/users/new") 165 166 u := unittest.AssertExistsAndLoadBean(t, &user_model.User{ 167 IsAdmin: true, 168 ID: 2, 169 }) 170 171 ctx.Doer = u 172 173 username := "gitea" 174 email := "gitea@gitea.io" 175 176 form := forms.AdminCreateUserForm{ 177 LoginType: "local", 178 LoginName: "local", 179 UserName: username, 180 Email: email, 181 Password: "abc123ABC!=$", 182 SendNotify: false, 183 MustChangePassword: false, 184 Visibility: api.VisibleTypePrivate, 185 } 186 187 web.SetForm(ctx, &form) 188 NewUserPost(ctx) 189 190 assert.NotEmpty(t, ctx.Flash.SuccessMsg) 191 192 u, err := user_model.GetUserByName(ctx, username) 193 194 assert.NoError(t, err) 195 assert.Equal(t, username, u.Name) 196 assert.Equal(t, email, u.Email) 197 // As default user visibility 198 assert.True(t, u.Visibility.IsPrivate()) 199 }