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