diff options
Diffstat (limited to 'spec/controllers/request_controller_spec.rb')
| -rw-r--r-- | spec/controllers/request_controller_spec.rb | 66 | 
1 files changed, 62 insertions, 4 deletions
diff --git a/spec/controllers/request_controller_spec.rb b/spec/controllers/request_controller_spec.rb index 625bf17e7..148e4327d 100644 --- a/spec/controllers/request_controller_spec.rb +++ b/spec/controllers/request_controller_spec.rb @@ -5,7 +5,7 @@ describe RequestController, "when listing recent requests" do      before(:each) do          load_raw_emails_data -        rebuild_xapian_index +        get_fixtures_xapian_index      end      it "should be successful" do @@ -767,7 +767,7 @@ describe RequestController, "when showing one request" do                  assigns[:url_path].should_not == old_path                  response.location.should have_text(/#{assigns[:url_path]}/)                  zipfile = Zip::ZipFile.open(File.join(File.dirname(__FILE__), "../../cache/zips", assigns[:url_path])) { |zipfile| -                    zipfile.count.should == 5 # the message, two hello.txt, the unknown attachment, and its empty message +                    zipfile.count.should == 4 # the message, two hello.txt plus the unknown attachment                  }              end @@ -859,14 +859,36 @@ describe RequestController, "when changing prominence of a request" do          ir.save!          receive_incoming_mail('incoming-request-two-same-name.email', ir.incoming_email) -        get :get_attachment, :incoming_message_id => ir.incoming_messages[1].id, :id => ir.id, :part => 2, :skip_cache => 1 +        get :get_attachment, :incoming_message_id => ir.incoming_messages[1].id, +                             :id => ir.id, +                             :part => 2, +                             :skip_cache => 1          response.content_type.should == "text/html"          response.should_not have_text(/Second hello/)          response.should render_template('request/hidden') -        get :get_attachment, :incoming_message_id => ir.incoming_messages[1].id, :id => ir.id, :part => 3, :skip_cache => 1 +        get :get_attachment, :incoming_message_id => ir.incoming_messages[1].id, +                             :id => ir.id, +                             :part => 3, +                             :skip_cache => 1          response.content_type.should == "text/html"          response.should_not have_text(/First hello/)          response.should render_template('request/hidden') +        response.code.should == '410' +    end + +    it 'should not generate an HTML version of an attachment whose prominence is hidden/requester +        only even for the requester or an admin but should return a 404' do +        ir = info_requests(:fancy_dog_request) +        ir.prominence = 'hidden' +        ir.save! +        receive_incoming_mail('incoming-request-two-same-name.email', ir.incoming_email) +        session[:user_id] = users(:admin_user).id +        lambda do +            get :get_attachment_as_html, :incoming_message_id => ir.incoming_messages[1].id, +                                      :id => ir.id, +                                      :part => 2, +                                      :file_name => ['hello.txt'] +        end.should raise_error(ActiveRecord::RecordNotFound)      end      it 'should not generate an HTML version of an attachment whose prominence is hidden/requester @@ -2204,6 +2226,14 @@ describe RequestController, "when showing similar requests" do          }.should raise_error(ActiveRecord::RecordNotFound)      end + +    it "should return 404 for pages we don't want to serve up" do +        badger_request = info_requests(:badger_request) +        lambda { +            get :similar, :url_title => badger_request.url_title, :page => 100 +        }.should raise_error(ActiveRecord::RecordNotFound) +    end +  end @@ -2291,4 +2321,32 @@ describe RequestController, "when reporting a request (logged in)" do      end  end +describe RequestController, "when caching fragments" do + +    it "should not fail with long filenames" do +        long_name = "blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah.txt" +        info_request = mock(InfoRequest, :user_can_view? => true, +                                         :all_can_view? => true) +        incoming_message = mock(IncomingMessage, :info_request => info_request, +                                                 :parse_raw_email! => true, +                                                 :info_request_id => 132, +                                                 :id => 44, +                                                 :get_attachments_for_display => nil, +                                                 :html_mask_stuff! => nil) +        attachment = mock(FoiAttachment, :display_filename => long_name, +                                         :body_as_html => ['some text', 'wrapper']) +        IncomingMessage.stub!(:find).with("44").and_return(incoming_message) +        IncomingMessage.stub!(:get_attachment_by_url_part_number).and_return(attachment) +        InfoRequest.stub!(:find).with("132").and_return(info_request) +        params = { :file_name => [long_name], +                   :controller => "request", +                   :action => "get_attachment_as_html", +                   :id => "132", +                   :incoming_message_id => "44", +                   :part => "2" } +        get :get_attachment_as_html, params +    end + +end +  | 
