MM-13934 - Plugin helper function EnsureBot doesn't compare bot details (#14103)

Этот коммит содержится в:
Harshil Sharma
2020-05-27 18:18:43 +05:30
коммит произвёл GitHub
родитель 14f7118dde
Коммит dea705969c
2 изменённых файлов: 72 добавлений и 1 удалений

Просмотреть файл

@@ -231,9 +231,21 @@ func (p *HelpersImpl) ensureBot(bot *model.Bot) (retBotID string, retErr error)
return "", errors.Wrap(kvGetErr, "failed to get bot")
}
// If the bot has already been created, there is nothing to do.
// If the bot has already been created, use it
if botIDBytes != nil {
botID := string(botIDBytes)
// ensure existing bot is synced with what is being created
botPatch := &model.BotPatch{
Username: &bot.Username,
DisplayName: &bot.DisplayName,
Description: &bot.Description,
}
if _, err := p.API.PatchBot(botID, botPatch); err != nil {
return "", errors.Wrap(err, "failed to patch bot")
}
return botID, nil
}

Просмотреть файл

@@ -73,6 +73,11 @@ func TestEnsureBot(t *testing.T) {
api := setupAPI()
api.On("GetServerVersion").Return("5.10.0")
api.On("KVGet", plugin.BOT_USER_KEY).Return([]byte(expectedBotID), nil)
api.On("PatchBot", expectedBotID, &model.BotPatch{
Username: &testbot.Username,
DisplayName: &testbot.DisplayName,
Description: &testbot.Description,
}).Return(nil, nil)
defer api.AssertExpectations(t)
p := &plugin.HelpersImpl{}
@@ -111,6 +116,11 @@ func TestEnsureBot(t *testing.T) {
api.On("GetBundlePath").Return("", nil)
api.On("SetProfileImage", expectedBotID, imageBytes).Return(nil)
api.On("GetServerVersion").Return("5.10.0")
api.On("PatchBot", expectedBotID, &model.BotPatch{
Username: &testbot.Username,
DisplayName: &testbot.DisplayName,
Description: &testbot.Description,
}).Return(nil, nil)
defer api.AssertExpectations(t)
p := &plugin.HelpersImpl{}
@@ -136,6 +146,11 @@ func TestEnsureBot(t *testing.T) {
api.On("GetBundlePath").Return("", nil)
api.On("SetBotIconImage", expectedBotID, imageBytes).Return(nil)
api.On("GetServerVersion").Return("5.10.0")
api.On("PatchBot", expectedBotID, &model.BotPatch{
Username: &testbot.Username,
DisplayName: &testbot.DisplayName,
Description: &testbot.Description,
}).Return(nil, nil)
defer api.AssertExpectations(t)
p := &plugin.HelpersImpl{}
@@ -160,6 +175,11 @@ func TestEnsureBot(t *testing.T) {
api.On("SetProfileImage", expectedBotID, imageBytes).Return(nil)
api.On("SetBotIconImage", expectedBotID, imageBytes).Return(nil)
api.On("GetServerVersion").Return("5.10.0")
api.On("PatchBot", expectedBotID, &model.BotPatch{
Username: &testbot.Username,
DisplayName: &testbot.DisplayName,
Description: &testbot.Description,
}).Return(nil, nil)
defer api.AssertExpectations(t)
p := &plugin.HelpersImpl{}
@@ -169,6 +189,45 @@ func TestEnsureBot(t *testing.T) {
assert.Equal(t, expectedBotID, botID)
assert.Nil(t, err)
})
t.Run("should find and update the bot with new bot details", func(t *testing.T) {
expectedBotID := model.NewId()
expectedBotUsername := "updated_testbot"
expectedBotDisplayName := "Updated Test Bot"
expectedBotDescription := "updated testbotdescription"
testsDir, _ := fileutils.FindDir("tests")
testImage := filepath.Join(testsDir, "test.png")
imageBytes, err := ioutil.ReadFile(testImage)
assert.Nil(t, err)
api := setupAPI()
api.On("GetServerVersion").Return("5.10.0")
api.On("KVGet", plugin.BOT_USER_KEY).Return([]byte(expectedBotID), nil)
api.On("GetBundlePath").Return("", nil)
api.On("SetProfileImage", expectedBotID, imageBytes).Return(nil)
api.On("SetBotIconImage", expectedBotID, imageBytes).Return(nil)
api.On("PatchBot", expectedBotID, &model.BotPatch{
Username: &expectedBotUsername,
DisplayName: &expectedBotDisplayName,
Description: &expectedBotDescription,
}).Return(nil, nil)
defer api.AssertExpectations(t)
p := &plugin.HelpersImpl{}
p.API = api
updatedTestbot := &model.Bot{
Username: "updated_testbot",
DisplayName: "Updated Test Bot",
Description: "updated testbotdescription",
}
botID, err := p.EnsureBot(updatedTestbot, plugin.ProfileImagePath(testImage), plugin.IconImagePath(testImage))
assert.Equal(t, expectedBotID, botID)
assert.Nil(t, err)
})
})
t.Run("if bot doesn't exist", func(t *testing.T) {