2022-05-11 13:09:36 +03:00
// Copyright 2022 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2022-05-11 13:09:36 +03:00
2022-06-06 11:01:49 +03:00
package repo_test
2022-05-11 13:09:36 +03:00
import (
"testing"
"code.gitea.io/gitea/models/db"
2022-06-15 10:02:00 +03:00
"code.gitea.io/gitea/models/perm"
access_model "code.gitea.io/gitea/models/perm/access"
2022-06-06 11:01:49 +03:00
repo_model "code.gitea.io/gitea/models/repo"
2022-05-11 13:09:36 +03:00
"code.gitea.io/gitea/models/unittest"
"github.com/stretchr/testify/assert"
)
func TestRepository_GetCollaborators ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
test := func ( repoID int64 ) {
2022-08-16 05:22:25 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : repoID } )
2022-06-06 11:01:49 +03:00
collaborators , err := repo_model . GetCollaborators ( db . DefaultContext , repo . ID , db . ListOptions { } )
2022-05-11 13:09:36 +03:00
assert . NoError ( t , err )
2022-06-06 11:01:49 +03:00
expectedLen , err := db . GetEngine ( db . DefaultContext ) . Count ( & repo_model . Collaboration { RepoID : repoID } )
2022-05-11 13:09:36 +03:00
assert . NoError ( t , err )
assert . Len ( t , collaborators , int ( expectedLen ) )
for _ , collaborator := range collaborators {
assert . EqualValues ( t , collaborator . User . ID , collaborator . Collaboration . UserID )
assert . EqualValues ( t , repoID , collaborator . Collaboration . RepoID )
}
}
test ( 1 )
test ( 2 )
test ( 3 )
test ( 4 )
}
func TestRepository_IsCollaborator ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
test := func ( repoID , userID int64 , expected bool ) {
2022-08-16 05:22:25 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : repoID } )
2022-06-06 11:01:49 +03:00
actual , err := repo_model . IsCollaborator ( db . DefaultContext , repo . ID , userID )
2022-05-11 13:09:36 +03:00
assert . NoError ( t , err )
assert . Equal ( t , expected , actual )
}
test ( 3 , 2 , true )
test ( 3 , unittest . NonexistentID , false )
test ( 4 , 2 , false )
test ( 4 , 4 , true )
}
2022-06-15 10:02:00 +03:00
func TestRepository_ChangeCollaborationAccessMode ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2022-08-16 05:22:25 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 4 } )
2022-06-15 10:02:00 +03:00
assert . NoError ( t , repo_model . ChangeCollaborationAccessMode ( repo , 4 , perm . AccessModeAdmin ) )
2022-08-16 05:22:25 +03:00
collaboration := unittest . AssertExistsAndLoadBean ( t , & repo_model . Collaboration { RepoID : repo . ID , UserID : 4 } )
2022-06-15 10:02:00 +03:00
assert . EqualValues ( t , perm . AccessModeAdmin , collaboration . Mode )
2022-08-16 05:22:25 +03:00
access := unittest . AssertExistsAndLoadBean ( t , & access_model . Access { UserID : 4 , RepoID : repo . ID } )
2022-06-15 10:02:00 +03:00
assert . EqualValues ( t , perm . AccessModeAdmin , access . Mode )
assert . NoError ( t , repo_model . ChangeCollaborationAccessMode ( repo , 4 , perm . AccessModeAdmin ) )
assert . NoError ( t , repo_model . ChangeCollaborationAccessMode ( repo , unittest . NonexistentID , perm . AccessModeAdmin ) )
unittest . CheckConsistencyFor ( t , & repo_model . Repository { ID : repo . ID } )
}