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