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  }