gitea源码

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. // Copyright 2021 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package integration
  4. import (
  5. "fmt"
  6. "net/http"
  7. "strconv"
  8. "testing"
  9. "code.gitea.io/gitea/models/unittest"
  10. user_model "code.gitea.io/gitea/models/user"
  11. "code.gitea.io/gitea/tests"
  12. "github.com/stretchr/testify/assert"
  13. )
  14. func TestAdminViewUsers(t *testing.T) {
  15. defer tests.PrepareTestEnv(t)()
  16. session := loginUser(t, "user1")
  17. req := NewRequest(t, "GET", "/-/admin/users")
  18. session.MakeRequest(t, req, http.StatusOK)
  19. session = loginUser(t, "user2")
  20. req = NewRequest(t, "GET", "/-/admin/users")
  21. session.MakeRequest(t, req, http.StatusForbidden)
  22. }
  23. func TestAdminViewUser(t *testing.T) {
  24. defer tests.PrepareTestEnv(t)()
  25. session := loginUser(t, "user1")
  26. req := NewRequest(t, "GET", "/-/admin/users/1")
  27. session.MakeRequest(t, req, http.StatusOK)
  28. session = loginUser(t, "user2")
  29. req = NewRequest(t, "GET", "/-/admin/users/1")
  30. session.MakeRequest(t, req, http.StatusForbidden)
  31. }
  32. func TestAdminEditUser(t *testing.T) {
  33. defer tests.PrepareTestEnv(t)()
  34. testSuccessfullEdit(t, user_model.User{ID: 2, Name: "newusername", LoginName: "otherlogin", Email: "new@e-mail.gitea"})
  35. }
  36. func testSuccessfullEdit(t *testing.T, formData user_model.User) {
  37. makeRequest(t, formData, http.StatusSeeOther)
  38. }
  39. func makeRequest(t *testing.T, formData user_model.User, headerCode int) {
  40. session := loginUser(t, "user1")
  41. csrf := GetUserCSRFToken(t, session)
  42. req := NewRequestWithValues(t, "POST", "/-/admin/users/"+strconv.Itoa(int(formData.ID))+"/edit", map[string]string{
  43. "_csrf": csrf,
  44. "user_name": formData.Name,
  45. "login_name": formData.LoginName,
  46. "login_type": "0-0",
  47. "email": formData.Email,
  48. })
  49. session.MakeRequest(t, req, headerCode)
  50. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: formData.ID})
  51. assert.Equal(t, formData.Name, user.Name)
  52. assert.Equal(t, formData.LoginName, user.LoginName)
  53. assert.Equal(t, formData.Email, user.Email)
  54. }
  55. func TestAdminDeleteUser(t *testing.T) {
  56. defer tests.PrepareTestEnv(t)()
  57. session := loginUser(t, "user1")
  58. usersToDelete := []struct {
  59. userID int64
  60. purge bool
  61. }{
  62. {
  63. userID: 2,
  64. purge: true,
  65. },
  66. {
  67. userID: 8,
  68. },
  69. }
  70. for _, entry := range usersToDelete {
  71. t.Run(fmt.Sprintf("DeleteUser%d", entry.userID), func(t *testing.T) {
  72. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: entry.userID})
  73. assert.NotNil(t, user)
  74. var query string
  75. if entry.purge {
  76. query = "?purge=true"
  77. }
  78. csrf := GetUserCSRFToken(t, session)
  79. req := NewRequestWithValues(t, "POST", fmt.Sprintf("/-/admin/users/%d/delete%s", entry.userID, query), map[string]string{
  80. "_csrf": csrf,
  81. })
  82. session.MakeRequest(t, req, http.StatusSeeOther)
  83. assertUserDeleted(t, entry.userID)
  84. unittest.CheckConsistencyFor(t, &user_model.User{})
  85. })
  86. }
  87. }