From b3c859bcd53f9efb95a0f4d3f353aaa0255c0bb5 Mon Sep 17 00:00:00 2001
From: David Thompson <dave@izanagi>
Date: Sat, 15 Jun 2013 17:14:30 -0400
Subject: [PATCH] Check for nil before splitting contact_ids param.

---
 app/controllers/conversations_controller.rb   |  5 ++--
 .../conversations_controller_spec.rb          | 27 +++++++++++++++++++
 2 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/app/controllers/conversations_controller.rb b/app/controllers/conversations_controller.rb
index 75ef768bd6..9dc6ea2d1d 100644
--- a/app/controllers/conversations_controller.rb
+++ b/app/controllers/conversations_controller.rb
@@ -29,8 +29,9 @@ class ConversationsController < ApplicationController
   end
 
   def create
-    person_ids = Contact.where(:id => params[:contact_ids].split(',')).map! do |contact|
-      contact.person_id
+    # Can't split nil
+    if params[:contact_ids]
+      person_ids = Contact.where(:id => params[:contact_ids].split(',')).map(&:person_id)
     end
 
     params[:conversation][:participant_ids] = person_ids | [current_user.person_id]
diff --git a/spec/controllers/conversations_controller_spec.rb b/spec/controllers/conversations_controller_spec.rb
index 60e3bf7398..a0ee29e32d 100644
--- a/spec/controllers/conversations_controller_spec.rb
+++ b/spec/controllers/conversations_controller_spec.rb
@@ -192,6 +192,33 @@ describe ConversationsController do
         }.should_not change(Message, :count).by(1)
       end
     end
+
+    context 'with nil contact' do
+      before do
+        @hash = {
+          :conversation => {
+            :subject => 'secret stuff',
+            :text => 'text debug'
+          },
+          :contact_ids => nil
+        }
+        Conversation.stub(:new).and_return(double(Conversation,
+                                                  :save => false,
+                                                  :id => 1))
+      end
+
+      it 'does not create a conversation' do
+        lambda {
+          post :create, @hash
+        }.should_not change(Conversation, :count).by(1)
+      end
+
+      it 'does not create a message' do
+        lambda {
+          post :create, @hash
+        }.should_not change(Message, :count).by(1)
+      end
+    end
   end
 
   describe '#show' do
-- 
GitLab