github.com/mattermosttest/mattermost-server/v5@v5.0.0-20200917143240-9dfa12e121f9/store/localcachelayer/main_test.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package localcachelayer 5 6 import ( 7 "fmt" 8 "testing" 9 10 "github.com/mattermost/mattermost-server/v5/services/cache" 11 12 "github.com/mattermost/mattermost-server/v5/model" 13 cachemocks "github.com/mattermost/mattermost-server/v5/services/cache/mocks" 14 "github.com/mattermost/mattermost-server/v5/store" 15 "github.com/mattermost/mattermost-server/v5/store/storetest/mocks" 16 "github.com/mattermost/mattermost-server/v5/testlib" 17 "github.com/stretchr/testify/mock" 18 ) 19 20 var mainHelper *testlib.MainHelper 21 22 func getMockCacheProvider() cache.Provider { 23 mockCacheProvider := cachemocks.Provider{} 24 mockCacheProvider.On("NewCache", mock.Anything). 25 Return(cache.NewLRU(&cache.LRUOptions{Size: 128})) 26 return &mockCacheProvider 27 } 28 29 func getMockStore() *mocks.Store { 30 mockStore := mocks.Store{} 31 32 fakeReaction := model.Reaction{PostId: "123"} 33 mockReactionsStore := mocks.ReactionStore{} 34 mockReactionsStore.On("Save", &fakeReaction).Return(&model.Reaction{}, nil) 35 mockReactionsStore.On("Delete", &fakeReaction).Return(&model.Reaction{}, nil) 36 mockReactionsStore.On("GetForPost", "123", false).Return([]*model.Reaction{&fakeReaction}, nil) 37 mockReactionsStore.On("GetForPost", "123", true).Return([]*model.Reaction{&fakeReaction}, nil) 38 mockStore.On("Reaction").Return(&mockReactionsStore) 39 40 fakeRole := model.Role{Id: "123", Name: "role-name"} 41 mockRolesStore := mocks.RoleStore{} 42 mockRolesStore.On("Save", &fakeRole).Return(&model.Role{}, nil) 43 mockRolesStore.On("Delete", "123").Return(&fakeRole, nil) 44 mockRolesStore.On("GetByName", "role-name").Return(&fakeRole, nil) 45 mockRolesStore.On("GetByNames", []string{"role-name"}).Return([]*model.Role{&fakeRole}, nil) 46 mockRolesStore.On("PermanentDeleteAll").Return(nil) 47 mockStore.On("Role").Return(&mockRolesStore) 48 49 fakeScheme := model.Scheme{Id: "123", Name: "scheme-name"} 50 mockSchemesStore := mocks.SchemeStore{} 51 mockSchemesStore.On("Save", &fakeScheme).Return(&model.Scheme{}, nil) 52 mockSchemesStore.On("Delete", "123").Return(&model.Scheme{}, nil) 53 mockSchemesStore.On("Get", "123").Return(&fakeScheme, nil) 54 mockSchemesStore.On("PermanentDeleteAll").Return(nil) 55 mockStore.On("Scheme").Return(&mockSchemesStore) 56 57 fakeFileInfo := model.FileInfo{PostId: "123"} 58 mockFileInfoStore := mocks.FileInfoStore{} 59 mockFileInfoStore.On("GetForPost", "123", true, true, false).Return([]*model.FileInfo{&fakeFileInfo}, nil) 60 mockFileInfoStore.On("GetForPost", "123", true, true, true).Return([]*model.FileInfo{&fakeFileInfo}, nil) 61 mockStore.On("FileInfo").Return(&mockFileInfoStore) 62 63 fakeWebhook := model.IncomingWebhook{Id: "123"} 64 mockWebhookStore := mocks.WebhookStore{} 65 mockWebhookStore.On("GetIncoming", "123", true).Return(&fakeWebhook, nil) 66 mockWebhookStore.On("GetIncoming", "123", false).Return(&fakeWebhook, nil) 67 mockStore.On("Webhook").Return(&mockWebhookStore) 68 69 fakeEmoji := model.Emoji{Id: "123", Name: "name123"} 70 mockEmojiStore := mocks.EmojiStore{} 71 mockEmojiStore.On("Get", "123", true).Return(&fakeEmoji, nil) 72 mockEmojiStore.On("Get", "123", false).Return(&fakeEmoji, nil) 73 mockEmojiStore.On("GetByName", "name123", true).Return(&fakeEmoji, nil) 74 mockEmojiStore.On("GetByName", "name123", false).Return(&fakeEmoji, nil) 75 mockEmojiStore.On("Delete", &fakeEmoji, int64(0)).Return(nil) 76 mockStore.On("Emoji").Return(&mockEmojiStore) 77 78 mockCount := int64(10) 79 mockGuestCount := int64(12) 80 channelId := "channel1" 81 fakeChannelId := model.Channel{Id: channelId} 82 mockChannelStore := mocks.ChannelStore{} 83 mockChannelStore.On("ClearCaches").Return() 84 mockChannelStore.On("GetMemberCount", "id", true).Return(mockCount, nil) 85 mockChannelStore.On("GetMemberCount", "id", false).Return(mockCount, nil) 86 mockChannelStore.On("GetGuestCount", "id", true).Return(mockGuestCount, nil) 87 mockChannelStore.On("GetGuestCount", "id", false).Return(mockGuestCount, nil) 88 mockChannelStore.On("Get", channelId, true).Return(&fakeChannelId, nil) 89 mockChannelStore.On("Get", channelId, false).Return(&fakeChannelId, nil) 90 mockStore.On("Channel").Return(&mockChannelStore) 91 92 mockPinnedPostsCount := int64(10) 93 mockChannelStore.On("GetPinnedPostCount", "id", true).Return(mockPinnedPostsCount, nil) 94 mockChannelStore.On("GetPinnedPostCount", "id", false).Return(mockPinnedPostsCount, nil) 95 96 fakePosts := &model.PostList{} 97 fakeOptions := model.GetPostsOptions{ChannelId: "123", PerPage: 30} 98 mockPostStore := mocks.PostStore{} 99 mockPostStore.On("GetPosts", fakeOptions, true).Return(fakePosts, nil) 100 mockPostStore.On("GetPosts", fakeOptions, false).Return(fakePosts, nil) 101 mockPostStore.On("InvalidateLastPostTimeCache", "12360") 102 103 mockPostStoreOptions := model.GetPostsSinceOptions{ 104 ChannelId: "channelId", 105 Time: 1, 106 SkipFetchThreads: false, 107 } 108 109 mockPostStoreEtagResult := fmt.Sprintf("%v.%v", model.CurrentVersion, 1) 110 mockPostStore.On("ClearCaches") 111 mockPostStore.On("InvalidateLastPostTimeCache", "channelId") 112 mockPostStore.On("GetEtag", "channelId", true).Return(mockPostStoreEtagResult) 113 mockPostStore.On("GetEtag", "channelId", false).Return(mockPostStoreEtagResult) 114 mockPostStore.On("GetPostsSince", mockPostStoreOptions, true).Return(model.NewPostList(), nil) 115 mockPostStore.On("GetPostsSince", mockPostStoreOptions, false).Return(model.NewPostList(), nil) 116 mockStore.On("Post").Return(&mockPostStore) 117 118 fakeTermsOfService := model.TermsOfService{Id: "123", CreateAt: 11111, UserId: "321", Text: "Terms of service test"} 119 mockTermsOfServiceStore := mocks.TermsOfServiceStore{} 120 mockTermsOfServiceStore.On("InvalidateTermsOfService", "123") 121 mockTermsOfServiceStore.On("Save", &fakeTermsOfService).Return(&fakeTermsOfService, nil) 122 mockTermsOfServiceStore.On("GetLatest", true).Return(&fakeTermsOfService, nil) 123 mockTermsOfServiceStore.On("GetLatest", false).Return(&fakeTermsOfService, nil) 124 mockTermsOfServiceStore.On("Get", "123", true).Return(&fakeTermsOfService, nil) 125 mockTermsOfServiceStore.On("Get", "123", false).Return(&fakeTermsOfService, nil) 126 mockStore.On("TermsOfService").Return(&mockTermsOfServiceStore) 127 128 fakeUser := []*model.User{{ 129 Id: "123", 130 AuthData: model.NewString("authData"), 131 AuthService: "authService", 132 }} 133 mockUserStore := mocks.UserStore{} 134 mockUserStore.On("GetProfileByIds", []string{"123"}, &store.UserGetByIdsOpts{}, true).Return(fakeUser, nil) 135 mockUserStore.On("GetProfileByIds", []string{"123"}, &store.UserGetByIdsOpts{}, false).Return(fakeUser, nil) 136 137 fakeProfilesInChannelMap := map[string]*model.User{ 138 "456": {Id: "456"}, 139 } 140 mockUserStore.On("GetAllProfilesInChannel", "123", true).Return(fakeProfilesInChannelMap, nil) 141 mockUserStore.On("GetAllProfilesInChannel", "123", false).Return(fakeProfilesInChannelMap, nil) 142 143 mockUserStore.On("Get", "123").Return(fakeUser[0], nil) 144 mockStore.On("User").Return(&mockUserStore) 145 146 fakeUserTeamIds := []string{"1", "2", "3"} 147 mockTeamStore := mocks.TeamStore{} 148 mockTeamStore.On("GetUserTeamIds", "123", true).Return(fakeUserTeamIds, nil) 149 mockTeamStore.On("GetUserTeamIds", "123", false).Return(fakeUserTeamIds, nil) 150 mockStore.On("Team").Return(&mockTeamStore) 151 152 return &mockStore 153 } 154 155 func TestMain(m *testing.M) { 156 mainHelper = testlib.NewMainHelperWithOptions(nil) 157 defer mainHelper.Close() 158 159 initStores() 160 mainHelper.Main(m) 161 tearDownStores() 162 }