@@ -498,6 +498,85 @@ func TestAPIRepoTransfer(t *testing.T) {
498498 _ = models .DeleteRepository (user , repo .OwnerID , repo .ID )
499499}
500500
501+ func transfer (t * testing.T ) * repo_model.Repository {
502+ //create repo to move
503+ user := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 2 }).(* user_model.User )
504+ session := loginUser (t , user .Name )
505+ token := getTokenForLoggedInUser (t , session )
506+ repoName := "moveME"
507+ apiRepo := new (api.Repository )
508+ req := NewRequestWithJSON (t , "POST" , fmt .Sprintf ("/api/v1/user/repos?token=%s" , token ), & api.CreateRepoOption {
509+ Name : repoName ,
510+ Description : "repo move around" ,
511+ Private : false ,
512+ Readme : "Default" ,
513+ AutoInit : true ,
514+ })
515+
516+ resp := session .MakeRequest (t , req , http .StatusCreated )
517+ DecodeJSON (t , resp , apiRepo )
518+
519+ repo := unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : apiRepo .ID }).(* repo_model.Repository )
520+ req = NewRequestWithJSON (t , "POST" , fmt .Sprintf ("/api/v1/repos/%s/%s/transfer?token=%s" , repo .OwnerName , repo .Name , token ), & api.TransferRepoOption {
521+ NewOwner : "user4" ,
522+ })
523+ session .MakeRequest (t , req , http .StatusCreated )
524+
525+ return repo
526+ }
527+
528+ func TestAPIAcceptTransfer (t * testing.T ) {
529+ defer prepareTestEnv (t )()
530+
531+ repo := transfer (t )
532+
533+ // try to accept with not authorized user
534+ session := loginUser (t , "user2" )
535+ token := getTokenForLoggedInUser (t , session )
536+ req := NewRequest (t , "POST" , fmt .Sprintf ("/api/v1/repos/%s/%s/transfer/reject?token=%s" , repo .OwnerName , repo .Name , token ))
537+ session .MakeRequest (t , req , http .StatusForbidden )
538+
539+ // try to accept repo that's not marked as transferred
540+ req = NewRequest (t , "POST" , fmt .Sprintf ("/api/v1/repos/%s/%s/transfer/accept?token=%s" , "user2" , "repo1" , token ))
541+ session .MakeRequest (t , req , http .StatusNotFound )
542+
543+ // accept transfer
544+ session = loginUser (t , "user4" )
545+ token = getTokenForLoggedInUser (t , session )
546+
547+ req = NewRequest (t , "POST" , fmt .Sprintf ("/api/v1/repos/%s/%s/transfer/accept?token=%s" , repo .OwnerName , repo .Name , token ))
548+ resp := session .MakeRequest (t , req , http .StatusAccepted )
549+ apiRepo := new (api.Repository )
550+ DecodeJSON (t , resp , apiRepo )
551+ assert .Equal (t , "user4" , apiRepo .Owner .UserName )
552+ }
553+
554+ func TestAPIRejectTransfer (t * testing.T ) {
555+ defer prepareTestEnv (t )()
556+
557+ repo := transfer (t )
558+
559+ // try to reject with not authorized user
560+ session := loginUser (t , "user2" )
561+ token := getTokenForLoggedInUser (t , session )
562+ req := NewRequest (t , "POST" , fmt .Sprintf ("/api/v1/repos/%s/%s/transfer/reject?token=%s" , repo .OwnerName , repo .Name , token ))
563+ session .MakeRequest (t , req , http .StatusForbidden )
564+
565+ // try to reject repo that's not marked as transferred
566+ req = NewRequest (t , "POST" , fmt .Sprintf ("/api/v1/repos/%s/%s/transfer/reject?token=%s" , "user2" , "repo1" , token ))
567+ session .MakeRequest (t , req , http .StatusNotFound )
568+
569+ // reject transfer
570+ session = loginUser (t , "user4" )
571+ token = getTokenForLoggedInUser (t , session )
572+
573+ req = NewRequest (t , "POST" , fmt .Sprintf ("/api/v1/repos/%s/%s/transfer/reject?token=%s" , repo .OwnerName , repo .Name , token ))
574+ resp := session .MakeRequest (t , req , http .StatusOK )
575+ apiRepo := new (api.Repository )
576+ DecodeJSON (t , resp , apiRepo )
577+ assert .Equal (t , "user2" , apiRepo .Owner .UserName )
578+ }
579+
501580func TestAPIGenerateRepo (t * testing.T ) {
502581 defer prepareTestEnv (t )()
503582
0 commit comments