mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-31 06:21:11 +00:00 
			
		
		
		
	- When someone gets blocked, remove all pending repository transfers from the blocked user to the doer. - Do not allow to start transferring repositories to the doer as blocked user. - Added unit testing. - Added integration testing. (cherry picked from commit8a3caac330) (cherry picked from commita92b4cfeb6) (cherry picked from commitacaaaf07d9) (cherry picked from commit735818863c) (cherry picked from commitf50fa43b32) (cherry picked from commite166836433)
		
			
				
	
	
		
			70 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2021 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package models
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"code.gitea.io/gitea/models/db"
 | |
| 	repo_model "code.gitea.io/gitea/models/repo"
 | |
| 	"code.gitea.io/gitea/models/unittest"
 | |
| 	user_model "code.gitea.io/gitea/models/user"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestRepositoryTransfer(t *testing.T) {
 | |
| 	assert.NoError(t, unittest.PrepareTestDatabase())
 | |
| 
 | |
| 	doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3})
 | |
| 	repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 3})
 | |
| 
 | |
| 	transfer, err := GetPendingRepositoryTransfer(db.DefaultContext, repo)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.NotNil(t, transfer)
 | |
| 
 | |
| 	// Cancel transfer
 | |
| 	assert.NoError(t, CancelRepositoryTransfer(db.DefaultContext, repo))
 | |
| 
 | |
| 	transfer, err = GetPendingRepositoryTransfer(db.DefaultContext, repo)
 | |
| 	assert.Error(t, err)
 | |
| 	assert.Nil(t, transfer)
 | |
| 	assert.True(t, IsErrNoPendingTransfer(err))
 | |
| 
 | |
| 	user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
 | |
| 
 | |
| 	assert.NoError(t, CreatePendingRepositoryTransfer(db.DefaultContext, doer, user2, repo.ID, nil))
 | |
| 
 | |
| 	transfer, err = GetPendingRepositoryTransfer(db.DefaultContext, repo)
 | |
| 	assert.Nil(t, err)
 | |
| 	assert.NoError(t, transfer.LoadAttributes(db.DefaultContext))
 | |
| 	assert.Equal(t, "user2", transfer.Recipient.Name)
 | |
| 
 | |
| 	org6 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
 | |
| 
 | |
| 	// Only transfer can be started at any given time
 | |
| 	err = CreatePendingRepositoryTransfer(db.DefaultContext, doer, org6, repo.ID, nil)
 | |
| 	assert.Error(t, err)
 | |
| 	assert.True(t, IsErrRepoTransferInProgress(err))
 | |
| 
 | |
| 	// Unknown user
 | |
| 	err = CreatePendingRepositoryTransfer(db.DefaultContext, doer, &user_model.User{ID: 1000, LowerName: "user1000"}, repo.ID, nil)
 | |
| 	assert.Error(t, err)
 | |
| 
 | |
| 	// Cancel transfer
 | |
| 	assert.NoError(t, CancelRepositoryTransfer(db.DefaultContext, repo))
 | |
| }
 | |
| 
 | |
| func TestGetPendingTransferIDs(t *testing.T) {
 | |
| 	assert.NoError(t, unittest.PrepareTestDatabase())
 | |
| 	doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3})
 | |
| 	reciepient := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
 | |
| 	pendingTransfer := unittest.AssertExistsAndLoadBean(t, &RepoTransfer{RecipientID: reciepient.ID, DoerID: doer.ID})
 | |
| 
 | |
| 	pendingTransferIDs, err := GetPendingTransferIDs(db.DefaultContext, reciepient.ID, doer.ID)
 | |
| 	assert.NoError(t, err)
 | |
| 	if assert.Len(t, pendingTransferIDs, 1) {
 | |
| 		assert.EqualValues(t, pendingTransfer.ID, pendingTransferIDs[0])
 | |
| 	}
 | |
| }
 |