diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/integration/alaveteli_dsl.rb | 9 | ||||
-rw-r--r-- | spec/integration/view_request_spec.rb | 22 | ||||
-rw-r--r-- | spec/models/info_request_spec.rb | 17 |
3 files changed, 48 insertions, 0 deletions
diff --git a/spec/integration/alaveteli_dsl.rb b/spec/integration/alaveteli_dsl.rb index 119bb05a0..1d56abbdf 100644 --- a/spec/integration/alaveteli_dsl.rb +++ b/spec/integration/alaveteli_dsl.rb @@ -64,5 +64,14 @@ def close_request(request) request.save! end +def cache_directories_exist?(request) + cache_path = File.join(Rails.root, 'cache', 'views') + paths = [File.join(cache_path, 'request', request.request_dirs)] + I18n.available_locales.each do |locale| + paths << File.join(cache_path, locale.to_s, 'request', request.request_dirs) + end + paths.any?{ |path| File.exist?(path) } +end + diff --git a/spec/integration/view_request_spec.rb b/spec/integration/view_request_spec.rb index 814e20fb3..eecb984f5 100644 --- a/spec/integration/view_request_spec.rb +++ b/spec/integration/view_request_spec.rb @@ -19,6 +19,28 @@ describe "When viewing requests" do @unregistered.browses_request("#{@info_request.url_title}?action=add") end + context "when a request is hidden by an admin" do + + it 'should not retain any cached attachments to be served up by the webserver' do + admin = login(FactoryGirl.create(:admin_user)) + non_owner = login(FactoryGirl.create(:user)) + info_request = FactoryGirl.create(:info_request_with_incoming_attachments) + incoming_message = info_request.incoming_messages.first + attachment_url = "/es/request/#{info_request.id}/response/#{incoming_message.id}/attach/2/interesting.pdf" + non_owner.get(attachment_url) + cache_directories_exist?(info_request).should be_true + + # Admin makes the incoming message requester only + post_data = {:incoming_message => {:prominence => 'hidden', + :prominence_reason => 'boring'}} + admin.post_via_redirect "/admin/incoming/update/#{info_request.incoming_messages.first.id}", post_data + admin.response.should be_success + + cache_directories_exist?(info_request).should be_false + end + + end + context 'when a response has prominence "normal"' do before do diff --git a/spec/models/info_request_spec.rb b/spec/models/info_request_spec.rb index 12499f50a..afb8e0949 100644 --- a/spec/models/info_request_spec.rb +++ b/spec/models/info_request_spec.rb @@ -147,6 +147,23 @@ describe InfoRequest do end + describe 'when managing the cache directories' do + before do + @info_request = info_requests(:fancy_dog_request) + end + + it 'should return the default locale cache path without locale parts' do + default_locale_path = File.join(Rails.root, 'cache', 'views', 'request', '101', '101') + @info_request.foi_fragment_cache_directories.include?(default_locale_path).should == true + end + + it 'should return the cache path for any other locales' do + other_locale_path = File.join(Rails.root, 'cache', 'views', 'es', 'request', '101', '101') + @info_request.foi_fragment_cache_directories.include?(other_locale_path).should == true + end + + end + describe " when emailing" do before do |