From e53e0a0ccbb4695dbbb01a56598b7c832a9c5a0c Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Thu, 1 Aug 2013 14:53:10 +0100 Subject: Refactor some common setup steps in integration tests into a DSL. Add a failing test for what should happen on request hiding. --- spec/integration/admin_spec.rb | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'spec/integration/admin_spec.rb') diff --git a/spec/integration/admin_spec.rb b/spec/integration/admin_spec.rb index 8a5e59ba2..25872fb4a 100644 --- a/spec/integration/admin_spec.rb +++ b/spec/integration/admin_spec.rb @@ -1,21 +1,27 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') - -require "base64" +require File.expand_path(File.dirname(__FILE__) + '/alaveteli_dsl') describe "When administering the site" do + + before do + AlaveteliConfiguration.stub!(:skip_admin_auth).and_return(false) + end + it "allows an admin to log in as another user" do # First log in as Joe Admin - admin_user = users(:admin_user) - admin_user.email_confirmed = true - admin_user.save! - post_via_redirect "/profile/sign_in", :user_signin => {:email => admin_user.email, :password => "jonespassword"} - response.should be_success - + confirm(:admin_user) + admin = login(:admin_user) + # Now fetch the "log in as" link to log in as Bob - get_via_redirect "/admin/user/login_as/#{users(:bob_smith_user).id}", nil, { - "Authorization" => "Basic " + Base64.encode64("#{AlaveteliConfiguration::admin_username}:#{AlaveteliConfiguration::admin_password}").strip - } - response.should be_success - session[:user_id].should == users(:bob_smith_user).id + admin.get_via_redirect "/admin/user/login_as/#{users(:bob_smith_user).id}" + admin.response.should be_success + admin.session[:user_id].should == users(:bob_smith_user).id + end + + it 'does not allow a non-admin user to login as another user' do + robin = login(:robin_user) + robin.get_via_redirect "/admin/user/login_as/#{users(:bob_smith_user).id}" + robin.response.should be_success + robin.session[:user_id].should_not == users(:bob_smith_user).id end end -- cgit v1.2.3 From 1887774daee72298174901d10b4e75492b9911d2 Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Thu, 8 Aug 2013 17:14:51 +0100 Subject: Move incoming message admin to its own controller. Make specs that depend on multiple controllers and models interacting integration specs. --- spec/integration/admin_spec.rb | 51 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) (limited to 'spec/integration/admin_spec.rb') diff --git a/spec/integration/admin_spec.rb b/spec/integration/admin_spec.rb index 25872fb4a..5842eeb00 100644 --- a/spec/integration/admin_spec.rb +++ b/spec/integration/admin_spec.rb @@ -13,15 +13,62 @@ describe "When administering the site" do admin = login(:admin_user) # Now fetch the "log in as" link to log in as Bob - admin.get_via_redirect "/admin/user/login_as/#{users(:bob_smith_user).id}" + admin.get_via_redirect "/en/admin/user/login_as/#{users(:bob_smith_user).id}" admin.response.should be_success admin.session[:user_id].should == users(:bob_smith_user).id end it 'does not allow a non-admin user to login as another user' do robin = login(:robin_user) - robin.get_via_redirect "/admin/user/login_as/#{users(:bob_smith_user).id}" + robin.get_via_redirect "/en/admin/user/login_as/#{users(:bob_smith_user).id}" robin.response.should be_success robin.session[:user_id].should_not == users(:bob_smith_user).id end + + it "allows redelivery of an incoming message to a closed request" do + confirm(:admin_user) + admin = login(:admin_user) + ir = info_requests(:fancy_dog_request) + close_request(ir) + InfoRequest.holding_pen_request.incoming_messages.length.should == 0 + ir.incoming_messages.length.should == 1 + receive_incoming_mail('incoming-request-plain.email', ir.incoming_email, "frob@nowhere.com") + InfoRequest.holding_pen_request.incoming_messages.length.should == 1 + new_im = InfoRequest.holding_pen_request.incoming_messages[0] + ir.incoming_messages.length.should == 1 + post_params = {'redeliver_incoming_message_id' => new_im.id, + 'url_title' => ir.url_title} + admin.post '/en/admin/request/redeliver_incoming', post_params + admin.response.location.should == 'http://www.example.com/en/admin/request/show/101' + ir = InfoRequest.find_by_url_title(ir.url_title) + ir.incoming_messages.length.should == 2 + + InfoRequest.holding_pen_request.incoming_messages.length.should == 0 + end + + it "allows redelivery of an incoming message to more than one request" do + confirm(:admin_user) + admin = login(:admin_user) + + ir1 = info_requests(:fancy_dog_request) + close_request(ir1) + ir1.incoming_messages.length.should == 1 + ir2 = info_requests(:another_boring_request) + ir2.incoming_messages.length.should == 1 + + receive_incoming_mail('incoming-request-plain.email', ir1.incoming_email, "frob@nowhere.com") + InfoRequest.holding_pen_request.incoming_messages.length.should == 1 + + new_im = InfoRequest.holding_pen_request.incoming_messages[0] + post_params = {'redeliver_incoming_message_id' => new_im.id, + 'url_title' => "#{ir1.url_title},#{ir2.url_title}"} + admin.post '/en/admin/request/redeliver_incoming', post_params + ir1.reload + ir1.incoming_messages.length.should == 2 + ir2.reload + ir2.incoming_messages.length.should == 2 + admin.response.location.should == 'http://www.example.com/en/admin/request/show/106' + InfoRequest.holding_pen_request.incoming_messages.length.should == 0 + end + end -- cgit v1.2.3 From 3ed4f97c4d2d314f3fbddbe1aa0756b94d80b575 Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Mon, 12 Aug 2013 15:14:37 +0100 Subject: Shorter route names and paths --- spec/integration/admin_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'spec/integration/admin_spec.rb') diff --git a/spec/integration/admin_spec.rb b/spec/integration/admin_spec.rb index 5842eeb00..8e6351d2c 100644 --- a/spec/integration/admin_spec.rb +++ b/spec/integration/admin_spec.rb @@ -38,7 +38,7 @@ describe "When administering the site" do ir.incoming_messages.length.should == 1 post_params = {'redeliver_incoming_message_id' => new_im.id, 'url_title' => ir.url_title} - admin.post '/en/admin/request/redeliver_incoming', post_params + admin.post '/en/admin/incoming/redeliver', post_params admin.response.location.should == 'http://www.example.com/en/admin/request/show/101' ir = InfoRequest.find_by_url_title(ir.url_title) ir.incoming_messages.length.should == 2 @@ -62,7 +62,7 @@ describe "When administering the site" do new_im = InfoRequest.holding_pen_request.incoming_messages[0] post_params = {'redeliver_incoming_message_id' => new_im.id, 'url_title' => "#{ir1.url_title},#{ir2.url_title}"} - admin.post '/en/admin/request/redeliver_incoming', post_params + admin.post '/en/admin/incoming/redeliver', post_params ir1.reload ir1.incoming_messages.length.should == 2 ir2.reload -- cgit v1.2.3