@@ -498,6 +498,85 @@ func TestAPIRepoTransfer(t *testing.T) {
498
498
_ = models .DeleteRepository (user , repo .OwnerID , repo .ID )
499
499
}
500
500
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
+
501
580
func TestAPIGenerateRepo (t * testing.T ) {
502
581
defer prepareTestEnv (t )()
503
582
0 commit comments