2020-04-05 09:20:50 +03:00
// Copyright 2020 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
2017-01-09 06:08:36 +03:00
package models
import (
2017-05-26 04:38:18 +03:00
"path"
2017-01-09 06:08:36 +03:00
"testing"
2021-12-10 04:27:50 +03:00
repo_model "code.gitea.io/gitea/models/repo"
2021-11-12 17:36:47 +03:00
"code.gitea.io/gitea/models/unittest"
2021-11-24 12:49:20 +03:00
user_model "code.gitea.io/gitea/models/user"
2017-01-09 06:08:36 +03:00
"code.gitea.io/gitea/modules/setting"
2017-02-28 04:42:10 +03:00
2017-01-09 06:08:36 +03:00
"github.com/stretchr/testify/assert"
)
func TestAction_GetRepoPath ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2021-12-10 04:27:50 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { } ) . ( * repo_model . Repository )
2021-11-24 12:49:20 +03:00
owner := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : repo . OwnerID } ) . ( * user_model . User )
2017-05-26 04:38:18 +03:00
action := & Action { RepoID : repo . ID }
assert . Equal ( t , path . Join ( owner . Name , repo . Name ) , action . GetRepoPath ( ) )
2017-01-09 06:08:36 +03:00
}
func TestAction_GetRepoLink ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2021-12-10 04:27:50 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { } ) . ( * repo_model . Repository )
2021-11-24 12:49:20 +03:00
owner := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : repo . OwnerID } ) . ( * user_model . User )
2017-05-26 04:38:18 +03:00
action := & Action { RepoID : repo . ID }
2021-02-20 00:36:43 +03:00
setting . AppSubURL = "/suburl"
2017-05-26 04:38:18 +03:00
expected := path . Join ( setting . AppSubURL , owner . Name , repo . Name )
assert . Equal ( t , expected , action . GetRepoLink ( ) )
2017-01-09 06:08:36 +03:00
}
func TestGetFeeds ( t * testing . T ) {
// test with an individual user
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2021-11-24 12:49:20 +03:00
user := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : 2 } ) . ( * user_model . User )
2017-01-09 06:08:36 +03:00
2017-06-02 03:42:25 +03:00
actions , err := GetFeeds ( GetFeedsOptions {
2020-01-13 20:33:46 +03:00
RequestedUser : user ,
Actor : user ,
IncludePrivate : true ,
OnlyPerformedBy : false ,
IncludeDeleted : true ,
2017-06-02 03:42:25 +03:00
} )
2017-01-09 06:08:36 +03:00
assert . NoError ( t , err )
2017-08-28 12:17:45 +03:00
if assert . Len ( t , actions , 1 ) {
assert . EqualValues ( t , 1 , actions [ 0 ] . ID )
assert . EqualValues ( t , user . ID , actions [ 0 ] . UserID )
}
2017-06-02 03:42:25 +03:00
actions , err = GetFeeds ( GetFeedsOptions {
2020-01-13 20:33:46 +03:00
RequestedUser : user ,
Actor : user ,
IncludePrivate : false ,
OnlyPerformedBy : false ,
2017-06-02 03:42:25 +03:00
} )
2017-01-09 06:08:36 +03:00
assert . NoError ( t , err )
assert . Len ( t , actions , 0 )
}
func TestGetFeeds2 ( t * testing . T ) {
// test with an organization user
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2021-11-24 12:49:20 +03:00
org := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : 3 } ) . ( * user_model . User )
user := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : 2 } ) . ( * user_model . User )
2017-06-02 03:42:25 +03:00
actions , err := GetFeeds ( GetFeedsOptions {
2020-01-13 20:33:46 +03:00
RequestedUser : org ,
Actor : user ,
IncludePrivate : true ,
OnlyPerformedBy : false ,
IncludeDeleted : true ,
2017-06-02 03:42:25 +03:00
} )
2017-01-09 06:08:36 +03:00
assert . NoError ( t , err )
assert . Len ( t , actions , 1 )
2017-08-28 12:17:45 +03:00
if assert . Len ( t , actions , 1 ) {
assert . EqualValues ( t , 2 , actions [ 0 ] . ID )
assert . EqualValues ( t , org . ID , actions [ 0 ] . UserID )
}
2017-06-02 03:42:25 +03:00
actions , err = GetFeeds ( GetFeedsOptions {
2020-01-13 20:33:46 +03:00
RequestedUser : org ,
Actor : user ,
IncludePrivate : false ,
OnlyPerformedBy : false ,
IncludeDeleted : true ,
2017-06-02 03:42:25 +03:00
} )
2017-01-09 06:08:36 +03:00
assert . NoError ( t , err )
2017-02-28 04:42:10 +03:00
assert . Len ( t , actions , 0 )
2017-01-09 06:08:36 +03:00
}
2021-12-12 18:48:20 +03:00
2022-03-10 17:54:51 +03:00
func TestActivityReadable ( t * testing . T ) {
tt := [ ] struct {
desc string
user * user_model . User
doer * user_model . User
result bool
} { {
desc : "user should see own activity" ,
user : & user_model . User { ID : 1 } ,
doer : & user_model . User { ID : 1 } ,
result : true ,
} , {
desc : "anon should see activity if public" ,
user : & user_model . User { ID : 1 } ,
result : true ,
} , {
desc : "anon should NOT see activity" ,
user : & user_model . User { ID : 1 , KeepActivityPrivate : true } ,
result : false ,
} , {
desc : "user should see own activity if private too" ,
user : & user_model . User { ID : 1 , KeepActivityPrivate : true } ,
doer : & user_model . User { ID : 1 } ,
result : true ,
} , {
desc : "other user should NOT see activity" ,
user : & user_model . User { ID : 1 , KeepActivityPrivate : true } ,
doer : & user_model . User { ID : 2 } ,
result : false ,
} , {
desc : "admin should see activity" ,
user : & user_model . User { ID : 1 , KeepActivityPrivate : true } ,
doer : & user_model . User { ID : 2 , IsAdmin : true } ,
result : true ,
} }
for _ , test := range tt {
assert . Equal ( t , test . result , activityReadable ( test . user , test . doer ) , test . desc )
}
}
2021-12-12 18:48:20 +03:00
func TestNotifyWatchers ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
action := & Action {
ActUserID : 8 ,
RepoID : 1 ,
OpType : ActionStarRepo ,
}
assert . NoError ( t , NotifyWatchers ( action ) )
// One watchers are inactive, thus action is only created for user 8, 1, 4, 11
unittest . AssertExistsAndLoadBean ( t , & Action {
ActUserID : action . ActUserID ,
UserID : 8 ,
RepoID : action . RepoID ,
OpType : action . OpType ,
} )
unittest . AssertExistsAndLoadBean ( t , & Action {
ActUserID : action . ActUserID ,
UserID : 1 ,
RepoID : action . RepoID ,
OpType : action . OpType ,
} )
unittest . AssertExistsAndLoadBean ( t , & Action {
ActUserID : action . ActUserID ,
UserID : 4 ,
RepoID : action . RepoID ,
OpType : action . OpType ,
} )
unittest . AssertExistsAndLoadBean ( t , & Action {
ActUserID : action . ActUserID ,
UserID : 11 ,
RepoID : action . RepoID ,
OpType : action . OpType ,
} )
}