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.

processorhelper_test.go 2.0KB

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