diff --git a/app/controllers/status_messages_controller.rb b/app/controllers/status_messages_controller.rb index 77a6b3e5a..ea1e56394 100644 --- a/app/controllers/status_messages_controller.rb +++ b/app/controllers/status_messages_controller.rb @@ -42,27 +42,14 @@ class StatusMessagesController < ApplicationController end respond_to do |format| - format.js { render :json => {:post_id => @status_message.id, - :html => render_to_string( - :partial => 'shared/stream_element', - :locals => { - :post => @status_message, - :person => @status_message.person, - :photos => @status_message.photos, - :comments => [], - :all_aspects => current_user.aspects, - :current_user => current_user - } - ) - }, - :status => 201 } + format.js { render :create, :status => 201} format.html { redirect_to :back} format.mobile{ redirect_to :back} end else respond_to do |format| format.js { render :json =>{:errors => @status_message.errors.full_messages}, :status => 406 } - format.html {redirect_to :back} + format.html {redirect_to :back} end end end diff --git a/app/views/status_messages/create.js.erb b/app/views/status_messages/create.js.erb new file mode 100644 index 000000000..8eac17206 --- /dev/null +++ b/app/views/status_messages/create.js.erb @@ -0,0 +1,11 @@ +<%= {:html => render( + :partial => 'shared/stream_element', + :locals => { + :post => @status_message, + :person => @status_message.person, + :photos => @status_message.photos, + :comments => [], + :all_aspects => current_user.aspects + } + ), + :post_id => @status_message.id}.to_json.html_safe%> diff --git a/spec/controllers/status_messages_controller_spec.rb b/spec/controllers/status_messages_controller_spec.rb index 77521f134..1299fcf7d 100644 --- a/spec/controllers/status_messages_controller_spec.rb +++ b/spec/controllers/status_messages_controller_spec.rb @@ -59,15 +59,29 @@ describe StatusMessagesController do }, :aspect_ids => [@aspect1.id.to_s] } } - it 'responds to js requests' do - post :create, status_message_hash.merge(:format => 'js') - response.status.should == 201 + context 'js requests' do + it 'responds' do + post :create, status_message_hash.merge(:format => 'js') + response.status.should == 201 + end + it 'responds with json' do + post :create, status_message_hash.merge(:format => 'js') + json = JSON.parse(response.body) + json['post_id'].should_not be_nil + json['html'].should_not be_nil + end + it 'escapes XSS' do + xss = "" + post :create, status_message_hash.merge(:format => 'js', :message => xss) + json = JSON.parse(response.body) + json['html'].should_not =~ /