@@ -6,15 +6,48 @@ package markup
66
77import (
88 "context"
9+ "net/http"
910 "testing"
1011
12+ "code.gitea.io/gitea/models/db"
1113 "code.gitea.io/gitea/models/unittest"
14+ "code.gitea.io/gitea/models/user"
15+ gitea_context "code.gitea.io/gitea/modules/context"
1216
1317 "github.com/stretchr/testify/assert"
1418)
1519
1620func TestProcessorHelper (t * testing.T ) {
1721 assert .NoError (t , unittest .PrepareTestDatabase ())
18- assert .True (t , ProcessorHelper ().IsUsernameMentionable (context .Background (), "user10" ))
19- assert .False (t , ProcessorHelper ().IsUsernameMentionable (context .Background (), "no-such-user" ))
22+
23+ userPublic := "user1"
24+ userPrivate := "user31"
25+ userLimited := "user33"
26+ userNoSuch := "no-such-user"
27+
28+ unittest .AssertCount (t , & user.User {Name : userPublic }, 1 )
29+ unittest .AssertCount (t , & user.User {Name : userPrivate }, 1 )
30+ unittest .AssertCount (t , & user.User {Name : userLimited }, 1 )
31+ unittest .AssertCount (t , & user.User {Name : userNoSuch }, 0 )
32+
33+ // when using general context, use user's visibility to check
34+ assert .True (t , ProcessorHelper ().IsUsernameMentionable (context .Background (), userPublic ))
35+ assert .False (t , ProcessorHelper ().IsUsernameMentionable (context .Background (), userLimited ))
36+ assert .False (t , ProcessorHelper ().IsUsernameMentionable (context .Background (), userPrivate ))
37+ assert .False (t , ProcessorHelper ().IsUsernameMentionable (context .Background (), userNoSuch ))
38+
39+ // when using web context, use user.IsUserVisibleToViewer to check
40+ var err error
41+ giteaCtx := & gitea_context.Context {}
42+ giteaCtx .Req , err = http .NewRequest ("GET" , "/" , nil )
43+ assert .NoError (t , err )
44+
45+ giteaCtx .Doer = nil
46+ assert .True (t , ProcessorHelper ().IsUsernameMentionable (giteaCtx , userPublic ))
47+ assert .False (t , ProcessorHelper ().IsUsernameMentionable (giteaCtx , userPrivate ))
48+
49+ giteaCtx .Doer , err = user .GetUserByName (db .DefaultContext , userPrivate )
50+ assert .NoError (t , err )
51+ assert .True (t , ProcessorHelper ().IsUsernameMentionable (giteaCtx , userPublic ))
52+ assert .True (t , ProcessorHelper ().IsUsernameMentionable (giteaCtx , userPrivate ))
2053}
0 commit comments