rspec-webservice_matchers 4.0.0 → 4.0.1

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: 50a2a82e5b5a318363429eba8ab32398d9e3cf38
4
- data.tar.gz: a2da7ee77d7d23b2c2658ddf7a305dcde37ca32e
3
+ metadata.gz: b4356f7c49634e7a88471c05598307e27aaf5fbd
4
+ data.tar.gz: cdb55236a82a22067581d25ee24591470d658047
5
5
  SHA512:
6
- metadata.gz: 7406558ad74e42e84efcbe2fa7ebcab3766845aecc9cbabe3429bc54e80bc4fa78fe023f84b3a994e6710c673e733c5ac0fd3609d8d06e4fcb7a3a90f52e214c
7
- data.tar.gz: 3232473d11a9a323bb70911166040680258c21a82c470e2e6f3906d68c94fa9b221f0726e865230104a8a2458bfd86d3d7ddc0e867cd6ea32342f9cf2bba4495
6
+ metadata.gz: 9c68cb9ac58edc93ae5cf0d16873a342e3d547ad32c35463fa0a315be5ac1d9d046d67ffede36e6dd4b46c254cea002504cb08ee16b8073192661e09d2fce550
7
+ data.tar.gz: df52ce370c307c92136d5da95cd3d361545d2b0674db8c19a7eca50e28d08e606becffc5a45da26d51de8d63f21c23302ff97679e529bee460b6dc87f5fe51e8
data/.gitignore CHANGED
@@ -18,4 +18,6 @@ test/tmp
18
18
  test/version_tmp
19
19
  tmp
20
20
  matchers.komodoproject
21
+
21
22
  .idea/
23
+ *.sublime*
data/.travis.yml CHANGED
@@ -1,5 +1,4 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "2.0"
4
3
  - "2.1"
5
4
  - "2.2"
