rspec-webservice_matchers 1.4.4 → 1.4.5
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 02eddd454df17509b576e24d1ed58c35db8710f5
|
4
|
+
data.tar.gz: 6f6adc6984c5831ce98d5469824c43d63fce4923
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5de73f534072a2ba6bfb08334e6288e023ed464f6142bf5fff420a03f6b32a2076b2daf4cd5ad2818b318f6a0d313fedd0f5150c166ae750afb171abcff89a21
|
7
|
+
data.tar.gz: a1d958399fe04fd78638ba264082e4e878bd17e8bc241523b9a4e100c9883b2b18dbd5b7a837de0b7cfe83591c4740671cf4faa71cffa3562360fccec38800e8
|
@@ -66,34 +66,81 @@ module RSpec
|
|
66
66
|
failure_message_for_should do
|
67
67
|
error_message
|
68
68
|
end
|
69
|
-
|
70
|
-
failure_message_for_should_not do
|
71
|
-
error_message
|
72
|
-
end
|
73
69
|
end
|
74
70
|
|
75
71
|
|
76
72
|
# Pass successfully if we get a 301 to the place we intend.
|
77
73
|
RSpec::Matchers.define :redirect_permanently_to do |expected|
|
74
|
+
error_message = actual_status = actual_location = nil
|
75
|
+
|
78
76
|
match do |url_or_domain_name|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
77
|
+
begin
|
78
|
+
response = RSpec::WebserviceMatchers.connection.head(RSpec::WebserviceMatchers.make_url url_or_domain_name)
|
79
|
+
expected = RSpec::WebserviceMatchers.make_url(expected)
|
80
|
+
actual_location = response.headers['location']
|
81
|
+
actual_status = response.status
|
82
|
+
|
83
|
+
(actual_status == 301) && (%r|#{expected}/?| === actual_location)
|
84
|
+
rescue Exception => e
|
85
|
+
error_message = e.message
|
86
|
+
false
|
87
|
+
end
|
88
|
+
end
|
83
89
|
|
84
|
-
|
90
|
+
failure_message_for_should do
|
91
|
+
if ! error_message.nil?
|
92
|
+
error_message
|
93
|
+
else
|
94
|
+
mesgs = []
|
95
|
+
if [302, 307].include? actual_status
|
96
|
+
mesgs << "received a temporary redirect, status #{actual_status}"
|
97
|
+
end
|
98
|
+
if ! actual_location.nil? && ! (%r|#{expected}/?| === actual_location)
|
99
|
+
mesgs << "received location #{actual_location}"
|
100
|
+
end
|
101
|
+
if ! [301, 302, 307].include? actual_status
|
102
|
+
mesgs << "not a redirect: received status #{actual_status}"
|
103
|
+
end
|
104
|
+
mesgs.join('; ').capitalize
|
105
|
+
end
|
85
106
|
end
|
86
107
|
end
|
87
108
|
|
109
|
+
|
88
110
|
# Pass successfully if we get a 302 or 307 to the place we intend.
|
89
111
|
RSpec::Matchers.define :redirect_temporarily_to do |expected|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
112
|
+
error_message = actual_status = actual_location = nil
|
113
|
+
|
114
|
+
match do |url_or_domain_name|
|
115
|
+
begin
|
116
|
+
response = RSpec::WebserviceMatchers.connection.head(RSpec::WebserviceMatchers.make_url url_or_domain_name)
|
117
|
+
expected = RSpec::WebserviceMatchers.make_url(expected)
|
118
|
+
actual_location = response.headers['location']
|
119
|
+
actual_status = response.status
|
120
|
+
|
121
|
+
[302, 307].include?(actual_status) && (%r|#{expected}/?| === actual_location)
|
122
|
+
rescue Exception => e
|
123
|
+
error_message = e.message
|
124
|
+
false
|
125
|
+
end
|
126
|
+
end
|
95
127
|
|
96
|
-
|
128
|
+
failure_message_for_should do
|
129
|
+
if ! error_message.nil?
|
130
|
+
error_message
|
131
|
+
else
|
132
|
+
mesgs = []
|
133
|
+
if actual_status == 301
|
134
|
+
mesgs << "received a permanent redirect, status #{actual_status}"
|
135
|
+
end
|
136
|
+
if ! actual_location.nil? && ! (%r|#{expected}/?| === actual_location)
|
137
|
+
mesgs << "received location #{actual_location}"
|
138
|
+
end
|
139
|
+
if ! [301, 302, 307].include? actual_status
|
140
|
+
mesgs << "not a redirect: received status #{actual_status}"
|
141
|
+
end
|
142
|
+
mesgs.join('; ').capitalize
|
143
|
+
end
|
97
144
|
end
|
98
145
|
end
|
99
146
|
|
@@ -123,7 +170,6 @@ module RSpec
|
|
123
170
|
end
|
124
171
|
end
|
125
172
|
|
126
|
-
|
127
173
|
# Create a compound error message listing all of the
|
128
174
|
# relevant actual values received.
|
129
175
|
failure_message_for_should do
|
@@ -4,16 +4,40 @@ require 'rspec/webservice_matchers'
|
|
4
4
|
|
5
5
|
describe 'redirect_permanently_to' do
|
6
6
|
it 'passes when receiving a 301 to the given URL' do
|
7
|
-
expect('http://perm-redirector.com').to redirect_permanently_to
|
7
|
+
expect('http://perm-redirector.com').to redirect_permanently_to 'http://www.website.com/'
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'handles domain names gracefully' do
|
11
|
-
expect('perm-redirector.com').to redirect_permanently_to
|
11
|
+
expect('perm-redirector.com').to redirect_permanently_to 'www.website.com/'
|
12
12
|
end
|
13
13
|
|
14
|
-
it 'handles missing final slash' do
|
15
|
-
expect('perm-redirector.com').to redirect_permanently_to
|
14
|
+
it 'handles a missing final slash' do
|
15
|
+
expect('perm-redirector.com').to redirect_permanently_to 'www.website.com'
|
16
16
|
end
|
17
|
+
|
18
|
+
it 'gives a good error message for the wrong redirect type' do
|
19
|
+
expect {
|
20
|
+
expect('temp-redirector.org').to redirect_permanently_to 'http://a-page.com/a/page.txt'
|
21
|
+
}.to fail_matching(/temporary/i)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'gives a good error message for a redirect to the wrong location' do
|
25
|
+
expect {
|
26
|
+
expect('perm-redirector.com').to redirect_permanently_to 'http://the-wrong-site.com/'
|
27
|
+
}.to fail_matching(/location/i)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'gives a good error message for a non-redirect status' do
|
31
|
+
expect {
|
32
|
+
expect('notfound.com').to redirect_permanently_to 'http://the-wrong-site.com/'
|
33
|
+
}.to fail_matching(/404/i)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'gives a good error message when the hostname is bad' do
|
37
|
+
expect {
|
38
|
+
expect('asdhfjadhsfksd.com').to redirect_permanently_to 'http://the-wrong-site.com/'
|
39
|
+
}.to fail_matching(/not known/i)
|
40
|
+
end
|
17
41
|
end
|
18
42
|
|
19
43
|
|
@@ -29,4 +53,28 @@ describe 'redirect_temporarily_to' do
|
|
29
53
|
it 'passes when it gets a 307' do
|
30
54
|
'temp-307-redirector.net'.should redirect_temporarily_to 'a-page.com/a/page.txt'
|
31
55
|
end
|
32
|
-
|
56
|
+
|
57
|
+
it 'gives a good error message for the wrong redirect type' do
|
58
|
+
expect {
|
59
|
+
expect('perm-redirector.com').to redirect_temporarily_to 'www.website.com/'
|
60
|
+
}.to fail_matching(/permanent/i)
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'gives a good error message for a redirect to the wrong location' do
|
64
|
+
expect {
|
65
|
+
expect('temp-307-redirector.net').to redirect_temporarily_to 'www.nowhere.com'
|
66
|
+
}.to fail_matching(/location/i)
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'gives a good error message for a non-redirect status' do
|
70
|
+
expect {
|
71
|
+
expect('notfound.com').to redirect_temporarily_to 'www.nowhere.com'
|
72
|
+
}.to fail_matching(/404/i)
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'gives a good error message when the hostname is bad' do
|
76
|
+
expect {
|
77
|
+
expect('234678234687234.com').to redirect_temporarily_to 'www.nowhere.com'
|
78
|
+
}.to fail_matching(/not known/i)
|
79
|
+
end
|
80
|
+
end
|