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.

92 lines
2.6 KiB

  1. // Copyright 2018 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package integrations
  5. import (
  6. "net/http"
  7. "net/url"
  8. "strings"
  9. "testing"
  10. "code.gitea.io/gitea/models"
  11. "code.gitea.io/gitea/modules/setting"
  12. api "code.gitea.io/gitea/modules/structs"
  13. "github.com/stretchr/testify/assert"
  14. )
  15. func TestAPIOrg(t *testing.T) {
  16. onGiteaRun(t, func(*testing.T, *url.URL) {
  17. session := loginUser(t, "user1")
  18. token := getTokenForLoggedInUser(t, session)
  19. var org = api.CreateOrgOption{
  20. UserName: "user1_org",
  21. FullName: "User1's organization",
  22. Description: "This organization created by user1",
  23. Website: "https://try.gitea.io",
  24. Location: "Shanghai",
  25. }
  26. req := NewRequestWithJSON(t, "POST", "/api/v1/orgs?token="+token, &org)
  27. resp := session.MakeRequest(t, req, http.StatusCreated)
  28. var apiOrg api.Organization
  29. DecodeJSON(t, resp, &apiOrg)
  30. assert.Equal(t, org.UserName, apiOrg.UserName)
  31. assert.Equal(t, org.FullName, apiOrg.FullName)
  32. assert.Equal(t, org.Description, apiOrg.Description)
  33. assert.Equal(t, org.Website, apiOrg.Website)
  34. assert.Equal(t, org.Location, apiOrg.Location)
  35. models.AssertExistsAndLoadBean(t, &models.User{
  36. Name: org.UserName,
  37. LowerName: strings.ToLower(org.UserName),
  38. FullName: org.FullName,
  39. })
  40. req = NewRequestf(t, "GET", "/api/v1/orgs/%s", org.UserName)
  41. resp = session.MakeRequest(t, req, http.StatusOK)
  42. DecodeJSON(t, resp, &apiOrg)
  43. assert.EqualValues(t, org.UserName, apiOrg.UserName)
  44. req = NewRequestf(t, "GET", "/api/v1/orgs/%s/repos", org.UserName)
  45. resp = session.MakeRequest(t, req, http.StatusOK)
  46. var repos []*api.Repository
  47. DecodeJSON(t, resp, &repos)
  48. for _, repo := range repos {
  49. assert.False(t, repo.Private)
  50. }
  51. req = NewRequestf(t, "GET", "/api/v1/orgs/%s/members", org.UserName)
  52. resp = session.MakeRequest(t, req, http.StatusOK)
  53. // user1 on this org is public
  54. var users []*api.User
  55. DecodeJSON(t, resp, &users)
  56. assert.EqualValues(t, 1, len(users))
  57. assert.EqualValues(t, "user1", users[0].UserName)
  58. })
  59. }
  60. func TestAPIOrgDeny(t *testing.T) {
  61. onGiteaRun(t, func(*testing.T, *url.URL) {
  62. setting.Service.RequireSignInView = true
  63. defer func() {
  64. setting.Service.RequireSignInView = false
  65. }()
  66. var orgName = "user1_org"
  67. req := NewRequestf(t, "GET", "/api/v1/orgs/%s", orgName)
  68. MakeRequest(t, req, http.StatusNotFound)
  69. req = NewRequestf(t, "GET", "/api/v1/orgs/%s/repos", orgName)
  70. MakeRequest(t, req, http.StatusNotFound)
  71. req = NewRequestf(t, "GET", "/api/v1/orgs/%s/members", orgName)
  72. MakeRequest(t, req, http.StatusNotFound)
  73. })
  74. }