2022-10-22 20:15:52 +03:00
// Copyright 2022 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2022-10-22 20:15:52 +03:00
package markup
import (
"context"
2022-10-23 12:13:52 +03:00
"net/http"
2023-05-21 04:50:53 +03:00
"net/http/httptest"
2022-10-22 20:15:52 +03:00
"testing"
2022-10-23 12:13:52 +03:00
"code.gitea.io/gitea/models/db"
2022-10-22 20:15:52 +03:00
"code.gitea.io/gitea/models/unittest"
2022-10-23 12:13:52 +03:00
"code.gitea.io/gitea/models/user"
2024-02-27 10:12:22 +03:00
gitea_context "code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/contexttest"
2022-10-22 20:15:52 +03:00
"github.com/stretchr/testify/assert"
)
func TestProcessorHelper ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2022-10-23 12:13:52 +03:00
userPublic := "user1"
userPrivate := "user31"
userLimited := "user33"
userNoSuch := "no-such-user"
unittest . AssertCount ( t , & user . User { Name : userPublic } , 1 )
unittest . AssertCount ( t , & user . User { Name : userPrivate } , 1 )
unittest . AssertCount ( t , & user . User { Name : userLimited } , 1 )
unittest . AssertCount ( t , & user . User { Name : userNoSuch } , 0 )
// when using general context, use user's visibility to check
assert . True ( t , ProcessorHelper ( ) . IsUsernameMentionable ( context . Background ( ) , userPublic ) )
assert . False ( t , ProcessorHelper ( ) . IsUsernameMentionable ( context . Background ( ) , userLimited ) )
assert . False ( t , ProcessorHelper ( ) . IsUsernameMentionable ( context . Background ( ) , userPrivate ) )
assert . False ( t , ProcessorHelper ( ) . IsUsernameMentionable ( context . Background ( ) , userNoSuch ) )
// when using web context, use user.IsUserVisibleToViewer to check
2023-05-21 04:50:53 +03:00
req , err := http . NewRequest ( "GET" , "/" , nil )
2022-10-23 12:13:52 +03:00
assert . NoError ( t , err )
2023-05-21 04:50:53 +03:00
base , baseCleanUp := gitea_context . NewBaseContext ( httptest . NewRecorder ( ) , req )
defer baseCleanUp ( )
2023-09-01 14:26:07 +03:00
giteaCtx := gitea_context . NewWebContext ( base , & contexttest . MockRender { } , nil )
2022-10-23 12:13:52 +03:00
assert . True ( t , ProcessorHelper ( ) . IsUsernameMentionable ( giteaCtx , userPublic ) )
assert . False ( t , ProcessorHelper ( ) . IsUsernameMentionable ( giteaCtx , userPrivate ) )
giteaCtx . Doer , err = user . GetUserByName ( db . DefaultContext , userPrivate )
assert . NoError ( t , err )
assert . True ( t , ProcessorHelper ( ) . IsUsernameMentionable ( giteaCtx , userPublic ) )
assert . True ( t , ProcessorHelper ( ) . IsUsernameMentionable ( giteaCtx , userPrivate ) )
2022-10-22 20:15:52 +03:00
}