rspec-webservice_matchers 1.4.4 → 1.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
|