rspec-webservice_matchers 0.0.3 → 0.0.4

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: 9868caf0250aca39ae098dde21665e23514be03e
4
- data.tar.gz: 60d4fbe7246451ec22ff3ac0059289cc0b0201e0
3
+ metadata.gz: 7c472ef9e63465a7b9f7bd04737b416ff434f006
4
+ data.tar.gz: 58e532ddd0b191bd9e847507d338dad1def28889
5
5
  SHA512:
6
- metadata.gz: f518432f3c125e75f6cf984b599e7223d558bef01891e874403c10554d8e02eb7a2c58d0fd9c80aff6649e2fbfa53ad3994aa4bfbc6bc623af2d919becf414b1
7
- data.tar.gz: dbc75327ee297423c7ba2b8959972893492eaa2df962af2bc00e6af43a3dbf20bb3e786296f6f96ab36ec90551ce6d80c9f1eba7151d5ed47207cc6190daf15d
6
+ metadata.gz: 1afbddc25dd973f0c9e9fc5408ecaa2eb0abe0f3a3e6a61d8f783aabb5421fdf9ab73465440b46bd1bc7ebde44ac04bb12c691737fd93ee5d0ee1d0764e86e27
7
+ data.tar.gz: 91dd16db14d9b0c71bae672fc02a97f726b16fde994e8b7919648777f6ccf5015fa3489be1e2a17811240ac7b1375d2065b71b22e3349fed3ec229f063a45e73
data/README.md CHANGED
@@ -12,7 +12,11 @@ $ gem install rspec-webservice_matchers
12
12
  Example
13
13
  -------
14
14
 
15
- Currently, two matchers are implemented, `have_a_valid_cert` and `redirect_permanently_to`:
15
+ Currently, three matchers are implemented:
16
+
17
+ * `have_a_valid_cert`
18
+ * `redirect_permanently_to`
19
+ * `enforce_https_everywhere` (See the [EFF site](https://www.eff.org/https-everywhere) for more info)
16
20
 
17
21
  ```Ruby
18
22
  require 'rspec/webservice_matchers'
@@ -25,6 +29,10 @@ describe 'My app' do
25
29
  it 'redirects to www' do
26
30
  expect('http://myapp.com').to redirect_permanently_to 'http://www.myapp.com/'
27
31
  end
32
+
33
+ it 'forces visitors to use https' do
34
+ expect('myapp.com').to enforce_https_everywhere
35
+ end
28
36
  end
29
37
  ```
30
38
 
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module WebserviceMatchers
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -57,5 +57,20 @@ module RSpec
57
57
  end
58
58
  end
59
59
 
60
+ RSpec::Matchers.define :enforce_https_everywhere do
61
+ match do |domain_name|
62
+ # TODO: Refactor this code. Submit as pull request to Curb.
63
+ result = Curl::Easy.http_head("http://#{domain_name}")
64
+ header_lines = result.head.split("\r\n")
65
+ header_lines.delete_at(0) # The first reponse header is already parsed.
66
+ header = {}
67
+ header_lines.each do |line|
68
+ key, value = line.split(': ')
69
+ header[key] = value
70
+ end
71
+ (result.response_code == 301) && (/https/ === header['Location'])
72
+ end
73
+ end
74
+
60
75
  end
61
76
  end
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = RSpec::WebserviceMatchers::VERSION
9
9
  spec.authors = ["Robb Shecter"]
10
10
  spec.email = ["robb@weblaws.org"]
11
- spec.description = %q{Match specific HTTP result codes and valid HTTPS configuration}
12
- spec.summary = %q{Handy matchers for testing web services}
11
+ spec.description = %q{Black-box web app configuration testing}
12
+ spec.summary = %q{Black-box web app configuration testing}
13
13
  spec.homepage = "https://github.com/dogweather/rspec-webservice_matchers"
14
14
  spec.license = "MIT"
15
15
 
@@ -21,5 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
23
 
24
- spec.add_runtime_dependency 'curb', '~> 0.8'
24
+ spec.add_runtime_dependency 'curb', '~> 0.8'
25
+ spec.add_runtime_dependency 'rspec', '~> 3.0'
25
26
  end
@@ -6,3 +6,10 @@ describe 'redirect_permanently_to' do
6
6
  expect('http://weblaws.org').to redirect_permanently_to('http://www.weblaws.org/')
7
7
  end
8
8
  end
9
+
10
+ # See https://www.eff.org/https-everywhere
11
+ describe 'enforce_https_everywhere' do
12
+ it 'passes when http requests are redirected to https urls' do
13
+ expect('eff.org').to enforce_https_everywhere
14
+ end
15
+ end
@@ -1,7 +1,6 @@
1
1
  require 'rspec/webservice_matchers'
2
2
 
3
3
  describe 'have_a_valid_cert matcher' do
4
-
5
4
  it 'passes when SSL is properly configured' do
6
5
  # EFF created the HTTPS Everywhere movement
7
6
  # TODO: set up a test server for this.
@@ -15,5 +14,4 @@ describe 'have_a_valid_cert matcher' do
15
14
  expect('www.psu.edu').to have_a_valid_cert
16
15
  }.to raise_error(RSpec::Expectations::ExpectationNotMetError)
17
16
  end
18
-
19
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-webservice_matchers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robb Shecter
@@ -52,7 +52,21 @@ dependencies:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.8'
55
- description: Match specific HTTP result codes and valid HTTPS configuration
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ description: Black-box web app configuration testing
56
70
  email:
57
71
  - robb@weblaws.org
58
72
  executables: []
@@ -92,7 +106,7 @@ rubyforge_project:
92
106
  rubygems_version: 2.2.1
93
107
  signing_key:
94
108
  specification_version: 4
95
- summary: Handy matchers for testing web services
109
+ summary: Black-box web app configuration testing
96
110
  test_files:
97
111
  - spec/rspec/webservice_matchers/redirect_spec.rb
98
112
  - spec/rspec/webservice_matchers/ssl_spec.rb