gitea源码

api_admin_org_test.go 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package integration
  4. import (
  5. "net/http"
  6. "strings"
  7. "testing"
  8. auth_model "code.gitea.io/gitea/models/auth"
  9. "code.gitea.io/gitea/models/unittest"
  10. user_model "code.gitea.io/gitea/models/user"
  11. api "code.gitea.io/gitea/modules/structs"
  12. "code.gitea.io/gitea/tests"
  13. "github.com/stretchr/testify/assert"
  14. )
  15. func TestAPIAdminOrgCreate(t *testing.T) {
  16. defer tests.PrepareTestEnv(t)()
  17. session := loginUser(t, "user1")
  18. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteAdmin)
  19. t.Run("CreateOrg", func(t *testing.T) {
  20. defer tests.PrintCurrentTest(t)()
  21. org := api.CreateOrgOption{
  22. UserName: "user2_org",
  23. FullName: "User2's organization",
  24. Description: "This organization created by admin for user2",
  25. Website: "https://try.gitea.io",
  26. Location: "Shanghai",
  27. Visibility: "private",
  28. }
  29. req := NewRequestWithJSON(t, "POST", "/api/v1/admin/users/user2/orgs", &org).
  30. AddTokenAuth(token)
  31. resp := MakeRequest(t, req, http.StatusCreated)
  32. var apiOrg api.Organization
  33. DecodeJSON(t, resp, &apiOrg)
  34. assert.Equal(t, org.UserName, apiOrg.Name)
  35. assert.Equal(t, org.FullName, apiOrg.FullName)
  36. assert.Equal(t, org.Description, apiOrg.Description)
  37. assert.Equal(t, org.Website, apiOrg.Website)
  38. assert.Equal(t, org.Location, apiOrg.Location)
  39. assert.Equal(t, org.Visibility, apiOrg.Visibility)
  40. unittest.AssertExistsAndLoadBean(t, &user_model.User{
  41. Name: org.UserName,
  42. LowerName: strings.ToLower(org.UserName),
  43. FullName: org.FullName,
  44. })
  45. })
  46. t.Run("CreateBadVisibility", func(t *testing.T) {
  47. defer tests.PrintCurrentTest(t)()
  48. org := api.CreateOrgOption{
  49. UserName: "user2_org",
  50. FullName: "User2's organization",
  51. Description: "This organization created by admin for user2",
  52. Website: "https://try.gitea.io",
  53. Location: "Shanghai",
  54. Visibility: "notvalid",
  55. }
  56. req := NewRequestWithJSON(t, "POST", "/api/v1/admin/users/user2/orgs", &org).
  57. AddTokenAuth(token)
  58. MakeRequest(t, req, http.StatusUnprocessableEntity)
  59. })
  60. t.Run("CreateNotAdmin", func(t *testing.T) {
  61. defer tests.PrintCurrentTest(t)()
  62. nonAdminUsername := "user2"
  63. session := loginUser(t, nonAdminUsername)
  64. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeAll)
  65. org := api.CreateOrgOption{
  66. UserName: "user2_org",
  67. FullName: "User2's organization",
  68. Description: "This organization created by admin for user2",
  69. Website: "https://try.gitea.io",
  70. Location: "Shanghai",
  71. Visibility: "public",
  72. }
  73. req := NewRequestWithJSON(t, "POST", "/api/v1/admin/users/user2/orgs", &org).
  74. AddTokenAuth(token)
  75. MakeRequest(t, req, http.StatusForbidden)
  76. })
  77. }