@ -10,6 +10,7 @@ import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/auth"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/test"
"github.com/stretchr/testify/assert"
@ -59,3 +60,104 @@ func TestAddReadWriteOnlyDeployKey(t *testing.T) {
Mode : models . AccessModeWrite ,
} )
}
func TestCollaborationPost ( t * testing . T ) {
models . PrepareTestEnv ( t )
ctx := test . MockContext ( t , "user2/repo1/issues/labels" )
test . LoadUser ( t , ctx , 2 )
test . LoadUser ( t , ctx , 4 )
test . LoadRepo ( t , ctx , 1 )
ctx . Req . Form . Set ( "collaborator" , "user4" )
u := & models . User {
LowerName : "user2" ,
Type : models . UserTypeIndividual ,
}
re := & models . Repository {
ID : 2 ,
Owner : u ,
}
repo := & context . Repository {
Owner : u ,
Repository : re ,
}
ctx . Repo = repo
CollaborationPost ( ctx )
assert . EqualValues ( t , http . StatusFound , ctx . Resp . Status ( ) )
exists , err := re . IsCollaborator ( 4 )
assert . NoError ( t , err )
assert . True ( t , exists )
}
func TestCollaborationPost_AddCollaboratorTwice ( t * testing . T ) {
models . PrepareTestEnv ( t )
ctx := test . MockContext ( t , "user2/repo1/issues/labels" )
test . LoadUser ( t , ctx , 2 )
test . LoadUser ( t , ctx , 4 )
test . LoadRepo ( t , ctx , 1 )
ctx . Req . Form . Set ( "collaborator" , "user4" )
u := & models . User {
LowerName : "user2" ,
Type : models . UserTypeIndividual ,
}
re := & models . Repository {
ID : 2 ,
Owner : u ,
}
repo := & context . Repository {
Owner : u ,
Repository : re ,
}
ctx . Repo = repo
CollaborationPost ( ctx )
assert . EqualValues ( t , http . StatusFound , ctx . Resp . Status ( ) )
exists , err := re . IsCollaborator ( 4 )
assert . NoError ( t , err )
assert . True ( t , exists )
// Try adding the same collaborator again
CollaborationPost ( ctx )
assert . EqualValues ( t , http . StatusFound , ctx . Resp . Status ( ) )
assert . NotEmpty ( t , ctx . Flash . ErrorMsg )
}
func TestCollaborationPost_NonExistentUser ( t * testing . T ) {
models . PrepareTestEnv ( t )
ctx := test . MockContext ( t , "user2/repo1/issues/labels" )
test . LoadUser ( t , ctx , 2 )
test . LoadRepo ( t , ctx , 1 )
ctx . Req . Form . Set ( "collaborator" , "user34" )
repo := & context . Repository {
Owner : & models . User {
LowerName : "user2" ,
} ,
}
ctx . Repo = repo
CollaborationPost ( ctx )
assert . EqualValues ( t , http . StatusFound , ctx . Resp . Status ( ) )
assert . NotEmpty ( t , ctx . Flash . ErrorMsg )
}