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.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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?token="+token, &org)
  29. resp := MakeRequest(t, req, http.StatusCreated)
  30. var apiOrg api.Organization
  31. DecodeJSON(t, resp, &apiOrg)
  32. assert.Equal(t, org.UserName, apiOrg.Name)
  33. assert.Equal(t, org.FullName, apiOrg.FullName)
  34. assert.Equal(t, org.Description, apiOrg.Description)
  35. assert.Equal(t, org.Website, apiOrg.Website)
  36. assert.Equal(t, org.Location, apiOrg.Location)
  37. assert.Equal(t, org.Visibility, apiOrg.Visibility)
  38. unittest.AssertExistsAndLoadBean(t, &user_model.User{
  39. Name: org.UserName,
  40. LowerName: strings.ToLower(org.UserName),
  41. FullName: org.FullName,
  42. })
  43. })
  44. }
  45. func TestAPIAdminOrgCreateBadVisibility(t *testing.T) {
  46. onGiteaRun(t, func(*testing.T, *url.URL) {
  47. session := loginUser(t, "user1")
  48. token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteAdmin)
  49. org := api.CreateOrgOption{
  50. UserName: "user2_org",
  51. FullName: "User2's organization",
  52. Description: "This organization created by admin for user2",
  53. Website: "https://try.gitea.io",
  54. Location: "Shanghai",
  55. Visibility: "notvalid",
  56. }
  57. req := NewRequestWithJSON(t, "POST", "/api/v1/admin/users/user2/orgs?token="+token, &org)
  58. MakeRequest(t, req, http.StatusUnprocessableEntity)
  59. })
  60. }
  61. func TestAPIAdminOrgCreateNotAdmin(t *testing.T) {
  62. defer tests.PrepareTestEnv(t)()
  63. nonAdminUsername := "user2"
  64. session := loginUser(t, nonAdminUsername)
  65. token := getTokenForLoggedInUser(t, session)
  66. org := api.CreateOrgOption{
  67. UserName: "user2_org",
  68. FullName: "User2's organization",
  69. Description: "This organization created by admin for user2",
  70. Website: "https://try.gitea.io",
  71. Location: "Shanghai",
  72. Visibility: "public",
  73. }
  74. req := NewRequestWithJSON(t, "POST", "/api/v1/admin/users/user2/orgs?token="+token, &org)
  75. MakeRequest(t, req, http.StatusForbidden)
  76. }