data/README.md CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/rspec-webservice_matchers.png)](http://badge.fury.io/rb/rspec-webservice_matchers) [![Build Status](https://travis-ci.org/dogweather/rspec-webservice_matchers.png?branch=master)](https://travis-ci.org/dogweather/rspec-webservice_matchers) [![Code Climate](https://codeclimate.com/github/dogweather/rspec-webservice_matchers.png)](https://codeclimate.com/github/dogweather/rspec-webservice_matchers)
4
4
 
5
- [Issues and todo's are now managed Assembly as Bounties](https://assembly.com/think-200/bounties).
6
5
 
7
6
  This [gem](https://rubygems.org/gems/rspec-webservice_matchers) enables you to black-box test a web app's server configuration. For example, whether its SSL certificate is correctly configured and not expired. It's a tool for doing **Test Driven Devops** (I just made that up). See [the introductory blog post](http://robb.weblaws.org/2014/01/16/new-open-source-library-for-test-driven-devops/) for more about the motivations for making this.
8
7
 
data/Rakefile CHANGED
@@ -1,5 +1,4 @@
1
- require "bundler/gem_tasks"
2
-
1
+ require 'bundler/gem_tasks'
3
2
  require 'rspec/core/rake_task'
4
3
 
5
4
  RSpec::Core::RakeTask.new('spec')
@@ -0,0 +1,20 @@
1
+ require 'rspec/webservice_matchers/util'
2
+
3
+ module RSpec
4
+ module WebserviceMatchers
5
+ # Pass when a URL returns the expected status code
6
+ # Codes are defined in http://www.rfc-editor.org/rfc/rfc2616.txt
7
+ RSpec::Matchers.define :be_status do |expected_code|
8
+ actual_code = nil
9
+
10
+ match do |url_or_domain_name|
11
+ actual_code = Util.status(url_or_domain_name)
12
+ actual_code == expected_code.to_i
13
+ end
14
+
15
+ failure_message do
16
+ "Received status #{actual_code}"
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require 'rspec/webservice_matchers/util'
2
+
3
+ module RSpec
4
+ module WebserviceMatchers
5
+ # Pass when the response code is 200, following redirects
6
+ # if necessary.
7
+ RSpec::Matchers.define :be_up do
8
+ status = nil
9
+
10
+ match do |url_or_domain_name|
11
+ status = Util.status(url_or_domain_name, follow: true)
12
+ status == 200
13
+ end
14
+
15
+ failure_message do
16
+ "Received status #{status}"
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,50 @@
1
+ require 'faraday'
2
+
3
+ require 'rspec/webservice_matchers/util'
4
+ module RSpec
5
+ module WebserviceMatchers
6
+ # This is a high level matcher which checks three things:
7
+ # 1. Permanent redirect
8
+ # 2. to an https url
9
+ # 3. which is correctly configured
10
+ RSpec::Matchers.define :enforce_https_everywhere do
11
+ error_msg = status = actual_protocol = actual_valid_cert = nil
12
+
13
+ match do |domain_name|
14
+ begin
15
+ status, headers = Util.head("http://#{domain_name}")
16
+ new_url = headers['location']
17
+ /^(?<protocol>https?)/ =~ new_url
18
+ actual_protocol = protocol || nil
19
+ actual_valid_cert = Util.valid_ssl_cert?(new_url)
20
+ (status == 301) &&
21
+ (actual_protocol == 'https') &&
22
+ (actual_valid_cert == true)
23
+ rescue Faraday::Error::ConnectionFailed
24
+ error_msg = 'Connection failed'
25
+ false
26
+ end
27
+ end
28
+
29
+ # Create a compound error message listing all of the
30
+ # relevant actual values received.
31
+ failure_message do
32
+ if !error_msg.nil?
33
+ error_msg
34
+ else
35
+ mesgs = []
36
+ if status != 301
37
+ mesgs << "received status #{status} instead of 301"
38
+ end
39
+ if !actual_protocol.nil? && actual_protocol != 'https'
40
+ mesgs << "destination uses protocol #{actual_protocol.upcase}"
41
+ end
42
+ if !actual_valid_cert
43
+ mesgs << "there's no valid SSL certificate"
44
+ end
45
+ mesgs.join('; ').capitalize
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,23 @@
1
+ require 'rspec/webservice_matchers/util'
2
+
3
+ module RSpec
4
+ module WebserviceMatchers
5
+ # Is https is correctly implemented?
6
+ RSpec::Matchers.define :have_a_valid_cert do
7
+ error_message = nil
8
+
9
+ match do |domain_name_or_url|
10
+ begin
11
+ Util.try_ssl_connection(domain_name_or_url)
12
+ rescue Exception => e
13
+ error_message = e.message
14
+ false
15
+ end
16
+ end
17
+
18
+ failure_message do
19
+ error_message
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,40 @@
1
+ require 'rspec/webservice_matchers/util'
2
+
3
+ module RSpec
4
+ module WebserviceMatchers
5
+ # Do we get a 301 to the place we intend?
6
+ RSpec::Matchers.define :redirect_permanently_to do |expected|
7
+ error_message = status = actual_location = nil
8
+
9
+ match do |url_or_domain_name|
10
+ begin
11
+ status, headers = Util.head(url_or_domain_name)
12
+ actual_location = headers['location']
13
+
14
+ (status == 301) && (/#{expected}\/?/.match(actual_location))
15
+ rescue Exception => e
16
+ error_message = e.message
17
+ false
18
+ end
19
+ end
20
+
21
+ failure_message do
22
+ if !error_message.nil?
23
+ error_message
24
+ else
25
+ mesgs = []
26
+ if [302, 307].include? status
27
+ mesgs << "received a temporary redirect, status #{status}"
28
+ end
29
+ if !actual_location.nil? && ! (%r|#{expected}/?| === actual_location)
30
+ mesgs << "received location #{actual_location}"
31
+ end
32
+ if ![301, 302, 307].include? status
33
+ mesgs << "not a redirect: received status #{status}"
34
+ end
35
+ mesgs.join('; ').capitalize
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,41 @@
1
+ require 'rspec/webservice_matchers/util'
2
+
3
+ module RSpec
4
+ module WebserviceMatchers
5
+ # Do we get a 302 or 307 to the place we intend?
6
+ RSpec::Matchers.define :redirect_temporarily_to do |expected|
7
+ include RSpec
8
+ error_message = status = actual_location = nil
9
+
10
+ match do |url_or_domain_name|
11
+ begin
12
+ status, headers = Util.head(url_or_domain_name)
13
+ actual_location = headers['location']
14
+
15
+ [302, 307].include?(status) && (/#{expected}\/?/ =~ actual_location)
16
+ rescue Exception => e
17
+ error_message = e.message
18
+ false
19
+ end
20
+ end
21
+
22
+ failure_message do
23
+ if !error_message.nil?
24
+ error_message
25
+ else
26
+ mesgs = []
27
+ if status == 301
28
+ mesgs << "received a permanent redirect, status #{status}"
29
+ end
30
+ if !actual_location.nil? && ! (%r|#{expected}/?| === actual_location)
31
+ mesgs << "received location #{actual_location}"
32
+ end
33
+ if ![301, 302, 307].include? status
34
+ mesgs << "not a redirect: received status #{status}"
35
+ end
36
+ mesgs.join('; ').capitalize
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,83 @@
1
+ require 'excon'
2
+ require 'faraday'
3
+ require 'faraday_middleware'
4
+ require 'pry'
5
+
6
+ # Seconds
7
+ TIMEOUT = 20
8
+ OPEN_TIMEOUT = 20
9
+
10
+ module RSpec
11
+ module WebserviceMatchers
12
+ # Refactored utility functions
13
+ module Util
14
+ def self.status(url_or_domain_name, follow: false)
15
+ head(url_or_domain_name, follow: follow)[0]
16
+ end
17
+
18
+ def self.head(url_or_domain_name, follow: false)
19
+ url = make_url(url_or_domain_name)
20
+ response = recheck_on_timeout { connection(follow: follow).head(url) }
21
+ [response.status, response.headers]
22
+ end
23
+
24
+ # @return true if the given page has status 200,
25
+ # and follow a few redirects if necessary.
26
+ def self.up?(url_or_domain_name)
27
+ url = make_url(url_or_domain_name)
28
+ conn = connection(follow: true)
29
+ response = recheck_on_timeout { conn.head(url) }
30
+ response.status == 200
31
+ end
32
+
33
+ def self.valid_ssl_cert?(domain_name_or_url)
34
+ try_ssl_connection(domain_name_or_url)
35
+ true
36
+ rescue
37
+ # Not serving SSL, expired, or incorrect domain name in certificate
38
+ false
39
+ end
40
+
41
+ def self.try_ssl_connection(domain_name_or_url)
42
+ url = "https://#{remove_protocol(domain_name_or_url)}"
43
+ recheck_on_timeout { connection.head(url) }
44
+ true
45
+ end
46
+
47
+ private
48
+
49
+ def self.connection(follow: false)
50
+ Faraday.new do |c|
51
+ c.options[:timeout] = TIMEOUT
52
+ c.options[:open_timeout] = OPEN_TIMEOUT
53
+ c.use(FaradayMiddleware::FollowRedirects, limit: 4) if follow
54
+ c.adapter :excon
55
+ end
56
+ end
57
+
58
+ # Ensure that the given string is a URL,
59
+ # making it into one if necessary.
60
+ def self.make_url(url_or_domain_name)
61
+ if %r{^https?://} =~ url_or_domain_name
62
+ url_or_domain_name
63
+ else
64
+ "http://#{url_or_domain_name}"
65
+ end
66
+ end
67
+
68
+ # Normalize the input: remove 'http(s)://' if it's there
69
+ def self.remove_protocol(domain_name_or_url)
70
+ %r{^https?://(?<name>.+)$} =~ domain_name_or_url
71
+ name || domain_name_or_url
72
+ end
73
+
74
+ def self.recheck_on_timeout
75
+ begin
76
+ yield
77
+ rescue Faraday::Error::TimeoutError
78
+ yield
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module WebserviceMatchers
3
- VERSION = '4.0.0'
3
+ VERSION = '4.0.1'
4
4
  end
5
5
  end
@@ -1,248 +1,6 @@
1
- require 'rspec/webservice_matchers/version'
2
- require 'excon'
3
- require 'faraday'
4
- require 'faraday_middleware'
5
- require 'pry'
6
-
7
- # Seconds
8
- TIMEOUT = 20
9
- OPEN_TIMEOUT = 20
10
-
11
- module RSpec
12
- # RSpec Custom Matchers
13
- # See https://www.relishapp.com/rspec/rspec-expectations/v/2-3/docs/custom-matchers/define-matcher
14
- module WebserviceMatchers
15
- # Test whether https is correctly implemented
16
- RSpec::Matchers.define :have_a_valid_cert do
17
- error_message = nil
18
-
19
- match do |domain_name_or_url|
20
- begin
21
- WebserviceMatchers.try_ssl_connection(domain_name_or_url)
22
- true
23
- rescue Exception => e
24
- error_message = e.message
25
- false
26
- end
27
- end
28
-
29
- failure_message do
30
- error_message
31
- end
32
- end
33
-
34
- # Pass successfully if we get a 301 to the place we intend.
35
- RSpec::Matchers.define :redirect_permanently_to do |expected|
36
- error_message = actual_status = actual_location = nil
37
-
38
- match do |url_or_domain_name|
39
- begin
40
- response = WebserviceMatchers.recheck_on_timeout { WebserviceMatchers.connection.head(WebserviceMatchers.make_url url_or_domain_name) }
41
- expected = WebserviceMatchers.make_url(expected)
42
- actual_location = response.headers['location']
43
- actual_status = response.status
44
-
45
- (actual_status == 301) && (/#{expected}\/?/.match(actual_location))
46
- rescue Exception => e
47
- error_message = e.message
48
- false
49
- end
50
- end
51
-
52
- failure_message do
53
- if !error_message.nil?
54
- error_message
55
- else
56
- mesgs = []
57
- if [302, 307].include? actual_status
58
- mesgs << "received a temporary redirect, status #{actual_status}"
59
- end
60
- if !actual_location.nil? && ! (%r|#{expected}/?| === actual_location)
61
- mesgs << "received location #{actual_location}"
62
- end
63
- if ![301, 302, 307].include? actual_status
64
- mesgs << "not a redirect: received status #{actual_status}"
65
- end
66
- mesgs.join('; ').capitalize
67
- end
68
- end
69
- end
70
-
71
- # Pass successfully if we get a 302 or 307 to the place we intend.
72
- RSpec::Matchers.define :redirect_temporarily_to do |expected|
73
- include RSpec
74
- error_message = actual_status = actual_location = nil
75
-
76
- match do |url_or_domain_name|
77
- begin
78
- response = WebserviceMatchers.recheck_on_timeout { WebserviceMatchers.connection.head(WebserviceMatchers.make_url url_or_domain_name) }
79
- expected = WebserviceMatchers.make_url(expected)
80
- actual_location = response.headers['location']
81
- actual_status = response.status
82
-
83
- [302, 307].include?(actual_status) && (/#{expected}\/?/ =~ actual_location)
84
- rescue Exception => e
85
- error_message = e.message
86
- false
87
- end
88
- end
89
-
90
- failure_message do
91
- if !error_message.nil?
92
- error_message
93
- else
94
- mesgs = []
95
- if actual_status == 301
96
- mesgs << "received a permanent 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
106
- end
107
- end
108
-
109
- # This is a high level matcher which checks three things:
110
- # 1. Permanent redirect
111
- # 2. to an https url
112
- # 3. which is correctly configured
113
- RSpec::Matchers.define :enforce_https_everywhere do
114
- error_msg = actual_status = actual_protocol = actual_valid_cert = nil
115
-
116
- match do |domain_name|
117
- begin
118
- response = WebserviceMatchers.recheck_on_timeout { WebserviceMatchers.connection.head("http://#{domain_name}") }
119
- new_url = response.headers['location']
120
- actual_status = response.status
121
- /^(?<protocol>https?)/ =~ new_url
122
- actual_protocol = protocol || nil
123
- actual_valid_cert = WebserviceMatchers.valid_ssl_cert?(new_url)
124
- (actual_status == 301) &&
125
- (actual_protocol == 'https') &&
126
- (actual_valid_cert == true)
127
- rescue Faraday::Error::ConnectionFailed
128
- error_msg = 'Connection failed'
129
- false
130
- end
131
- end
132
-
133
- # Create a compound error message listing all of the
134
- # relevant actual values received.
135
- failure_message do
136
- if !error_msg.nil?
137
- error_msg
138
- else
139
- mesgs = []
140
- if actual_status != 301
141
- mesgs << "received status #{actual_status} instead of 301"
142
- end
143
- if !actual_protocol.nil? && actual_protocol != 'https'
144
- mesgs << "destination uses protocol #{actual_protocol.upcase}"
145
- end
146
- if !actual_valid_cert
147
- mesgs << "there's no valid SSL certificate"
148
- end
149
- mesgs.join('; ').capitalize
150
- end
151
- end
152
-
153
- end
154
-
155
- # Pass when a URL returns the expected status code
156
- # Codes are defined in http://www.rfc-editor.org/rfc/rfc2616.txt
157
- RSpec::Matchers.define :be_status do |expected_code|
158
- actual_code = nil
159
-
160
- match do |url_or_domain_name|
161
- url = WebserviceMatchers.make_url(url_or_domain_name)
162
- response = WebserviceMatchers.recheck_on_timeout { WebserviceMatchers.connection.head(url) }
163
- actual_code = response.status
164
- expected_code = expected_code.to_i
165
- actual_code == expected_code
166
- end
167
-
168
- failure_message do
169
- "Received status #{actual_code}"
170
- end
171
- end
172
-
173
- # Pass when the response code is 200, following redirects
174
- # if necessary.
175
- RSpec::Matchers.define :be_up do
176
- actual_status = nil
177
-
178
- match do |url_or_domain_name|
179
- url = WebserviceMatchers.make_url(url_or_domain_name)
180
- conn = WebserviceMatchers.connection(follow: true)
181
- response = WebserviceMatchers.recheck_on_timeout { conn.head(url) }
182
- actual_status = response.status
183
- actual_status == 200
184
- end
185
-
186
- failure_message do
187
- "Received status #{actual_status}"
188
- end
189
- end
190
-
191
- # Return true if the given page has status 200,
192
- # and follow a few redirects if necessary.
193
- def self.up?(url_or_domain_name)
194
- url = make_url(url_or_domain_name)
195
- conn = connection(follow: true)
196
- response = recheck_on_timeout { conn.head(url) }
197
- response.status == 200
198
- end
199
-
200
- def self.valid_ssl_cert?(domain_name_or_url)
201
- try_ssl_connection(domain_name_or_url)
202
- true
203
- rescue
204
- # Not serving SSL, expired, or incorrect domain name in certificate
205
- false
206
- end
207
-
208
- def self.try_ssl_connection(domain_name_or_url)
209
- recheck_on_timeout { connection.head("https://#{remove_protocol(domain_name_or_url)}") }
210
- end
211
-
212
-
213
- private
214
-
215
- def self.connection(follow: false)
216
- Faraday.new do |c|
217
- c.options[:timeout] = TIMEOUT
218
- c.options[:open_timeout] = OPEN_TIMEOUT
219
- c.use(FaradayMiddleware::FollowRedirects, limit: 4) if follow
220
- c.adapter :excon
221
- end
222
- end
223
-
224
- # Ensure that the given string is a URL,
225
- # making it into one if necessary.
226
- def self.make_url(url_or_domain_name)
227
- if %r{^https?://} =~ url_or_domain_name
228
- url_or_domain_name
229
- else
230
- "http://#{url_or_domain_name}"
231
- end
232
- end
233
-
234
- # Normalize the input: remove 'http(s)://' if it's there
235
- def self.remove_protocol(domain_name_or_url)
236
- %r{^https?://(?<name>.+)$} =~ domain_name_or_url
237
- name || domain_name_or_url
238
- end
239
-
240
- def self.recheck_on_timeout
241
- begin
242
- yield
243
- rescue Faraday::Error::TimeoutError
244
- yield
245
- end
246
- end
247
- end
248
- end
1
+ require 'rspec/webservice_matchers/have_a_valid_cert'
2
+ require 'rspec/webservice_matchers/redirect_permanently_to'
3
+ require 'rspec/webservice_matchers/redirect_temporarily_to'
4
+ require 'rspec/webservice_matchers/enforce_https_everywhere'
5
+ require 'rspec/webservice_matchers/be_status'
6
+ require 'rspec/webservice_matchers/be_up'
@@ -17,11 +17,12 @@ Gem::Specification.new do |spec|
17
17
  spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(/^(test|spec|features)\//)
19
19
  spec.require_paths = ['lib']
20
+ spec.required_ruby_version = '>= 2.1.0'
20
21
 
21
22
  spec.add_development_dependency 'bundler', '~> 1.3'
22
23
  spec.add_development_dependency 'rake'
23
24
  spec.add_development_dependency 'pry'
24
- spec.add_development_dependency 'webmock', '>= 1.20.4'
25
+ spec.add_development_dependency 'webmock'
25
26
 
26
27
  spec.add_runtime_dependency 'rspec', '~> 3.0'
27
28
  spec.add_runtime_dependency 'excon'
@@ -1,5 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'rspec/webservice_matchers'
3
+ require 'rspec/webservice_matchers/util'
3
4
 
4
5
  describe 'be_status' do
5
6
  it 'can check 200 for successful resource requests' do
@@ -44,7 +45,7 @@ describe 'be_up' do
44
45
  end
45
46
 
46
47
  it 'is available via a public API' do
47
- expect(RSpec::WebserviceMatchers.up?('http://www.website.com/')).to be true
48
+ expect(RSpec::WebserviceMatchers::Util.up?('http://www.website.com/')).to be true
48
49
  end
49
50
 
50
51
  it 'gives relevant error output' do
@@ -1,13 +1,14 @@
1
1
  require 'spec_helper'
2
- require 'rspec/webservice_matchers'
2
+ require 'rspec/webservice_matchers/util'
3
+ include RSpec::WebserviceMatchers
3
4
 
4
5
  describe '#up?' do
5
6
  it 'follows redirects when necessary' do
6
- expect(RSpec::WebserviceMatchers.up?('perm-redirector.com')).to be_truthy
7
- expect(RSpec::WebserviceMatchers.up?('temp-redirector.org')).to be_truthy
7
+ expect(Util.up?('perm-redirector.com')).to be_truthy
8
+ expect(Util.up?('temp-redirector.org')).to be_truthy
8
9
  end
9
10
 
10
11
  it 'retries timeout errors once' do
11
- expect(RSpec::WebserviceMatchers.up?('http://www.timeout-once.com')).to be_truthy
12
+ expect(Util.up?('http://www.timeout-once.com')).to be_truthy
12
13
  end
13
14
  end
@@ -26,11 +26,12 @@ describe 'have_a_valid_cert matcher' do
26
26
  }.to fail_matching(/not known/i)
27
27
  end
28
28
 
29
- it 'provides a good error message if the request times out' do
30
- expect {
31
- expect('www.myapp.com').to have_a_valid_cert
32
- }.to fail_matching(/(timeout)|(execution expired)/)
33
- end
29
+ # TODO: Find a good way to test this.
30
+ # it 'provides a good error message if the request times out' do
31
+ # expect {
32
+ # expect('www.myapp.com').to have_a_valid_cert
33
+ # }.to fail_matching(/(timeout)|(execution expired)/)
34
+ # end
34
35
  end
35
36
 
36
37
  # See https://www.eff.org/https-everywhere
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-webservice_matchers
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robb Shecter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-23 00:00:00.000000000 Z
11
+ date: 2015-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 1.20.4
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 1.20.4
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +136,13 @@ files:
136
136
  - README.md
137
137
  - Rakefile
138
138
  - lib/rspec/webservice_matchers.rb
139
+ - lib/rspec/webservice_matchers/be_status.rb
140
+ - lib/rspec/webservice_matchers/be_up.rb
141
+ - lib/rspec/webservice_matchers/enforce_https_everywhere.rb
142
+ - lib/rspec/webservice_matchers/have_a_valid_cert.rb
143
+ - lib/rspec/webservice_matchers/redirect_permanently_to.rb
144
+ - lib/rspec/webservice_matchers/redirect_temporarily_to.rb
145
+ - lib/rspec/webservice_matchers/util.rb
139
146
  - lib/rspec/webservice_matchers/version.rb
140
147
  - rspec-webservice_matchers.gemspec
141
148
  - spec/rspec/webservice_matchers/protcol_spec.rb
@@ -155,7 +162,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
155
162
  requirements:
156
163
  - - ">="
157
164
  - !ruby/object:Gem::Version
158
- version: '0'
165
+ version: 2.1.0
159
166
  required_rubygems_version: !ruby/object:Gem::Requirement
160
167
  requirements:
161
168
  - - ">="
@@ -163,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
170
  version: '0'
164
171
  requirements: []
165
172
  rubyforge_project:
166
- rubygems_version: 2.4.5
173
+ rubygems_version: 2.4.6
167
174
  signing_key:
168
175
  specification_version: 4
169
176
  summary: Black-box web app configuration testing