diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2016-12-09 18:43:03 -0500 |
---|---|---|
committer | Corey Hulen <corey@hulen.com> | 2016-12-09 15:43:03 -0800 |
commit | aaa41535f8ac9656d0cd399aeedf58de9b374b65 (patch) | |
tree | 34d15671bf4b6f50fdb96a0fe1f1967885d87931 /store | |
parent | 9670afed82e6c3192d230f107b836e21bb0c01a6 (diff) | |
download | chat-aaa41535f8ac9656d0cd399aeedf58de9b374b65.tar.gz chat-aaa41535f8ac9656d0cd399aeedf58de9b374b65.tar.bz2 chat-aaa41535f8ac9656d0cd399aeedf58de9b374b65.zip |
PLT-3736 Fixed duplicated create_direct api calls not returning the existing channel (#4745)
* Fixed duplicated create_direct api calls not returning the existing channel
* Added unit tests for duplicated create_direct api calls
Diffstat (limited to 'store')
-rw-r--r-- | store/sql_channel_store.go | 2 | ||||
-rw-r--r-- | store/sql_channel_store_test.go | 17 |
2 files changed, 18 insertions, 1 deletions
diff --git a/store/sql_channel_store.go b/store/sql_channel_store.go index 3ce672a68..aed568b46 100644 --- a/store/sql_channel_store.go +++ b/store/sql_channel_store.go @@ -210,7 +210,7 @@ func (s SqlChannelStore) saveChannelT(transaction *gorp.Transaction, channel *mo if err := transaction.Insert(channel); err != nil { if IsUniqueConstraintError(err.Error(), []string{"Name", "channels_name_teamid_key"}) { dupChannel := model.Channel{} - s.GetMaster().SelectOne(&dupChannel, "SELECT * FROM Channels WHERE TeamId = :TeamId AND Name = :Name AND DeleteAt > 0", map[string]interface{}{"TeamId": channel.TeamId, "Name": channel.Name}) + s.GetMaster().SelectOne(&dupChannel, "SELECT * FROM Channels WHERE TeamId = :TeamId AND Name = :Name", map[string]interface{}{"TeamId": channel.TeamId, "Name": channel.Name}) if dupChannel.DeleteAt > 0 { result.Err = model.NewLocAppError("SqlChannelStore.Save", "store.sql_channel.save_channel.previously.app_error", nil, "id="+channel.Id+", "+err.Error()) } else { diff --git a/store/sql_channel_store_test.go b/store/sql_channel_store_test.go index 9b77639b0..d4bcf6b26 100644 --- a/store/sql_channel_store_test.go +++ b/store/sql_channel_store_test.go @@ -88,6 +88,23 @@ func TestChannelStoreSaveDirectChannel(t *testing.T) { t.Fatal("shouldn't be able to update from save") } + // Attempt to save a direct channel that already exists + o1a := model.Channel{ + TeamId: o1.TeamId, + DisplayName: o1.DisplayName, + Name: o1.Name, + Type: o1.Type, + } + + if result := <-store.Channel().SaveDirectChannel(&o1a, &m1, &m2); result.Err == nil { + t.Fatal("should've failed to save a duplicate direct channel") + } else if result.Err.Id != CHANNEL_EXISTS_ERROR { + t.Fatal("should've returned CHANNEL_EXISTS_ERROR") + } else if returned := result.Data.(*model.Channel); returned.Id != o1.Id { + t.Fatal("should've returned original channel when saving a duplicate direct channel") + } + + // Attempt to save a non-direct channel o1.Id = "" o1.Name = "a" + model.NewId() + "b" o1.Type = model.CHANNEL_OPEN |