summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorChris <ccbrown112@gmail.com>2017-07-31 08:52:45 -0700
committerHarrison Healey <harrisonmhealey@gmail.com>2017-07-31 11:52:45 -0400
commit72f61ab96aabf65c162c8d94b5b843b5108ee1a9 (patch)
treec80d7158613663a0b3f584a1736ef1cbff72d160 /app
parent0f786a42d3289df9b4f5bdb4bddb0ecb07631608 (diff)
downloadchat-72f61ab96aabf65c162c8d94b5b843b5108ee1a9.tar.gz
chat-72f61ab96aabf65c162c8d94b5b843b5108ee1a9.tar.bz2
chat-72f61ab96aabf65c162c8d94b5b843b5108ee1a9.zip
make cli team / channel delete operations also delete webhooks and slash commands (#7028)
Diffstat (limited to 'app')
-rw-r--r--app/channel.go8
-rw-r--r--app/channel_test.go66
-rw-r--r--app/team.go6
-rw-r--r--app/team_test.go41
4 files changed, 120 insertions, 1 deletions
diff --git a/app/channel.go b/app/channel.go
index b077c0399..03df0e800 100644
--- a/app/channel.go
+++ b/app/channel.go
@@ -1184,6 +1184,14 @@ func PermanentDeleteChannel(channel *model.Channel) *model.AppError {
return result.Err
}
+ if result := <-Srv.Store.Webhook().PermanentDeleteIncomingByChannel(channel.Id); result.Err != nil {
+ return result.Err
+ }
+
+ if result := <-Srv.Store.Webhook().PermanentDeleteOutgoingByChannel(channel.Id); result.Err != nil {
+ return result.Err
+ }
+
if result := <-Srv.Store.Channel().PermanentDelete(channel.Id); result.Err != nil {
return result.Err
}
diff --git a/app/channel_test.go b/app/channel_test.go
new file mode 100644
index 000000000..438eb959b
--- /dev/null
+++ b/app/channel_test.go
@@ -0,0 +1,66 @@
+package app
+
+import (
+ "testing"
+
+ "github.com/mattermost/platform/model"
+ "github.com/mattermost/platform/utils"
+)
+
+func TestPermanentDeleteChannel(t *testing.T) {
+ th := Setup().InitBasic()
+
+ incomingWasEnabled := utils.Cfg.ServiceSettings.EnableIncomingWebhooks
+ outgoingWasEnabled := utils.Cfg.ServiceSettings.EnableOutgoingWebhooks
+ utils.Cfg.ServiceSettings.EnableIncomingWebhooks = true
+ utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = true
+ defer func() {
+ utils.Cfg.ServiceSettings.EnableIncomingWebhooks = incomingWasEnabled
+ utils.Cfg.ServiceSettings.EnableOutgoingWebhooks = outgoingWasEnabled
+ }()
+
+ channel, err := CreateChannel(&model.Channel{DisplayName: "deletion-test", Name: "deletion-test", Type: model.CHANNEL_OPEN, TeamId: th.BasicTeam.Id}, false)
+ if err != nil {
+ t.Fatal(err.Error())
+ }
+ defer func() {
+ PermanentDeleteChannel(channel)
+ }()
+
+ incoming, err := CreateIncomingWebhookForChannel(th.BasicUser.Id, channel, &model.IncomingWebhook{ChannelId: channel.Id})
+ if err != nil {
+ t.Fatal(err.Error())
+ }
+ defer DeleteIncomingWebhook(incoming.Id)
+
+ if incoming, err = GetIncomingWebhook(incoming.Id); incoming == nil || err != nil {
+ t.Fatal("unable to get new incoming webhook")
+ }
+
+ outgoing, err := CreateOutgoingWebhook(&model.OutgoingWebhook{
+ ChannelId: channel.Id,
+ TeamId: channel.TeamId,
+ CreatorId: th.BasicUser.Id,
+ CallbackURLs: []string{"http://foo"},
+ })
+ if err != nil {
+ t.Fatal(err.Error())
+ }
+ defer DeleteOutgoingWebhook(outgoing.Id)
+
+ if outgoing, err = GetOutgoingWebhook(outgoing.Id); outgoing == nil || err != nil {
+ t.Fatal("unable to get new outgoing webhook")
+ }
+
+ if err := PermanentDeleteChannel(channel); err != nil {
+ t.Fatal(err.Error())
+ }
+
+ if incoming, err = GetIncomingWebhook(incoming.Id); incoming != nil || err == nil {
+ t.Error("incoming webhook wasn't deleted")
+ }
+
+ if outgoing, err = GetOutgoingWebhook(outgoing.Id); outgoing != nil || err == nil {
+ t.Error("outgoing webhook wasn't deleted")
+ }
+}
diff --git a/app/team.go b/app/team.go
index bff448f7c..e4a71d7d5 100644
--- a/app/team.go
+++ b/app/team.go
@@ -638,7 +638,7 @@ func InviteNewUsersToTeam(emailList []string, teamId, senderId string) *model.Ap
var invalidEmailList []string
for _, email := range emailList {
- if ! isTeamEmailAddressAllowed(email) {
+ if !isTeamEmailAddressAllowed(email) {
invalidEmailList = append(invalidEmailList, email)
}
}
@@ -747,6 +747,10 @@ func PermanentDeleteTeam(team *model.Team) *model.AppError {
return result.Err
}
+ if result := <-Srv.Store.Command().PermanentDeleteByTeam(team.Id); result.Err != nil {
+ return result.Err
+ }
+
if result := <-Srv.Store.Team().PermanentDelete(team.Id); result.Err != nil {
return result.Err
}
diff --git a/app/team_test.go b/app/team_test.go
index f2356d562..a410d6652 100644
--- a/app/team_test.go
+++ b/app/team_test.go
@@ -112,3 +112,44 @@ func TestAddUserToTeamByTeamId(t *testing.T) {
t.Fatal("Should add user to the team")
}
}
+
+func TestPermanentDeleteTeam(t *testing.T) {
+ th := Setup().InitBasic()
+
+ team, err := CreateTeam(&model.Team{
+ DisplayName: "deletion-test",
+ Name: "deletion-test",
+ Email: "foo@foo.com",
+ Type: model.TEAM_OPEN,
+ })
+ if err != nil {
+ t.Fatal(err.Error())
+ }
+ defer func() {
+ PermanentDeleteTeam(team)
+ }()
+
+ command, err := CreateCommand(&model.Command{
+ CreatorId: th.BasicUser.Id,
+ TeamId: team.Id,
+ Trigger: "foo",
+ URL: "http://foo",
+ Method: model.COMMAND_METHOD_POST,
+ })
+ if err != nil {
+ t.Fatal(err.Error())
+ }
+ defer DeleteCommand(command.Id)
+
+ if command, err = GetCommand(command.Id); command == nil || err != nil {
+ t.Fatal("unable to get new command")
+ }
+
+ if err := PermanentDeleteTeam(team); err != nil {
+ t.Fatal(err.Error())
+ }
+
+ if command, err = GetCommand(command.Id); command != nil || err == nil {
+ t.Fatal("command wasn't deleted")
+ }
+}