summaryrefslogtreecommitdiffstats
path: root/store/storetest/plugin_store.go
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-11-27 17:23:35 -0500
committerGitHub <noreply@github.com>2017-11-27 17:23:35 -0500
commit6176bcff6977bda71f4fde10a52dde6d7d7ceb9a (patch)
treeb4a4a22879f4b88ffc4fb59f46ca69d441569ddd /store/storetest/plugin_store.go
parente85ec3830164ffdfbe8fd5696ab99446b38a01ef (diff)
downloadchat-6176bcff6977bda71f4fde10a52dde6d7d7ceb9a.tar.gz
chat-6176bcff6977bda71f4fde10a52dde6d7d7ceb9a.tar.bz2
chat-6176bcff6977bda71f4fde10a52dde6d7d7ceb9a.zip
PLT-8131 (part2) Add plugin key value store support (#7902)
* Add plugin key value store support * Add localization strings * Updates per feedback
Diffstat (limited to 'store/storetest/plugin_store.go')
-rw-r--r--store/storetest/plugin_store.go69
1 files changed, 69 insertions, 0 deletions
diff --git a/store/storetest/plugin_store.go b/store/storetest/plugin_store.go
new file mode 100644
index 000000000..3d7d0ec05
--- /dev/null
+++ b/store/storetest/plugin_store.go
@@ -0,0 +1,69 @@
+// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package storetest
+
+import (
+ "testing"
+
+ "github.com/mattermost/mattermost-server/model"
+ "github.com/mattermost/mattermost-server/store"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestPluginStore(t *testing.T, ss store.Store) {
+ t.Run("PluginSaveGet", func(t *testing.T) { testPluginSaveGet(t, ss) })
+ t.Run("PluginDelete", func(t *testing.T) { testPluginDelete(t, ss) })
+}
+
+func testPluginSaveGet(t *testing.T, ss store.Store) {
+ kv := &model.PluginKeyValue{
+ PluginId: model.NewId(),
+ Key: model.NewId(),
+ Value: []byte(model.NewId()),
+ }
+
+ if result := <-ss.Plugin().SaveOrUpdate(kv); result.Err != nil {
+ t.Fatal(result.Err)
+ }
+
+ defer func() {
+ <-ss.Plugin().Delete(kv.PluginId, kv.Key)
+ }()
+
+ if result := <-ss.Plugin().Get(kv.PluginId, kv.Key); result.Err != nil {
+ t.Fatal(result.Err)
+ } else {
+ received := result.Data.(*model.PluginKeyValue)
+ assert.Equal(t, kv.PluginId, received.PluginId)
+ assert.Equal(t, kv.Key, received.Key)
+ assert.Equal(t, kv.Value, received.Value)
+ }
+
+ // Try inserting when already exists
+ kv.Value = []byte(model.NewId())
+ if result := <-ss.Plugin().SaveOrUpdate(kv); result.Err != nil {
+ t.Fatal(result.Err)
+ }
+
+ if result := <-ss.Plugin().Get(kv.PluginId, kv.Key); result.Err != nil {
+ t.Fatal(result.Err)
+ } else {
+ received := result.Data.(*model.PluginKeyValue)
+ assert.Equal(t, kv.PluginId, received.PluginId)
+ assert.Equal(t, kv.Key, received.Key)
+ assert.Equal(t, kv.Value, received.Value)
+ }
+}
+
+func testPluginDelete(t *testing.T, ss store.Store) {
+ kv := store.Must(ss.Plugin().SaveOrUpdate(&model.PluginKeyValue{
+ PluginId: model.NewId(),
+ Key: model.NewId(),
+ Value: []byte(model.NewId()),
+ })).(*model.PluginKeyValue)
+
+ if result := <-ss.Plugin().Delete(kv.PluginId, kv.Key); result.Err != nil {
+ t.Fatal(result.Err)
+ }
+}