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_user_orgs_test.go 2.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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.package models
  4. package integrations
  5. import (
  6. "fmt"
  7. "net/http"
  8. "testing"
  9. "code.gitea.io/gitea/models"
  10. "code.gitea.io/gitea/models/unittest"
  11. api "code.gitea.io/gitea/modules/structs"
  12. "github.com/stretchr/testify/assert"
  13. )
  14. func TestUserOrgs(t *testing.T) {
  15. defer prepareTestEnv(t)()
  16. adminUsername := "user1"
  17. normalUsername := "user2"
  18. privateMemberUsername := "user4"
  19. unrelatedUsername := "user5"
  20. orgs := getUserOrgs(t, adminUsername, normalUsername)
  21. user3 := unittest.AssertExistsAndLoadBean(t, &models.User{Name: "user3"}).(*models.User)
  22. assert.Equal(t, []*api.Organization{
  23. {
  24. ID: 3,
  25. UserName: user3.Name,
  26. FullName: user3.FullName,
  27. AvatarURL: user3.AvatarLink(),
  28. Description: "",
  29. Website: "",
  30. Location: "",
  31. Visibility: "public",
  32. },
  33. }, orgs)
  34. // user itself should get it's org's he is a member of
  35. orgs = getUserOrgs(t, privateMemberUsername, privateMemberUsername)
  36. assert.Len(t, orgs, 1)
  37. // unrelated user should not get private org membership of privateMemberUsername
  38. orgs = getUserOrgs(t, unrelatedUsername, privateMemberUsername)
  39. assert.Len(t, orgs, 0)
  40. // not authenticated call also should hide org membership
  41. orgs = getUserOrgs(t, "", privateMemberUsername)
  42. assert.Len(t, orgs, 0)
  43. }
  44. func getUserOrgs(t *testing.T, userDoer, userCheck string) (orgs []*api.Organization) {
  45. var token = ""
  46. session := emptyTestSession(t)
  47. if len(userDoer) != 0 {
  48. session = loginUser(t, userDoer)
  49. token = getTokenForLoggedInUser(t, session)
  50. }
  51. urlStr := fmt.Sprintf("/api/v1/users/%s/orgs?token=%s", userCheck, token)
  52. req := NewRequest(t, "GET", urlStr)
  53. resp := session.MakeRequest(t, req, http.StatusOK)
  54. DecodeJSON(t, resp, &orgs)
  55. return orgs
  56. }
  57. func TestMyOrgs(t *testing.T) {
  58. defer prepareTestEnv(t)()
  59. session := emptyTestSession(t)
  60. req := NewRequest(t, "GET", "/api/v1/user/orgs")
  61. session.MakeRequest(t, req, http.StatusUnauthorized)
  62. normalUsername := "user2"
  63. session = loginUser(t, normalUsername)
  64. token := getTokenForLoggedInUser(t, session)
  65. req = NewRequest(t, "GET", "/api/v1/user/orgs?token="+token)
  66. resp := session.MakeRequest(t, req, http.StatusOK)
  67. var orgs []*api.Organization
  68. DecodeJSON(t, resp, &orgs)
  69. user3 := unittest.AssertExistsAndLoadBean(t, &models.User{Name: "user3"}).(*models.User)
  70. assert.Equal(t, []*api.Organization{
  71. {
  72. ID: 3,
  73. UserName: user3.Name,
  74. FullName: user3.FullName,
  75. AvatarURL: user3.AvatarLink(),
  76. Description: "",
  77. Website: "",
  78. Location: "",
  79. Visibility: "public",
  80. },
  81. }, orgs)
  82. }