Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

api_user_orgs_test.go 2.6KB

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