code.gitea.io/gitea@v1.22.3/services/user/block_test.go (about)

     1  // Copyright 2024 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package user
     5  
     6  import (
     7  	"testing"
     8  
     9  	"code.gitea.io/gitea/models/db"
    10  	"code.gitea.io/gitea/models/unittest"
    11  	user_model "code.gitea.io/gitea/models/user"
    12  
    13  	"github.com/stretchr/testify/assert"
    14  )
    15  
    16  func TestCanBlockUser(t *testing.T) {
    17  	assert.NoError(t, unittest.PrepareTestDatabase())
    18  
    19  	user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
    20  	user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
    21  	user4 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4})
    22  	user29 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 29})
    23  	org3 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3})
    24  
    25  	// Doer can't self block
    26  	assert.False(t, CanBlockUser(db.DefaultContext, user1, user2, user1))
    27  	// Blocker can't be blockee
    28  	assert.False(t, CanBlockUser(db.DefaultContext, user1, user2, user2))
    29  	// Can't block already blocked user
    30  	assert.False(t, CanBlockUser(db.DefaultContext, user1, user2, user29))
    31  	// Blockee can't be an organization
    32  	assert.False(t, CanBlockUser(db.DefaultContext, user1, user2, org3))
    33  	// Doer must be blocker or admin
    34  	assert.False(t, CanBlockUser(db.DefaultContext, user2, user4, user29))
    35  	// Organization can't block a member
    36  	assert.False(t, CanBlockUser(db.DefaultContext, user1, org3, user4))
    37  	// Doer must be organization owner or admin if blocker is an organization
    38  	assert.False(t, CanBlockUser(db.DefaultContext, user4, org3, user2))
    39  
    40  	assert.True(t, CanBlockUser(db.DefaultContext, user1, user2, user4))
    41  	assert.True(t, CanBlockUser(db.DefaultContext, user2, user2, user4))
    42  	assert.True(t, CanBlockUser(db.DefaultContext, user2, org3, user29))
    43  }
    44  
    45  func TestCanUnblockUser(t *testing.T) {
    46  	assert.NoError(t, unittest.PrepareTestDatabase())
    47  
    48  	user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
    49  	user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
    50  	user28 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 28})
    51  	user29 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 29})
    52  	org17 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 17})
    53  
    54  	// Doer can't self unblock
    55  	assert.False(t, CanUnblockUser(db.DefaultContext, user1, user2, user1))
    56  	// Can't unblock not blocked user
    57  	assert.False(t, CanUnblockUser(db.DefaultContext, user1, user2, user28))
    58  	// Doer must be blocker or admin
    59  	assert.False(t, CanUnblockUser(db.DefaultContext, user28, user2, user29))
    60  	// Doer must be organization owner or admin if blocker is an organization
    61  	assert.False(t, CanUnblockUser(db.DefaultContext, user2, org17, user28))
    62  
    63  	assert.True(t, CanUnblockUser(db.DefaultContext, user1, user2, user29))
    64  	assert.True(t, CanUnblockUser(db.DefaultContext, user2, user2, user29))
    65  	assert.True(t, CanUnblockUser(db.DefaultContext, user1, org17, user28))
    66  }