gitea源码

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