2017-02-24 04:37:38 +03:00
// Copyright 2017 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.
package models
import (
"testing"
2021-09-19 14:49:59 +03:00
"code.gitea.io/gitea/models/db"
2021-11-12 17:36:47 +03:00
"code.gitea.io/gitea/models/unittest"
2017-02-24 04:37:38 +03:00
"github.com/stretchr/testify/assert"
)
func TestRepository_AddCollaborator ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-02-24 04:37:38 +03:00
testSuccess := func ( repoID , userID int64 ) {
2021-11-16 11:53:21 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & Repository { ID : repoID } ) . ( * Repository )
2017-02-24 04:37:38 +03:00
assert . NoError ( t , repo . GetOwner ( ) )
2021-11-16 11:53:21 +03:00
user := unittest . AssertExistsAndLoadBean ( t , & User { ID : userID } ) . ( * User )
2017-02-24 04:37:38 +03:00
assert . NoError ( t , repo . AddCollaborator ( user ) )
2021-11-16 11:53:21 +03:00
unittest . CheckConsistencyFor ( t , & Repository { ID : repoID } , & User { ID : userID } )
2017-02-24 04:37:38 +03:00
}
testSuccess ( 1 , 4 )
testSuccess ( 1 , 4 )
testSuccess ( 3 , 4 )
}
func TestRepository_GetCollaborators ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-02-24 04:37:38 +03:00
test := func ( repoID int64 ) {
2021-11-16 11:53:21 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & Repository { ID : repoID } ) . ( * Repository )
2021-09-24 14:32:56 +03:00
collaborators , err := repo . GetCollaborators ( db . ListOptions { } )
2017-02-24 04:37:38 +03:00
assert . NoError ( t , err )
2021-09-23 18:45:36 +03:00
expectedLen , err := db . GetEngine ( db . DefaultContext ) . Count ( & Collaboration { RepoID : repoID } )
2017-02-24 04:37:38 +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 ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-02-24 04:37:38 +03:00
test := func ( repoID , userID int64 , expected bool ) {
2021-11-16 11:53:21 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & Repository { ID : repoID } ) . ( * Repository )
2017-02-24 04:37:38 +03:00
actual , err := repo . IsCollaborator ( userID )
assert . NoError ( t , err )
assert . Equal ( t , expected , actual )
}
test ( 3 , 2 , true )
2021-11-16 11:53:21 +03:00
test ( 3 , unittest . NonexistentID , false )
2017-02-24 04:37:38 +03:00
test ( 4 , 2 , false )
test ( 4 , 4 , true )
}
func TestRepository_ChangeCollaborationAccessMode ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-02-24 04:37:38 +03:00
2021-11-16 11:53:21 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & Repository { ID : 4 } ) . ( * Repository )
2017-02-24 04:37:38 +03:00
assert . NoError ( t , repo . ChangeCollaborationAccessMode ( 4 , AccessModeAdmin ) )
2021-11-16 11:53:21 +03:00
collaboration := unittest . AssertExistsAndLoadBean ( t , & Collaboration { RepoID : repo . ID , UserID : 4 } ) . ( * Collaboration )
2017-02-24 04:37:38 +03:00
assert . EqualValues ( t , AccessModeAdmin , collaboration . Mode )
2021-11-16 11:53:21 +03:00
access := unittest . AssertExistsAndLoadBean ( t , & Access { UserID : 4 , RepoID : repo . ID } ) . ( * Access )
2017-02-24 04:37:38 +03:00
assert . EqualValues ( t , AccessModeAdmin , access . Mode )
assert . NoError ( t , repo . ChangeCollaborationAccessMode ( 4 , AccessModeAdmin ) )
2021-11-16 11:53:21 +03:00
assert . NoError ( t , repo . ChangeCollaborationAccessMode ( unittest . NonexistentID , AccessModeAdmin ) )
2017-02-24 04:37:38 +03:00
2021-11-16 11:53:21 +03:00
unittest . CheckConsistencyFor ( t , & Repository { ID : repo . ID } )
2017-02-24 04:37:38 +03:00
}
func TestRepository_DeleteCollaboration ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2017-02-24 04:37:38 +03:00
2021-11-16 11:53:21 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & Repository { ID : 4 } ) . ( * Repository )
2017-02-24 04:37:38 +03:00
assert . NoError ( t , repo . GetOwner ( ) )
assert . NoError ( t , repo . DeleteCollaboration ( 4 ) )
2021-11-16 11:53:21 +03:00
unittest . AssertNotExistsBean ( t , & Collaboration { RepoID : repo . ID , UserID : 4 } )
2017-02-24 04:37:38 +03:00
assert . NoError ( t , repo . DeleteCollaboration ( 4 ) )
2021-11-16 11:53:21 +03:00
unittest . AssertNotExistsBean ( t , & Collaboration { RepoID : repo . ID , UserID : 4 } )
2017-02-24 04:37:38 +03:00
2021-11-16 11:53:21 +03:00
unittest . CheckConsistencyFor ( t , & Repository { ID : repo . ID } )
2017-02-24 04:37:38 +03:00
}