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  }