loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at forgejo 113 lines 4.8 kB view raw
1// Copyright 2023 The Forgejo Authors. All rights reserved. 2// SPDX-License-Identifier: MIT 3 4package user 5 6import ( 7 "testing" 8 9 model "forgejo.org/models" 10 "forgejo.org/models/db" 11 issues_model "forgejo.org/models/issues" 12 repo_model "forgejo.org/models/repo" 13 "forgejo.org/models/unittest" 14 user_model "forgejo.org/models/user" 15 16 "github.com/stretchr/testify/assert" 17 "github.com/stretchr/testify/require" 18) 19 20// TestBlockUser will ensure that when you block a user, certain actions have 21// been taken, like unfollowing each other etc. 22func TestBlockUser(t *testing.T) { 23 require.NoError(t, unittest.PrepareTestDatabase()) 24 25 doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 5}) 26 blockedUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) 27 28 t.Run("Follow", func(t *testing.T) { 29 defer user_model.UnblockUser(db.DefaultContext, doer.ID, blockedUser.ID) 30 31 // Follow each other. 32 require.NoError(t, user_model.FollowUser(db.DefaultContext, doer.ID, blockedUser.ID)) 33 require.NoError(t, user_model.FollowUser(db.DefaultContext, blockedUser.ID, doer.ID)) 34 35 require.NoError(t, BlockUser(db.DefaultContext, doer.ID, blockedUser.ID)) 36 37 // Ensure they aren't following each other anymore. 38 assert.False(t, user_model.IsFollowing(db.DefaultContext, doer.ID, blockedUser.ID)) 39 assert.False(t, user_model.IsFollowing(db.DefaultContext, blockedUser.ID, doer.ID)) 40 }) 41 42 t.Run("Watch", func(t *testing.T) { 43 defer user_model.UnblockUser(db.DefaultContext, doer.ID, blockedUser.ID) 44 45 // Blocked user watch repository of doer. 46 repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{OwnerID: doer.ID}) 47 require.NoError(t, repo_model.WatchRepo(db.DefaultContext, blockedUser.ID, repo.ID, true)) 48 49 require.NoError(t, BlockUser(db.DefaultContext, doer.ID, blockedUser.ID)) 50 51 // Ensure blocked user isn't following doer's repository. 52 assert.False(t, repo_model.IsWatching(db.DefaultContext, blockedUser.ID, repo.ID)) 53 }) 54 55 t.Run("Collaboration", func(t *testing.T) { 56 doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 16}) 57 blockedUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 18}) 58 repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 22, OwnerID: doer.ID}) 59 repo2 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 21, OwnerID: doer.ID}) 60 defer user_model.UnblockUser(db.DefaultContext, doer.ID, blockedUser.ID) 61 62 isBlockedUserCollab := func(repo *repo_model.Repository) bool { 63 isCollaborator, err := repo_model.IsCollaborator(db.DefaultContext, repo.ID, blockedUser.ID) 64 require.NoError(t, err) 65 return isCollaborator 66 } 67 68 assert.True(t, isBlockedUserCollab(repo1)) 69 assert.True(t, isBlockedUserCollab(repo2)) 70 71 require.NoError(t, BlockUser(db.DefaultContext, doer.ID, blockedUser.ID)) 72 73 assert.False(t, isBlockedUserCollab(repo1)) 74 assert.False(t, isBlockedUserCollab(repo2)) 75 }) 76 77 t.Run("Pending transfers", func(t *testing.T) { 78 doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) 79 blockedUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3}) 80 defer user_model.UnblockUser(db.DefaultContext, doer.ID, blockedUser.ID) 81 82 unittest.AssertExistsIf(t, true, &repo_model.Repository{ID: 3, OwnerID: blockedUser.ID, Status: repo_model.RepositoryPendingTransfer}) 83 unittest.AssertExistsIf(t, true, &model.RepoTransfer{ID: 1, RecipientID: doer.ID, DoerID: blockedUser.ID}) 84 85 require.NoError(t, BlockUser(db.DefaultContext, doer.ID, blockedUser.ID)) 86 87 unittest.AssertExistsIf(t, false, &model.RepoTransfer{ID: 1, RecipientID: doer.ID, DoerID: blockedUser.ID}) 88 89 // Don't use AssertExistsIf, as it doesn't include the zero values in the condition such as `repo_model.RepositoryReady`. 90 repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 3, OwnerID: blockedUser.ID}) 91 assert.Equal(t, repo_model.RepositoryReady, repo.Status) 92 }) 93 94 t.Run("Issues", func(t *testing.T) { 95 doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) 96 blockedUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4}) 97 defer user_model.UnblockUser(db.DefaultContext, doer.ID, blockedUser.ID) 98 99 repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2, OwnerID: doer.ID}) 100 issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 4, RepoID: repo.ID}, "is_closed = true") 101 102 _, err := issues_model.ChangeIssueStatus(db.DefaultContext, issue, blockedUser, false) 103 require.NoError(t, err) 104 105 _, err = issues_model.ChangeIssueStatus(db.DefaultContext, issue, doer, true) 106 require.NoError(t, err) 107 108 require.NoError(t, BlockUser(db.DefaultContext, doer.ID, blockedUser.ID)) 109 110 _, err = issues_model.ChangeIssueStatus(db.DefaultContext, issue, blockedUser, false) 111 require.Error(t, err) 112 }) 113}