@@ -6,15 +6,48 @@ package markup
6
6
7
7
import (
8
8
"context"
9
+ "net/http"
9
10
"testing"
10
11
12
+ "code.gitea.io/gitea/models/db"
11
13
"code.gitea.io/gitea/models/unittest"
14
+ "code.gitea.io/gitea/models/user"
15
+ gitea_context "code.gitea.io/gitea/modules/context"
12
16
13
17
"github.com/stretchr/testify/assert"
14
18
)
15
19
16
20
func TestProcessorHelper (t * testing.T ) {
17
21
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 ))
20
53
}
0 commit comments