summaryrefslogtreecommitdiffstats
path: root/api4/preference_test.go
diff options
context:
space:
mode:
authorHarrison Healey <harrisonmhealey@gmail.com>2017-04-20 08:57:31 -0400
committerGeorge Goldberg <george@gberg.me>2017-04-20 13:57:31 +0100
commit1a0f8d1b3c7451eac43bfdc5971de060caabf441 (patch)
tree3bf83f3f8da16a257a1539d0a20cf7febb95fba8 /api4/preference_test.go
parentb79439e92b11a53c972bbd1169f4c3aaede9b8ce (diff)
downloadchat-1a0f8d1b3c7451eac43bfdc5971de060caabf441.tar.gz
chat-1a0f8d1b3c7451eac43bfdc5971de060caabf441.tar.bz2
chat-1a0f8d1b3c7451eac43bfdc5971de060caabf441.zip
PLT-1384 Added websocket event when preferences are updated/deleted (#6107)
Diffstat (limited to 'api4/preference_test.go')
-rw-r--r--api4/preference_test.go118
1 files changed, 117 insertions, 1 deletions
diff --git a/api4/preference_test.go b/api4/preference_test.go
index 6efc96ff3..ecf3acbd7 100644
--- a/api4/preference_test.go
+++ b/api4/preference_test.go
@@ -4,8 +4,11 @@
package api4
import (
- "github.com/mattermost/platform/model"
+ "strings"
"testing"
+ "time"
+
+ "github.com/mattermost/platform/model"
)
func TestGetPreferences(t *testing.T) {
@@ -239,6 +242,61 @@ func TestUpdatePreferences(t *testing.T) {
CheckUnauthorizedStatus(t, resp)
}
+func TestUpdatePreferencesWebsocket(t *testing.T) {
+ th := Setup().InitBasic()
+
+ WebSocketClient, err := th.CreateWebSocketClient()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ WebSocketClient.Listen()
+
+ userId := th.BasicUser.Id
+ preferences := &model.Preferences{
+ {
+ UserId: userId,
+ Category: model.NewId(),
+ Name: model.NewId(),
+ },
+ {
+ UserId: userId,
+ Category: model.NewId(),
+ Name: model.NewId(),
+ },
+ }
+ _, resp := th.Client.UpdatePreferences(userId, preferences)
+ CheckNoError(t, resp)
+
+ timeout := time.After(300 * time.Millisecond)
+
+ waiting := true
+ for waiting {
+ select {
+ case event := <-WebSocketClient.EventChannel:
+ if event.Event != model.WEBSOCKET_EVENT_PREFERENCES_CHANGED {
+ // Ignore any other events
+ continue
+ }
+
+ received, err := model.PreferencesFromJson(strings.NewReader(event.Data["preferences"].(string)))
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ for i, preference := range *preferences {
+ if preference.UserId != received[i].UserId || preference.Category != received[i].Category || preference.Name != received[i].Name {
+ t.Fatal("received incorrect preference")
+ }
+ }
+
+ waiting = false
+ case <-timeout:
+ t.Fatal("timed out waiting for preference update event")
+ }
+ }
+}
+
func TestDeletePreferences(t *testing.T) {
th := Setup().InitBasic()
defer TearDown()
@@ -285,3 +343,61 @@ func TestDeletePreferences(t *testing.T) {
_, resp = Client.DeletePreferences(th.BasicUser.Id, &preferences)
CheckUnauthorizedStatus(t, resp)
}
+
+func TestDeletePreferencesWebsocket(t *testing.T) {
+ th := Setup().InitBasic()
+
+ userId := th.BasicUser.Id
+ preferences := &model.Preferences{
+ {
+ UserId: userId,
+ Category: model.NewId(),
+ Name: model.NewId(),
+ },
+ {
+ UserId: userId,
+ Category: model.NewId(),
+ Name: model.NewId(),
+ },
+ }
+ _, resp := th.Client.UpdatePreferences(userId, preferences)
+ CheckNoError(t, resp)
+
+ WebSocketClient, err := th.CreateWebSocketClient()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ WebSocketClient.Listen()
+
+ _, resp = th.Client.DeletePreferences(userId, preferences)
+ CheckNoError(t, resp)
+
+ timeout := time.After(30000 * time.Millisecond)
+
+ waiting := true
+ for waiting {
+ select {
+ case event := <-WebSocketClient.EventChannel:
+ if event.Event != model.WEBSOCKET_EVENT_PREFERENCES_DELETED {
+ // Ignore any other events
+ continue
+ }
+
+ received, err := model.PreferencesFromJson(strings.NewReader(event.Data["preferences"].(string)))
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ for i, preference := range *preferences {
+ if preference.UserId != received[i].UserId || preference.Category != received[i].Category || preference.Name != received[i].Name {
+ t.Fatal("received incorrect preference")
+ }
+ }
+
+ waiting = false
+ case <-timeout:
+ t.Fatal("timed out waiting for preference delete event")
+ }
+ }
+}