gitea源码

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package markup
  4. import (
  5. "net/http"
  6. "net/http/httptest"
  7. "testing"
  8. "code.gitea.io/gitea/models/unittest"
  9. "code.gitea.io/gitea/models/user"
  10. gitea_context "code.gitea.io/gitea/services/context"
  11. "code.gitea.io/gitea/services/contexttest"
  12. "github.com/stretchr/testify/assert"
  13. )
  14. func TestRenderHelperMention(t *testing.T) {
  15. assert.NoError(t, unittest.PrepareTestDatabase())
  16. userPublic := "user1"
  17. userPrivate := "user31"
  18. userLimited := "user33"
  19. userNoSuch := "no-such-user"
  20. unittest.AssertCount(t, &user.User{Name: userPublic}, 1)
  21. unittest.AssertCount(t, &user.User{Name: userPrivate}, 1)
  22. unittest.AssertCount(t, &user.User{Name: userLimited}, 1)
  23. unittest.AssertCount(t, &user.User{Name: userNoSuch}, 0)
  24. // when using general context, use user's visibility to check
  25. assert.True(t, FormalRenderHelperFuncs().IsUsernameMentionable(t.Context(), userPublic))
  26. assert.False(t, FormalRenderHelperFuncs().IsUsernameMentionable(t.Context(), userLimited))
  27. assert.False(t, FormalRenderHelperFuncs().IsUsernameMentionable(t.Context(), userPrivate))
  28. assert.False(t, FormalRenderHelperFuncs().IsUsernameMentionable(t.Context(), userNoSuch))
  29. // when using web context, use user.IsUserVisibleToViewer to check
  30. req, err := http.NewRequest(http.MethodGet, "/", nil)
  31. assert.NoError(t, err)
  32. base := gitea_context.NewBaseContextForTest(httptest.NewRecorder(), req)
  33. giteaCtx := gitea_context.NewWebContext(base, &contexttest.MockRender{}, nil)
  34. assert.True(t, FormalRenderHelperFuncs().IsUsernameMentionable(giteaCtx, userPublic))
  35. assert.False(t, FormalRenderHelperFuncs().IsUsernameMentionable(giteaCtx, userPrivate))
  36. giteaCtx.Doer, err = user.GetUserByName(t.Context(), userPrivate)
  37. assert.NoError(t, err)
  38. assert.True(t, FormalRenderHelperFuncs().IsUsernameMentionable(giteaCtx, userPublic))
  39. assert.True(t, FormalRenderHelperFuncs().IsUsernameMentionable(giteaCtx, userPrivate))
  40. }