diff options
author | Martin Kraft <martinkraft@gmail.com> | 2018-05-18 08:23:02 -0400 |
---|---|---|
committer | Martin Kraft <martinkraft@gmail.com> | 2018-05-18 08:23:02 -0400 |
commit | 78d95a25f799f818de03e9aa58a131407b6c122f (patch) | |
tree | 2321e7967a0d9e05d96536e9ae9cff40f98d53f3 /cmd/mattermost/commands/message_export_test.go | |
parent | 8a0702e0c31014c5f2f8bad8c9e32e9343252469 (diff) | |
parent | e591fcf3d8c61c3df7d1d8457ae7b72bfe3abf1b (diff) | |
download | chat-78d95a25f799f818de03e9aa58a131407b6c122f.tar.gz chat-78d95a25f799f818de03e9aa58a131407b6c122f.tar.bz2 chat-78d95a25f799f818de03e9aa58a131407b6c122f.zip |
Merge remote-tracking branch 'origin/master' into advanced-permissions-phase-2
Diffstat (limited to 'cmd/mattermost/commands/message_export_test.go')
-rw-r--r-- | cmd/mattermost/commands/message_export_test.go | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/cmd/mattermost/commands/message_export_test.go b/cmd/mattermost/commands/message_export_test.go new file mode 100644 index 000000000..7572d8b48 --- /dev/null +++ b/cmd/mattermost/commands/message_export_test.go @@ -0,0 +1,66 @@ +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package commands + +import ( + "io/ioutil" + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/mattermost/mattermost-server/model" + "github.com/mattermost/mattermost-server/utils" +) + +// There are no tests that actually run the Message Export job, because it can take a long time to complete depending +// on the size of the database that the config is pointing to. As such, these tests just ensure that the CLI command +// fails fast if invalid flags are supplied + +func TestMessageExportNotEnabled(t *testing.T) { + configPath := writeTempConfig(t, false) + defer os.RemoveAll(filepath.Dir(configPath)) + + // should fail fast because the feature isn't enabled + require.Error(t, RunCommand(t, "--config", configPath, "export")) +} + +func TestMessageExportInvalidFormat(t *testing.T) { + configPath := writeTempConfig(t, true) + defer os.RemoveAll(filepath.Dir(configPath)) + + // should fail fast because format isn't supported + require.Error(t, RunCommand(t, "--config", configPath, "--format", "not_actiance", "export")) +} + +func TestMessageExportNegativeExportFrom(t *testing.T) { + configPath := writeTempConfig(t, true) + defer os.RemoveAll(filepath.Dir(configPath)) + + // should fail fast because export from must be a valid timestamp + require.Error(t, RunCommand(t, "--config", configPath, "--format", "actiance", "--exportFrom", "-1", "export")) +} + +func TestMessageExportNegativeTimeoutSeconds(t *testing.T) { + configPath := writeTempConfig(t, true) + defer os.RemoveAll(filepath.Dir(configPath)) + + // should fail fast because timeout seconds must be a positive int + require.Error(t, RunCommand(t, "--config", configPath, "--format", "actiance", "--exportFrom", "0", "--timeoutSeconds", "-1", "export")) +} + +func writeTempConfig(t *testing.T, isMessageExportEnabled bool) string { + dir, err := ioutil.TempDir("", "") + require.NoError(t, err) + + utils.TranslationsPreInit() + config, _, _, appErr := utils.LoadConfig("config.json") + require.Nil(t, appErr) + config.MessageExportSettings.EnableExport = model.NewBool(isMessageExportEnabled) + configPath := filepath.Join(dir, "foo.json") + require.NoError(t, ioutil.WriteFile(configPath, []byte(config.ToJson()), 0600)) + + return configPath +} |