You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

api_admin_org_test.go 2.8KB

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