summaryrefslogtreecommitdiffstats
path: root/api4/channel_test.go
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-03-24 16:45:34 -0400
committerCorey Hulen <corey@hulen.com>2017-03-24 13:45:34 -0700
commit28a78d76074749a3b7f1ef2a56617b0a1c7fd623 (patch)
tree4adc9c167991a9cea04fa9cc3c01e247a50293c8 /api4/channel_test.go
parent22715a31ed6238eb4f8f0dd8125bf23958345e78 (diff)
downloadchat-28a78d76074749a3b7f1ef2a56617b0a1c7fd623.tar.gz
chat-28a78d76074749a3b7f1ef2a56617b0a1c7fd623.tar.bz2
chat-28a78d76074749a3b7f1ef2a56617b0a1c7fd623.zip
Implement some channel endpoints for APIv4 (#5846)
* Add v4 endpoint for getting the channels on a team for a user * Implement PUT /channels/{channel_id}/patch endpoint for APIv4 * Implement POST /teams/{team_id}/channels/search endpoint for APIv4 * Update permission check
Diffstat (limited to 'api4/channel_test.go')
-rw-r--r--api4/channel_test.go159
1 files changed, 159 insertions, 0 deletions
diff --git a/api4/channel_test.go b/api4/channel_test.go
index ef0d35e4b..a208313df 100644
--- a/api4/channel_test.go
+++ b/api4/channel_test.go
@@ -257,6 +257,62 @@ func TestUpdateChannel(t *testing.T) {
}
+func TestPatchChannel(t *testing.T) {
+ th := Setup().InitBasic().InitSystemAdmin()
+ defer TearDown()
+ Client := th.Client
+
+ patch := &model.ChannelPatch{
+ Name: new(string),
+ DisplayName: new(string),
+ Header: new(string),
+ Purpose: new(string),
+ }
+ *patch.Name = model.NewId()
+ *patch.DisplayName = model.NewId()
+ *patch.Header = model.NewId()
+ *patch.Purpose = model.NewId()
+
+ channel, resp := Client.PatchChannel(th.BasicChannel.Id, patch)
+ CheckNoError(t, resp)
+
+ if *patch.Name != channel.Name {
+ t.Fatal("do not match")
+ } else if *patch.DisplayName != channel.DisplayName {
+ t.Fatal("do not match")
+ } else if *patch.Header != channel.Header {
+ t.Fatal("do not match")
+ } else if *patch.Purpose != channel.Purpose {
+ t.Fatal("do not match")
+ }
+
+ patch.Name = nil
+ oldName := channel.Name
+ channel, resp = Client.PatchChannel(th.BasicChannel.Id, patch)
+ CheckNoError(t, resp)
+
+ if channel.Name != oldName {
+ t.Fatal("should not have updated")
+ }
+
+ _, resp = Client.PatchChannel("junk", patch)
+ CheckBadRequestStatus(t, resp)
+
+ _, resp = Client.PatchChannel(model.NewId(), patch)
+ CheckNotFoundStatus(t, resp)
+
+ user := th.CreateUser()
+ Client.Login(user.Email, user.Password)
+ _, resp = Client.PatchChannel(th.BasicChannel.Id, patch)
+ CheckForbiddenStatus(t, resp)
+
+ _, resp = th.SystemAdminClient.PatchChannel(th.BasicChannel.Id, patch)
+ CheckNoError(t, resp)
+
+ _, resp = th.SystemAdminClient.PatchChannel(th.BasicPrivateChannel.Id, patch)
+ CheckNoError(t, resp)
+}
+
func TestCreateDirectChannel(t *testing.T) {
th := Setup().InitBasic().InitSystemAdmin()
defer TearDown()
@@ -438,6 +494,109 @@ func TestGetPublicChannelsForTeam(t *testing.T) {
CheckNoError(t, resp)
}
+func TestGetChannelsForTeamForUser(t *testing.T) {
+ th := Setup().InitBasic().InitSystemAdmin()
+ defer TearDown()
+ Client := th.Client
+
+ channels, resp := Client.GetChannelsForTeamForUser(th.BasicTeam.Id, th.BasicUser.Id, "")
+ CheckNoError(t, resp)
+
+ found := make([]bool, 3)
+ for _, c := range *channels {
+ if c.Id == th.BasicChannel.Id {
+ found[0] = true
+ } else if c.Id == th.BasicChannel2.Id {
+ found[1] = true
+ } else if c.Id == th.BasicPrivateChannel.Id {
+ found[2] = true
+ }
+
+ if c.TeamId != th.BasicTeam.Id && c.TeamId != "" {
+ t.Fatal("wrong team")
+ }
+ }
+
+ for _, f := range found {
+ if !f {
+ t.Fatal("missing a channel")
+ }
+ }
+
+ channels, resp = Client.GetChannelsForTeamForUser(th.BasicTeam.Id, th.BasicUser.Id, resp.Etag)
+ CheckEtag(t, channels, resp)
+
+ _, resp = Client.GetChannelsForTeamForUser(th.BasicTeam.Id, "junk", "")
+ CheckBadRequestStatus(t, resp)
+
+ _, resp = Client.GetChannelsForTeamForUser("junk", th.BasicUser.Id, "")
+ CheckBadRequestStatus(t, resp)
+
+ _, resp = Client.GetChannelsForTeamForUser(th.BasicTeam.Id, th.BasicUser2.Id, "")
+ CheckForbiddenStatus(t, resp)
+
+ _, resp = Client.GetChannelsForTeamForUser(model.NewId(), th.BasicUser.Id, "")
+ CheckForbiddenStatus(t, resp)
+
+ _, resp = th.SystemAdminClient.GetChannelsForTeamForUser(th.BasicTeam.Id, th.BasicUser.Id, "")
+ CheckNoError(t, resp)
+}
+
+func TestSearchChannels(t *testing.T) {
+ th := Setup().InitBasic().InitSystemAdmin()
+ defer TearDown()
+ Client := th.Client
+
+ search := &model.ChannelSearch{Term: th.BasicChannel.Name}
+
+ channels, resp := Client.SearchChannels(th.BasicTeam.Id, search)
+ CheckNoError(t, resp)
+
+ found := false
+ for _, c := range *channels {
+ if c.Type != model.CHANNEL_OPEN {
+ t.Fatal("should only return public channels")
+ }
+
+ if c.Id == th.BasicChannel.Id {
+ found = true
+ }
+ }
+
+ if !found {
+ t.Fatal("didn't find channel")
+ }
+
+ search.Term = th.BasicPrivateChannel.Name
+ channels, resp = Client.SearchChannels(th.BasicTeam.Id, search)
+ CheckNoError(t, resp)
+
+ found = false
+ for _, c := range *channels {
+ if c.Id == th.BasicPrivateChannel.Id {
+ found = true
+ }
+ }
+
+ if found {
+ t.Fatal("shouldn't find private channel")
+ }
+
+ search.Term = ""
+ _, resp = Client.SearchChannels(th.BasicTeam.Id, search)
+ CheckBadRequestStatus(t, resp)
+
+ search.Term = th.BasicChannel.Name
+ _, resp = Client.SearchChannels(model.NewId(), search)
+ CheckForbiddenStatus(t, resp)
+
+ _, resp = Client.SearchChannels("junk", search)
+ CheckBadRequestStatus(t, resp)
+
+ _, resp = th.SystemAdminClient.SearchChannels(th.BasicTeam.Id, search)
+ CheckNoError(t, resp)
+}
+
func TestDeleteChannel(t *testing.T) {
th := Setup().InitBasic().InitSystemAdmin()
defer TearDown()