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 }