frameworks-capybara 0.3.0.rc5 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.travis.yml +2 -6
- data/CHANGES +52 -0
- data/Gemfile +3 -1
- data/Gemfile.lock +59 -52
- data/README.rdoc +19 -4
- data/frameworks-capybara.gemspec +7 -3
- data/lib/frameworks/capybara.rb +39 -16
- data/lib/frameworks/cucumber.rb +58 -33
- data/lib/monkey-patches/capybara-mechanize-patches.rb +30 -9
- data/lib/monkey-patches/cucumber-patches.rb +5 -1
- data/lib/monkey-patches/mechanize-patches.rb +17 -4
- data/lib/tasks/frameworks-tasks.rb +1 -1
- data/lib/version.rb +1 -1
- data/spec/capybara_mechanize_patches_spec.rb +124 -0
- data/spec/frameworks_capybara_spec.rb +127 -12
- data/spec/frameworks_cucumber_spec.rb +114 -3
- data/spec/spec_helper.rb +1 -0
- metadata +209 -179
- data/lib/monkey-patches/capybara-webkit-patches.rb +0 -26
@@ -7,7 +7,11 @@ module Cucumber
|
|
7
7
|
@project_name = ENV['PROJECT_NAME'] || ''
|
8
8
|
unless @project_name.empty? then @project_name += ' - ' end
|
9
9
|
|
10
|
-
|
10
|
+
if Cucumber::Ast::Feature.method_defined?(:step_count)
|
11
|
+
@step_count = features.step_count # cucumber >=1.3.0
|
12
|
+
else
|
13
|
+
@step_count = get_step_count(features) # cucumber <1.3.0
|
14
|
+
end
|
11
15
|
|
12
16
|
# <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
13
17
|
@builder.declare!(
|
@@ -4,9 +4,9 @@ require 'mechanize'
|
|
4
4
|
#we check after response and it may be the last response we need it to clear here.
|
5
5
|
class Mechanize::CookieJar
|
6
6
|
alias_method :old_add, :add
|
7
|
-
def add(
|
7
|
+
def add(*args)
|
8
8
|
cleanup
|
9
|
-
old_add(
|
9
|
+
old_add(*args)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
#This patch may still be required, think it is only not needed now because we don't run
|
@@ -58,8 +58,17 @@ end
|
|
58
58
|
=end
|
59
59
|
|
60
60
|
# This patch prevents Mechanize from raising a Mechanize::ResponseCodeError
|
61
|
-
# when the HTTP Response Code is
|
61
|
+
# when the HTTP Response Code is in `allowed_error_codes`.
|
62
|
+
# https://github.com/tenderlove/mechanize/pull/248
|
62
63
|
class Mechanize::HTTP::Agent
|
64
|
+
attr_accessor :allowed_error_codes
|
65
|
+
|
66
|
+
alias_method :old_initialize, :initialize
|
67
|
+
def initialize
|
68
|
+
@allowed_error_codes = []
|
69
|
+
old_initialize
|
70
|
+
end
|
71
|
+
|
63
72
|
def fetch uri, method = :get, headers = {}, params = [],
|
64
73
|
referer = current_page, redirects = 0
|
65
74
|
referer_uri = referer ? referer.uri : nil
|
@@ -156,7 +165,11 @@ class Mechanize::HTTP::Agent
|
|
156
165
|
referer)
|
157
166
|
else
|
158
167
|
# BEGIN PATCH
|
159
|
-
if
|
168
|
+
if @allowed_error_codes.any? {|code| code.to_s == page.code} then
|
169
|
+
if robots && page.is_a?(Mechanize::Page)
|
170
|
+
page.parser.noindex? and raise Mechanize::RobotsDisallowedError.new(uri)
|
171
|
+
end
|
172
|
+
|
160
173
|
page
|
161
174
|
else
|
162
175
|
raise Mechanize::ResponseCodeError.new(page, 'unhandled response')
|
@@ -24,7 +24,7 @@ class RakeHelpers
|
|
24
24
|
f = File.open('config/cucumber.yml', 'r')
|
25
25
|
linenum = 0
|
26
26
|
@profiles = {}
|
27
|
-
f.
|
27
|
+
f.readlines.each do |line|
|
28
28
|
line.scan(/.*?: /) do |match|
|
29
29
|
linenum += 1
|
30
30
|
puts color(linenum.to_s + '. ', :color => :yellow) + color(match.gsub(':',''), :color => :green)
|
data/lib/version.rb
CHANGED
@@ -0,0 +1,124 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rspec/mocks/mock'
|
3
|
+
require 'uri'
|
4
|
+
|
5
|
+
describe Capybara::Mechanize::Browser do
|
6
|
+
|
7
|
+
RSpec::Mocks::setup(self)
|
8
|
+
|
9
|
+
it "shouldn't send referer if unknown" do
|
10
|
+
|
11
|
+
agent = double()
|
12
|
+
agent.stub('get' => true)
|
13
|
+
agent.should_receive('get').with(
|
14
|
+
"http://example.bbc.co.uk/test",
|
15
|
+
{},
|
16
|
+
nil,
|
17
|
+
{}
|
18
|
+
)
|
19
|
+
|
20
|
+
driver = double("Capybara::Mechanize::Driver")
|
21
|
+
|
22
|
+
browser = Capybara::Mechanize::Browser.new(driver)
|
23
|
+
browser.stub('current_url' => "")
|
24
|
+
browser.stub('agent' => agent)
|
25
|
+
|
26
|
+
browser.process_remote_request(:get, 'http://example.bbc.co.uk/test', {}, {})
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should not change behaviour for POST requests" do
|
30
|
+
|
31
|
+
agent = double()
|
32
|
+
agent.stub('post' => true)
|
33
|
+
agent.should_receive('post').with("http://example.bbc.co.uk/test")
|
34
|
+
|
35
|
+
driver = double("Capybara::Mechanize::Driver")
|
36
|
+
|
37
|
+
browser = Capybara::Mechanize::Browser.new(driver)
|
38
|
+
browser.stub('current_url' => "http://example.bbc.co.uk/blah")
|
39
|
+
browser.stub('agent' => agent)
|
40
|
+
|
41
|
+
browser.process_remote_request(:post, 'http://example.bbc.co.uk/test', {}, {})
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should not send referer for requests from HTTPs to HTTP" do
|
45
|
+
|
46
|
+
agent = double()
|
47
|
+
agent.stub('get' => true)
|
48
|
+
agent.should_receive('get').with(
|
49
|
+
"http://example.bbc.co.uk/test",
|
50
|
+
{},
|
51
|
+
nil,
|
52
|
+
{}
|
53
|
+
)
|
54
|
+
|
55
|
+
driver = double("Capybara::Mechanize::Driver")
|
56
|
+
|
57
|
+
browser = Capybara::Mechanize::Browser.new(driver)
|
58
|
+
browser.stub('current_url' => "https://example.bbc.co.uk/blah")
|
59
|
+
browser.stub('agent' => agent)
|
60
|
+
|
61
|
+
browser.process_remote_request(:get, 'http://example.bbc.co.uk/test', {}, {})
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should send referer for requests from HTTP to HTTPs" do
|
65
|
+
|
66
|
+
agent = double()
|
67
|
+
agent.stub('get' => true)
|
68
|
+
agent.should_receive('get').with(
|
69
|
+
"https://example.bbc.co.uk/test",
|
70
|
+
{},
|
71
|
+
"http://example.bbc.co.uk/blah",
|
72
|
+
{}
|
73
|
+
)
|
74
|
+
|
75
|
+
driver = double("Capybara::Mechanize::Driver")
|
76
|
+
|
77
|
+
browser = Capybara::Mechanize::Browser.new(driver)
|
78
|
+
browser.stub('current_url' => "http://example.bbc.co.uk/blah")
|
79
|
+
browser.stub('agent' => agent)
|
80
|
+
|
81
|
+
browser.process_remote_request(:get, 'https://example.bbc.co.uk/test', {}, {})
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should send referer for requests from HTTP to HTTP" do
|
85
|
+
|
86
|
+
agent = double()
|
87
|
+
agent.stub('get' => true)
|
88
|
+
agent.should_receive('get').with(
|
89
|
+
"http://example.bbc.co.uk/test",
|
90
|
+
{},
|
91
|
+
"http://example.bbc.co.uk/blah",
|
92
|
+
{}
|
93
|
+
)
|
94
|
+
|
95
|
+
driver = double("Capybara::Mechanize::Driver")
|
96
|
+
|
97
|
+
browser = Capybara::Mechanize::Browser.new(driver)
|
98
|
+
browser.stub('current_url' => "http://example.bbc.co.uk/blah")
|
99
|
+
browser.stub('agent' => agent)
|
100
|
+
|
101
|
+
browser.process_remote_request(:get, 'http://example.bbc.co.uk/test', {}, {})
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should send referer for requests from HTTPs to HTTPs" do
|
105
|
+
|
106
|
+
agent = double()
|
107
|
+
agent.stub('get' => true)
|
108
|
+
agent.should_receive('get').with(
|
109
|
+
"https://example.bbc.co.uk/test",
|
110
|
+
{},
|
111
|
+
"https://example.bbc.co.uk/blah",
|
112
|
+
{}
|
113
|
+
)
|
114
|
+
|
115
|
+
driver = double("Capybara::Mechanize::Driver")
|
116
|
+
|
117
|
+
browser = Capybara::Mechanize::Browser.new(driver)
|
118
|
+
browser.stub('current_url' => "https://example.bbc.co.uk/blah")
|
119
|
+
browser.stub('agent' => agent)
|
120
|
+
|
121
|
+
browser.process_remote_request(:get, 'https://example.bbc.co.uk/test', {}, {})
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'securerandom'
|
2
3
|
##
|
3
4
|
#Monkey Patch
|
4
5
|
#This is required because Capybara has module methods (singletons) which create
|
@@ -116,7 +117,7 @@ describe CapybaraSetup do
|
|
116
117
|
before do
|
117
118
|
ENV['BROWSER'] = 'firefox'
|
118
119
|
ENV['FIREFOX_PROFILE'] = 'BBC_INTERNAL'
|
119
|
-
ENV['HTTP_PROXY'] = 'http://example.cache.co.uk:80'
|
120
|
+
ENV['HTTP_PROXY'] = 'http://example.cache.co.uk:80/'
|
120
121
|
ENV['PROXY_ON'] = 'false'
|
121
122
|
end
|
122
123
|
|
@@ -127,7 +128,7 @@ describe CapybaraSetup do
|
|
127
128
|
Capybara.current_session.driver.options[:browser].should == :firefox
|
128
129
|
Capybara.current_session.driver.options[:profile].should be_a_kind_of Selenium::WebDriver::Firefox::Profile
|
129
130
|
Capybara.current_session.driver.options[:profile].instance_variable_get(:@additional_prefs)['network.proxy.type'].should == 1
|
130
|
-
Capybara.current_session.driver.options[:profile].instance_variable_get(:@additional_prefs)['network.proxy.no_proxies_on'].should == '*.sandbox.dev.bbc.co.uk'
|
131
|
+
Capybara.current_session.driver.options[:profile].instance_variable_get(:@additional_prefs)['network.proxy.no_proxies_on'].should == '*.sandbox.dev.bbc.co.uk,*.sandbox.bbc.co.uk'
|
131
132
|
Capybara.current_session.driver.options[:profile].instance_variable_get(:@additional_prefs)['network.proxy.http'].should == 'example.cache.co.uk'
|
132
133
|
Capybara.current_session.driver.options[:profile].instance_variable_get(:@additional_prefs)['network.proxy.http_port'].should == 80
|
133
134
|
Capybara.current_session.driver.options[:profile].instance_variable_get(:@additional_prefs)['network.proxy.ssl'].should == 'example.cache.co.uk'
|
@@ -216,7 +217,7 @@ describe CapybaraSetup do
|
|
216
217
|
Capybara.current_session.driver.options[:browser].should == :remote
|
217
218
|
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:firefox_profile].should be_a_kind_of Selenium::WebDriver::Firefox::Profile
|
218
219
|
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:firefox_profile].instance_variable_get(:@additional_prefs)['network.proxy.type'].should == 1
|
219
|
-
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:firefox_profile].instance_variable_get(:@additional_prefs)['network.proxy.no_proxies_on'].should == '*.sandbox.dev.bbc.co.uk'
|
220
|
+
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:firefox_profile].instance_variable_get(:@additional_prefs)['network.proxy.no_proxies_on'].should == '*.sandbox.dev.bbc.co.uk,*.sandbox.bbc.co.uk'
|
220
221
|
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:firefox_profile].instance_variable_get(:@additional_prefs)['network.proxy.http'].should == 'example.cache.co.uk'
|
221
222
|
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:firefox_profile].instance_variable_get(:@additional_prefs)['network.proxy.http_port'].should == 80
|
222
223
|
Capybara.current_session.driver.options[:desired_capabilities].instance_variable_get(:@capabilities)[:firefox_profile].instance_variable_get(:@additional_prefs)['network.proxy.ssl'].should == 'example.cache.co.uk'
|
@@ -448,23 +449,137 @@ describe CapybaraSetup do
|
|
448
449
|
end
|
449
450
|
end
|
450
451
|
|
451
|
-
|
452
|
+
context "integration tests for update_firefox_profile_with_certificates() method" do
|
453
|
+
before do
|
454
|
+
def write_random_data(file_path)
|
455
|
+
file_data = SecureRandom.hex
|
456
|
+
File.open(file_path, "w") { |a_file|
|
457
|
+
a_file.write(file_data)
|
458
|
+
}
|
459
|
+
file_data
|
460
|
+
end
|
461
|
+
|
462
|
+
def compare_file_data(profile_path, file_name, expected_data)
|
463
|
+
profile_file = profile_path + File::SEPARATOR + file_name
|
464
|
+
actual_data = nil
|
465
|
+
File.open(profile_file, "r") { |a_file|
|
466
|
+
actual_data = a_file.read
|
467
|
+
}
|
468
|
+
expected_data.should == actual_data
|
469
|
+
end
|
470
|
+
|
471
|
+
ENV['BROWSER'] = 'firefox'
|
472
|
+
ENV['ENVIRONMENT'] = 'test'
|
473
|
+
ENV['HTTP_PROXY'] = 'http://example.cache.co.uk:80'
|
474
|
+
@cert_dir = Dir.mktmpdir
|
475
|
+
@cert8_db = @cert_dir + File::SEPARATOR + 'cert8.db'
|
476
|
+
@key3_db = @cert_dir + File::SEPARATOR + 'key3.db'
|
477
|
+
@secmod_db = @cert_dir + File::SEPARATOR + 'secmod.db'
|
478
|
+
end
|
452
479
|
|
480
|
+
after do
|
481
|
+
FileUtils.remove_entry @cert_dir
|
482
|
+
end
|
453
483
|
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
484
|
+
it "should raise an exception if the cert8.db file is missing in the source directory" do
|
485
|
+
profile = Selenium::WebDriver::Firefox::Profile.new
|
486
|
+
|
487
|
+
key3_data = write_random_data(@key3_db)
|
488
|
+
secmod_data = write_random_data(@secmod_db)
|
489
|
+
|
490
|
+
an_exception = nil
|
491
|
+
begin
|
492
|
+
CapybaraSetup.new.instance_exec(profile, @cert_dir) { |profile, certificate_path|
|
493
|
+
update_firefox_profile_with_certificates(profile, certificate_path)
|
494
|
+
}
|
495
|
+
rescue RuntimeError => e
|
496
|
+
an_exception = e
|
497
|
+
end
|
498
|
+
|
499
|
+
an_exception.should_not be_nil
|
458
500
|
end
|
459
501
|
|
460
|
-
it "should
|
461
|
-
|
462
|
-
|
463
|
-
|
502
|
+
it "should raise an exception if the key3.db file is missing in the source directory" do
|
503
|
+
profile = Selenium::WebDriver::Firefox::Profile.new
|
504
|
+
|
505
|
+
cert8_data = write_random_data(@cert8_db)
|
506
|
+
secmod_data = write_random_data(@secmod_db)
|
507
|
+
|
508
|
+
an_exception = nil
|
509
|
+
begin
|
510
|
+
CapybaraSetup.new.instance_exec(profile, @cert_dir) { |profile, certificate_path|
|
511
|
+
update_firefox_profile_with_certificates(profile, certificate_path)
|
512
|
+
}
|
513
|
+
rescue RuntimeError => e
|
514
|
+
an_exception = e
|
515
|
+
end
|
516
|
+
|
517
|
+
an_exception.should_not be_nil
|
518
|
+
end
|
519
|
+
|
520
|
+
it "should raise an exception if the secmod.db file is missing in the source directory" do
|
521
|
+
profile = Selenium::WebDriver::Firefox::Profile.new
|
522
|
+
|
523
|
+
cert8_data = write_random_data(@cert8_db)
|
524
|
+
key3_data = write_random_data(@key3_db)
|
525
|
+
|
526
|
+
an_exception = nil
|
527
|
+
begin
|
528
|
+
CapybaraSetup.new.instance_exec(profile, @cert_dir) { |profile, certificate_path|
|
529
|
+
update_firefox_profile_with_certificates(profile, certificate_path)
|
530
|
+
}
|
531
|
+
rescue RuntimeError => e
|
532
|
+
an_exception = e
|
533
|
+
end
|
534
|
+
|
535
|
+
an_exception.should_not be_nil
|
536
|
+
end
|
537
|
+
|
538
|
+
it "should update a firefox profile with valid references to certificate db files" do
|
539
|
+
|
540
|
+
profile = Selenium::WebDriver::Firefox::Profile.new
|
541
|
+
|
542
|
+
cert8_data = write_random_data(@cert8_db)
|
543
|
+
key3_data = write_random_data(@key3_db)
|
544
|
+
secmod_data = write_random_data(@secmod_db)
|
545
|
+
|
546
|
+
setup = CapybaraSetup.new
|
547
|
+
result = setup.instance_exec(profile, @cert_dir) { |profile, certificate_path|
|
548
|
+
update_firefox_profile_with_certificates(profile, certificate_path)
|
549
|
+
}
|
550
|
+
profile_path = result.layout_on_disk
|
551
|
+
compare_file_data(profile_path, 'cert8.db', cert8_data)
|
552
|
+
compare_file_data(profile_path, 'key3.db', key3_data)
|
553
|
+
compare_file_data(profile_path, 'secmod.db', secmod_data)
|
464
554
|
end
|
555
|
+
|
556
|
+
it "should update a firefox profile with references to certificate db files with prefixes" do
|
557
|
+
|
558
|
+
profile = Selenium::WebDriver::Firefox::Profile.new
|
559
|
+
cert_prefix = 'a'
|
560
|
+
@cert8_db = @cert_dir + File::SEPARATOR + cert_prefix + 'cert8.db'
|
561
|
+
@key3_db = @cert_dir + File::SEPARATOR + cert_prefix + 'key3.db'
|
562
|
+
@secmod_db = @cert_dir + File::SEPARATOR + cert_prefix + 'secmod.db'
|
563
|
+
|
564
|
+
cert8_data = write_random_data(@cert8_db)
|
565
|
+
key3_data = write_random_data(@key3_db)
|
566
|
+
secmod_data = write_random_data(@secmod_db)
|
567
|
+
|
568
|
+
setup = CapybaraSetup.new
|
569
|
+
result = setup.instance_exec(profile, @cert_dir, cert_prefix) { |profile, certificate_path, certificate_prefix, result|
|
570
|
+
update_firefox_profile_with_certificates(profile, certificate_path, certificate_prefix)
|
571
|
+
}
|
572
|
+
profile_path = result.layout_on_disk
|
573
|
+
compare_file_data(profile_path, 'cert8.db', cert8_data)
|
574
|
+
compare_file_data(profile_path, 'key3.db', key3_data)
|
575
|
+
compare_file_data(profile_path, 'secmod.db', secmod_data)
|
576
|
+
end
|
577
|
+
|
465
578
|
end
|
579
|
+
|
466
580
|
end
|
467
581
|
|
582
|
+
|
468
583
|
end
|
469
584
|
end
|
470
585
|
end
|
@@ -20,6 +20,16 @@ describe Frameworks::EnvHelper do
|
|
20
20
|
@mobile_base_url.should == 'http://mobile.sandbox.dev.bbc.co.uk'
|
21
21
|
end
|
22
22
|
|
23
|
+
it "should be able to set a local system6 url" do
|
24
|
+
ENV['ENVIRONMENT'] = 'sandbox6'
|
25
|
+
generate_base_urls
|
26
|
+
@base_url.should == 'http://sandbox.bbc.co.uk'
|
27
|
+
@ssl_base_url.should == 'https://ssl.sandbox.bbc.co.uk'
|
28
|
+
@static_base_url.should == 'http://static.sandbox.bbc.co.uk'
|
29
|
+
@m_base_url.should == 'http://m.sandbox.bbc.co.uk'
|
30
|
+
@mobile_base_url.should == 'http://mobile.sandbox.bbc.co.uk'
|
31
|
+
end
|
32
|
+
|
23
33
|
it "should be able to set a base url" do
|
24
34
|
ENV['ENVIRONMENT'] = 'foo'
|
25
35
|
generate_base_urls
|
@@ -114,27 +124,128 @@ describe Frameworks::EnvHelper do
|
|
114
124
|
@open_base_url.should == 'https://open.foo.bbc.co.uk'
|
115
125
|
end
|
116
126
|
|
117
|
-
it "should be able to set proxy host correctly to use in tests using HTTP_PROXY env variable" do
|
127
|
+
it "should be able to set proxy host and port correctly to use in tests using HTTP_PROXY env variable" do
|
118
128
|
ENV['ENVIRONMENT'] = 'foo'
|
119
|
-
ENV['HTTP_PROXY'] = 'http://mycache.co.uk:
|
129
|
+
ENV['HTTP_PROXY'] = 'http://mycache.co.uk:8080'
|
120
130
|
generate_base_urls
|
121
131
|
@proxy_host.should == "mycache.co.uk"
|
132
|
+
@proxy_port.should == "8080"
|
122
133
|
end
|
123
134
|
|
124
135
|
it "should be able to set proxy host correctly to use in tests using http_proxy env variable" do
|
125
136
|
ENV['ENVIRONMENT'] = 'foo'
|
126
|
-
ENV['http_proxy'] = 'http://mycache.co.uk:
|
137
|
+
ENV['http_proxy'] = 'http://mycache.co.uk:8080'
|
138
|
+
generate_base_urls
|
139
|
+
@proxy_host.should == "mycache.co.uk"
|
140
|
+
@proxy_port.should == "8080"
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should be able to use 80 as default proxy port when none specified" do
|
144
|
+
ENV['ENVIRONMENT'] = 'foo'
|
145
|
+
ENV['http_proxy'] = 'http://mycache.co.uk'
|
146
|
+
generate_base_urls
|
147
|
+
@proxy_host.should == "mycache.co.uk"
|
148
|
+
@proxy_port.should == "80"
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should be able to handle an environment variable which doesn't have the protocol" do
|
152
|
+
ENV['ENVIRONMENT'] = 'foo'
|
153
|
+
ENV['http_proxy'] = 'mycache.co.uk'
|
127
154
|
generate_base_urls
|
128
155
|
@proxy_host.should == "mycache.co.uk"
|
156
|
+
@proxy_port.should == "80"
|
157
|
+
end
|
158
|
+
|
159
|
+
it "should be able to have an empty http_proxy environment variable" do
|
160
|
+
ENV['ENVIRONMENT'] = 'foo'
|
161
|
+
ENV['http_proxy'] = ''
|
162
|
+
generate_base_urls
|
163
|
+
@proxy_host.should be_nil
|
164
|
+
@proxy_port.should be_nil
|
165
|
+
end
|
166
|
+
|
167
|
+
it "should be able to set a local url with expected domain" do
|
168
|
+
ENV['ENVIRONMENT'] = 'sandbox'
|
169
|
+
ENV['FW_BBC_DOMAIN'] = 'bbc.com'
|
170
|
+
generate_base_urls
|
171
|
+
@base_url.should == 'http://pal.sandbox.dev.bbc.com'
|
172
|
+
@ssl_base_url.should == 'https://ssl.sandbox.dev.bbc.com'
|
173
|
+
@static_base_url.should == 'http://static.sandbox.dev.bbc.com'
|
174
|
+
@m_base_url.should == 'http://m.sandbox.dev.bbc.com'
|
175
|
+
@mobile_base_url.should == 'http://mobile.sandbox.dev.bbc.com'
|
176
|
+
end
|
177
|
+
|
178
|
+
it "should be able to set a local system6 url with expected domain" do
|
179
|
+
ENV['ENVIRONMENT'] = 'sandbox6'
|
180
|
+
ENV['FW_BBC_DOMAIN'] = 'bbc.com'
|
181
|
+
generate_base_urls
|
182
|
+
@base_url.should == 'http://sandbox.bbc.com'
|
183
|
+
@ssl_base_url.should == 'https://ssl.sandbox.bbc.com'
|
184
|
+
@static_base_url.should == 'http://static.sandbox.bbc.com'
|
185
|
+
@m_base_url.should == 'http://m.sandbox.bbc.com'
|
186
|
+
@mobile_base_url.should == 'http://mobile.sandbox.bbc.com'
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should be able to set a base url with expected domain" do
|
190
|
+
ENV['ENVIRONMENT'] = 'foo'
|
191
|
+
ENV['FW_BBC_DOMAIN'] = 'bbc.com'
|
192
|
+
generate_base_urls
|
193
|
+
@base_url.should == 'http://www.foo.bbc.com'
|
194
|
+
@ssl_base_url.should == 'https://ssl.foo.bbc.com'
|
195
|
+
@static_base_url.should == 'http://static.foo.bbci.co.uk'
|
196
|
+
@open_base_url.should == 'http://open.foo.bbc.com'
|
197
|
+
@m_base_url.should == 'http://m.foo.bbc.com'
|
198
|
+
@mobile_base_url.should == 'http://mobile.foo.bbc.com'
|
199
|
+
end
|
200
|
+
|
201
|
+
it "should set public facing live domain" do
|
202
|
+
ENV['ENVIRONMENT'] = 'live'
|
203
|
+
ENV['WWW_LIVE'] = 'false'
|
204
|
+
ENV['FW_BBC_DOMAIN'] = 'bbc.com'
|
205
|
+
generate_base_urls
|
206
|
+
@base_url.should == 'http://www.bbc.com'
|
207
|
+
@ssl_base_url.should == 'https://ssl.bbc.com'
|
208
|
+
@static_base_url.should == 'http://static.bbci.co.uk'
|
209
|
+
@open_base_url.should == 'http://open.bbc.com'
|
210
|
+
@m_base_url.should == 'http://m.bbc.com'
|
211
|
+
@mobile_base_url.should == 'http://mobile.bbc.com'
|
129
212
|
end
|
130
213
|
|
131
214
|
=begin
|
132
215
|
#don't want to push proxy addr online
|
133
216
|
it "should be able to validate xhtml online" do
|
134
217
|
@proxy_host = ''
|
218
|
+
@proxy_port = ''
|
135
219
|
xhtml = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>a</title></head><body><p>a</p></body></html>'
|
136
220
|
validate_online(xhtml)
|
137
221
|
end
|
222
|
+
|
223
|
+
it "should be able to report errors for invalid markup" do
|
224
|
+
@proxy_host = ''
|
225
|
+
@proxy_port = ''
|
226
|
+
xhtml = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><nosuchelement><title>a</title></head><body><p>a</p></body></html>'
|
227
|
+
expect {
|
228
|
+
validate_online(xhtml)
|
229
|
+
}.to raise_error(RuntimeError)
|
230
|
+
end
|
138
231
|
=end
|
232
|
+
end
|
233
|
+
|
234
|
+
describe "independent mechanize agent" do
|
235
|
+
include Frameworks::EnvHelper
|
236
|
+
|
237
|
+
it "should allow you to create an independent, configured mechanize object" do
|
238
|
+
ENV['HTTP_PROXY'] = 'http://mycache.co.uk:80'
|
239
|
+
agent = new_mechanize
|
240
|
+
agent.should be_a_kind_of Mechanize
|
241
|
+
agent.proxy_addr.should == 'mycache.co.uk'
|
242
|
+
end
|
243
|
+
|
244
|
+
it "the proxy should be separately configurable" do
|
245
|
+
agent = new_mechanize(http_proxy='http://mycache.co.uk:80')
|
246
|
+
agent.should be_a_kind_of Mechanize
|
247
|
+
agent.proxy_addr.should == 'mycache.co.uk'
|
248
|
+
end
|
249
|
+
|
139
250
|
end
|
140
251
|
end
|
data/spec/spec_helper.rb
CHANGED