gitea源码

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