aboutsummaryrefslogtreecommitdiffstats
path: root/spec/controllers/application_controller_spec.rb
blob: f16cee3127a02a7c1531e32e1c46db917286a45b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
require 'fakeweb'

describe ApplicationController, "when accessing third party services" do
    before (:each) do
        FakeWeb.clean_registry
    end
    after (:each) do
        FakeWeb.clean_registry
    end
    it "should succeed if the service responds OK" do
        config = MySociety::Config.load_default()
        config['GAZE_URL'] = 'http://denmark.com'
        FakeWeb.register_uri(:get, %r|denmark.com|, :body => "DK")
        country = self.controller.send :country_from_ip
        country.should == "DK"
    end
    it "should fail silently if the country_from_ip domain doesn't exist" do
        config = MySociety::Config.load_default()
        config['GAZE_URL'] = 'http://12123sdf14qsd.com'
        country = self.controller.send :country_from_ip
        country.should == config['ISO_COUNTRY_CODE']
    end
    it "should fail silently if the country_from_ip service doesn't exist" do
        config = MySociety::Config.load_default()
        config['GAZE_URL'] = 'http://www.google.com'
        country = self.controller.send :country_from_ip
        country.should == config['ISO_COUNTRY_CODE']
    end
    it "should fail silently if the country_from_ip service returns an error" do
        FakeWeb.register_uri(:get, %r|500.com|, :body => "Error", :status => ["500", "Error"])
        config = MySociety::Config.load_default()
        config['GAZE_URL'] = 'http://500.com'
        country = self.controller.send :country_from_ip
        country.should == config['ISO_COUNTRY_CODE']
    end
end

describe ApplicationController, "when caching fragments" do
    it "should not fail with long filenames" do
        long_name = "blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah.txt"
        path = self.controller.send(:foi_fragment_cache_path, long_name)
        self.controller.send(:foi_fragment_cache_write, path, "whassap")
    end

end
t's just not" end it "should not allow a request to be reported twice" do title = info_requests(:badger_request).url_title post :create, :request_id => title, :reason => "my reason" response.should redirect_to show_request_url(:url_title => title) post :create, :request_id => title, :reason => "my reason" response.should redirect_to show_request_url(:url_title => title) flash[:notice].should =~ /has already been reported/ end it "should send an email from the reporter to admins" do ir = info_requests(:badger_request) title = ir.url_title post :create, :request_id => title, :reason => "my reason" deliveries = ActionMailer::Base.deliveries deliveries.size.should == 1 mail = deliveries[0] mail.subject.should =~ /attention_requested/ mail.from.should include(@user.email) mail.body.should include(@user.name) end it "should force the user to pick a reason" do info_request = mock_model(InfoRequest, :report! => nil, :url_title => "foo", :report_reasons => ["Not FOIish enough"]) InfoRequest.should_receive(:find_by_url_title!).with("foo").and_return(info_request) post :create, :request_id => "foo", :reason => "" response.should render_template("new") flash[:error].should == "Please choose a reason" end end describe ReportsController, "#new_report_request" do let(:info_request) { mock_model(InfoRequest, :url_title => "foo") } before :each do InfoRequest.should_receive(:find_by_url_title!).with("foo").and_return(info_request) end context "not logged in" do it "should require the user to be logged in" do get :new, :request_id => "foo" response.should_not render_template("new") end end context "logged in" do before :each do session[:user_id] = users(:bob_smith_user).id end it "should show the form" do get :new, :request_id => "foo" response.should render_template("new") end end end