mirror of https://github.com/go-gitea/gitea.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.8 KiB
66 lines
2.8 KiB
// Copyright 2024 The Gitea Authors. All rights reserved. |
|
// SPDX-License-Identifier: MIT |
|
|
|
package user |
|
|
|
import ( |
|
"testing" |
|
|
|
"code.gitea.io/gitea/models/db" |
|
"code.gitea.io/gitea/models/unittest" |
|
user_model "code.gitea.io/gitea/models/user" |
|
|
|
"github.com/stretchr/testify/assert" |
|
) |
|
|
|
func TestCanBlockUser(t *testing.T) { |
|
assert.NoError(t, unittest.PrepareTestDatabase()) |
|
|
|
user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) |
|
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) |
|
user4 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4}) |
|
user29 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 29}) |
|
org3 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3}) |
|
|
|
// Doer can't self block |
|
assert.False(t, CanBlockUser(db.DefaultContext, user1, user2, user1)) |
|
// Blocker can't be blockee |
|
assert.False(t, CanBlockUser(db.DefaultContext, user1, user2, user2)) |
|
// Can't block already blocked user |
|
assert.False(t, CanBlockUser(db.DefaultContext, user1, user2, user29)) |
|
// Blockee can't be an organization |
|
assert.False(t, CanBlockUser(db.DefaultContext, user1, user2, org3)) |
|
// Doer must be blocker or admin |
|
assert.False(t, CanBlockUser(db.DefaultContext, user2, user4, user29)) |
|
// Organization can't block a member |
|
assert.False(t, CanBlockUser(db.DefaultContext, user1, org3, user4)) |
|
// Doer must be organization owner or admin if blocker is an organization |
|
assert.False(t, CanBlockUser(db.DefaultContext, user4, org3, user2)) |
|
|
|
assert.True(t, CanBlockUser(db.DefaultContext, user1, user2, user4)) |
|
assert.True(t, CanBlockUser(db.DefaultContext, user2, user2, user4)) |
|
assert.True(t, CanBlockUser(db.DefaultContext, user2, org3, user29)) |
|
} |
|
|
|
func TestCanUnblockUser(t *testing.T) { |
|
assert.NoError(t, unittest.PrepareTestDatabase()) |
|
|
|
user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) |
|
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) |
|
user28 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 28}) |
|
user29 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 29}) |
|
org17 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 17}) |
|
|
|
// Doer can't self unblock |
|
assert.False(t, CanUnblockUser(db.DefaultContext, user1, user2, user1)) |
|
// Can't unblock not blocked user |
|
assert.False(t, CanUnblockUser(db.DefaultContext, user1, user2, user28)) |
|
// Doer must be blocker or admin |
|
assert.False(t, CanUnblockUser(db.DefaultContext, user28, user2, user29)) |
|
// Doer must be organization owner or admin if blocker is an organization |
|
assert.False(t, CanUnblockUser(db.DefaultContext, user2, org17, user28)) |
|
|
|
assert.True(t, CanUnblockUser(db.DefaultContext, user1, user2, user29)) |
|
assert.True(t, CanUnblockUser(db.DefaultContext, user2, user2, user29)) |
|
assert.True(t, CanUnblockUser(db.DefaultContext, user1, org17, user28)) |
|
}
|
|
|