rspec-webservice_matchers 0.1.1 → 0.2.0
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 +4 -4
 - data/README.md +24 -10
 - data/lib/rspec/webservice_matchers/version.rb +1 -1
 - data/lib/rspec/webservice_matchers.rb +21 -0
 - data/spec/rspec/webservice_matchers/protcol_spec.rb +18 -0
 - metadata +15 -13
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: f213b57f745129ca27f161fafab51468beec886c
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 8e9a30715b9de34263e66db6f4776caed4fd6418
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: dc69ca69ee807788b27af421a90088f6b0f3c4cd14126a215e58c2bd6bb66d7882225d1b7c3399e54d8e8cf720070f24f7fd7e63371dc6b477a32eac6695fddd
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 17301939ab8f4cc7ffacd7b53cfd55880074285c56663f90eb0d4b97a4308b155159dd26d85119a3d9a64afa51d915f8b1b87c419581d79aaf3442353f53e821
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -2,28 +2,35 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            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.)
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
      
 5 
     | 
    
         
            +
            This library takes a very minimalist approach: by simply adding new RSpec matchers,
         
     | 
| 
      
 6 
     | 
    
         
            +
            you can use your own RSpec writing style; no new DSL to learn.
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       5 
8 
     | 
    
         
             
            Installation
         
     | 
| 
       6 
9 
     | 
    
         
             
            ------------
         
     | 
| 
       7 
10 
     | 
    
         
             
            ```Shell
         
     | 
| 
       8 
11 
     | 
    
         
             
            $ gem install rspec-webservice_matchers
         
     | 
| 
       9 
12 
     | 
    
         
             
            ```
         
     | 
| 
       10 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
            What You Get
         
     | 
| 
      
 15 
     | 
    
         
            +
            ------------
         
     | 
| 
      
 16 
     | 
    
         
            +
            These new RSpec matchers:
         
     | 
| 
       11 
17 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
            -------
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
            Currently, three matchers are implemented: 
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 18 
     | 
    
         
            +
            * `be_status`
         
     | 
| 
       17 
19 
     | 
    
         
             
            * `have_a_valid_cert`
         
     | 
| 
      
 20 
     | 
    
         
            +
            * `enforce_https_everywhere`  (See [EFF](https://www.eff.org/https-everywhere))
         
     | 
| 
       18 
21 
     | 
    
         
             
            * `redirect_permanently_to`
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            Example
         
     | 
| 
      
 25 
     | 
    
         
            +
            -------
         
     | 
| 
       20 
26 
     | 
    
         | 
| 
       21 
27 
     | 
    
         
             
            ```Ruby
         
     | 
| 
       22 
28 
     | 
    
         
             
            require 'rspec/webservice_matchers'
         
     | 
| 
       23 
29 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
            describe 'My app' do
         
     | 
| 
       25 
     | 
    
         
            -
               
     | 
| 
       26 
     | 
    
         
            -
                 
     | 
| 
      
 30 
     | 
    
         
            +
            describe 'My app' do 
         
     | 
| 
      
 31 
     | 
    
         
            +
              context 'www.myapp.com' do
         
     | 
| 
      
 32 
     | 
    
         
            +
                it { should be_status 200 }
         
     | 
| 
      
 33 
     | 
    
         
            +
                it { should have_a_valid_cert }
         
     | 
| 
       27 
34 
     | 
    
         
             
              end
         
     | 
| 
       28 
35 
     | 
    
         | 
| 
       29 
36 
     | 
    
         
             
              it 'redirects to www' do
         
     | 
| 
         @@ -39,6 +46,13 @@ end 
     | 
|
| 
       39 
46 
     | 
    
         | 
| 
       40 
47 
     | 
    
         
             
            TODO 
         
     | 
| 
       41 
48 
     | 
    
         
             
            ----
         
     | 
| 
       42 
     | 
    
         
            -
            * Matchers for more  
     | 
| 
      
 49 
     | 
    
         
            +
            * Matchers for more high-level cases, such as the two kinds of temp. redirect
         
     | 
| 
       43 
50 
     | 
    
         
             
            * Matchers for JSON schema 
         
     | 
| 
      
 51 
     | 
    
         
            +
            * More matchers refactored from [weblaws.org](http://www.weblaws.org/) code
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            Related Projects
         
     | 
| 
      
 54 
     | 
    
         
            +
            ----------------
         
     | 
| 
      
 55 
     | 
    
         
            +
            * [serverspec](http://serverspec.org)
         
     | 
| 
      
 56 
     | 
    
         
            +
            * [HTTP Assertions](https://github.com/dogweather/HTTP-Assertions)
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
       44 
58 
     | 
    
         | 
| 
         @@ -53,9 +53,30 @@ module RSpec 
     | 
|
| 
       53 
53 
     | 
    
         
             
                  end
         
     | 
| 
       54 
54 
     | 
    
         
             
                end   
         
     | 
| 
       55 
55 
     | 
    
         | 
| 
      
 56 
     | 
    
         
            +
                # Pass when a URL returns the expected status code
         
     | 
| 
      
 57 
     | 
    
         
            +
                # Codes are defined in http://www.rfc-editor.org/rfc/rfc2616.txt
         
     | 
| 
      
 58 
     | 
    
         
            +
                RSpec::Matchers.define :be_status do |expected|
         
     | 
| 
      
 59 
     | 
    
         
            +
                  match do |url_or_domain_name|
         
     | 
| 
      
 60 
     | 
    
         
            +
                    url    = RSpec::WebserviceMatchers.make_url(url_or_domain_name)
         
     | 
| 
      
 61 
     | 
    
         
            +
                    result = Curl::Easy.http_head(url)
         
     | 
| 
      
 62 
     | 
    
         
            +
                    (result.response_code == expected.to_i)
         
     | 
| 
      
 63 
     | 
    
         
            +
                  end
         
     | 
| 
      
 64 
     | 
    
         
            +
                end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
       56 
66 
     | 
    
         | 
| 
       57 
67 
     | 
    
         
             
                private
         
     | 
| 
       58 
68 
     | 
    
         | 
| 
      
 69 
     | 
    
         
            +
                # Ensure that the given string is a URL,
         
     | 
| 
      
 70 
     | 
    
         
            +
                # making it into one if necessary.
         
     | 
| 
      
 71 
     | 
    
         
            +
                def self.make_url(url_or_domain_name)
         
     | 
| 
      
 72 
     | 
    
         
            +
                  unless %r|^https?://| === url_or_domain_name
         
     | 
| 
      
 73 
     | 
    
         
            +
                    "http://#{url_or_domain_name}"
         
     | 
| 
      
 74 
     | 
    
         
            +
                  else
         
     | 
| 
      
 75 
     | 
    
         
            +
                    url_or_domain_name
         
     | 
| 
      
 76 
     | 
    
         
            +
                  end
         
     | 
| 
      
 77 
     | 
    
         
            +
                end
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
       59 
80 
     | 
    
         
             
                # Return a hash of response headers from the
         
     | 
| 
       60 
81 
     | 
    
         
             
                # given curl result.
         
     | 
| 
       61 
82 
     | 
    
         
             
                # TODO: Submit as a pull request to the Curb gem.
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rspec/webservice_matchers'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # TODO: set up a test server or mocks for these.
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            describe 'status_code' do
         
     | 
| 
      
 7 
     | 
    
         
            +
              it 'can check 200 for successful resource requests' do
         
     | 
| 
      
 8 
     | 
    
         
            +
                'http://www.rfc-editor.org/rfc/rfc2616.txt'.should be_status 200
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              it 'handles domain names as well as URLs' do
         
     | 
| 
      
 12 
     | 
    
         
            +
                'www.rfc-editor.org'.should be_status 200
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              it 'can check 503 for the Service Unavailable status' do
         
     | 
| 
      
 16 
     | 
    
         
            +
                'http://www.weblaws.org/texas/laws/tex._spec._dist._local_laws_code_section_1011.202_tax_to_pay_general_obligation_bonds'.should be_status 503
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,69 +1,69 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rspec-webservice_matchers
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.2.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Robb Shecter
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2014-01- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2014-01-18 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
       15 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       16 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
     | 
    
         
            -
                - - ~>
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       18 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
19 
     | 
    
         
             
                    version: '1.3'
         
     | 
| 
       20 
20 
     | 
    
         
             
              type: :development
         
     | 
| 
       21 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       22 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
     | 
    
         
            -
                - - ~>
         
     | 
| 
      
 24 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
26 
     | 
    
         
             
                    version: '1.3'
         
     | 
| 
       27 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
28 
     | 
    
         
             
              name: rake
         
     | 
| 
       29 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       30 
30 
     | 
    
         
             
                requirements:
         
     | 
| 
       31 
     | 
    
         
            -
                - -  
     | 
| 
      
 31 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       32 
32 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       33 
33 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       34 
34 
     | 
    
         
             
              type: :development
         
     | 
| 
       35 
35 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       36 
36 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       37 
37 
     | 
    
         
             
                requirements:
         
     | 
| 
       38 
     | 
    
         
            -
                - -  
     | 
| 
      
 38 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       39 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
40 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       41 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       42 
42 
     | 
    
         
             
              name: curb
         
     | 
| 
       43 
43 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       44 
44 
     | 
    
         
             
                requirements:
         
     | 
| 
       45 
     | 
    
         
            -
                - - ~>
         
     | 
| 
      
 45 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       46 
46 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       47 
47 
     | 
    
         
             
                    version: '0.8'
         
     | 
| 
       48 
48 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       49 
49 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       50 
50 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       51 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
     | 
    
         
            -
                - - ~>
         
     | 
| 
      
 52 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       53 
53 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       54 
54 
     | 
    
         
             
                    version: '0.8'
         
     | 
| 
       55 
55 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       56 
56 
     | 
    
         
             
              name: rspec
         
     | 
| 
       57 
57 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       58 
58 
     | 
    
         
             
                requirements:
         
     | 
| 
       59 
     | 
    
         
            -
                - - ~>
         
     | 
| 
      
 59 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       60 
60 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       61 
61 
     | 
    
         
             
                    version: '2'
         
     | 
| 
       62 
62 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       63 
63 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       64 
64 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       65 
65 
     | 
    
         
             
                requirements:
         
     | 
| 
       66 
     | 
    
         
            -
                - - ~>
         
     | 
| 
      
 66 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       67 
67 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       68 
68 
     | 
    
         
             
                    version: '2'
         
     | 
| 
       69 
69 
     | 
    
         
             
            description: Black-box web app configuration testing
         
     | 
| 
         @@ -73,7 +73,7 @@ executables: [] 
     | 
|
| 
       73 
73 
     | 
    
         
             
            extensions: []
         
     | 
| 
       74 
74 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       75 
75 
     | 
    
         
             
            files:
         
     | 
| 
       76 
     | 
    
         
            -
            - .gitignore
         
     | 
| 
      
 76 
     | 
    
         
            +
            - ".gitignore"
         
     | 
| 
       77 
77 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       78 
78 
     | 
    
         
             
            - LICENSE.txt
         
     | 
| 
       79 
79 
     | 
    
         
             
            - README.md
         
     | 
| 
         @@ -81,6 +81,7 @@ files: 
     | 
|
| 
       81 
81 
     | 
    
         
             
            - lib/rspec/webservice_matchers.rb
         
     | 
| 
       82 
82 
     | 
    
         
             
            - lib/rspec/webservice_matchers/version.rb
         
     | 
| 
       83 
83 
     | 
    
         
             
            - rspec-webservice_matchers.gemspec
         
     | 
| 
      
 84 
     | 
    
         
            +
            - spec/rspec/webservice_matchers/protcol_spec.rb
         
     | 
| 
       84 
85 
     | 
    
         
             
            - spec/rspec/webservice_matchers/redirect_spec.rb
         
     | 
| 
       85 
86 
     | 
    
         
             
            - spec/rspec/webservice_matchers/ssl_spec.rb
         
     | 
| 
       86 
87 
     | 
    
         
             
            homepage: https://github.com/dogweather/rspec-webservice_matchers
         
     | 
| 
         @@ -93,12 +94,12 @@ require_paths: 
     | 
|
| 
       93 
94 
     | 
    
         
             
            - lib
         
     | 
| 
       94 
95 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
       95 
96 
     | 
    
         
             
              requirements:
         
     | 
| 
       96 
     | 
    
         
            -
              - -  
     | 
| 
      
 97 
     | 
    
         
            +
              - - ">="
         
     | 
| 
       97 
98 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       98 
99 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       99 
100 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       100 
101 
     | 
    
         
             
              requirements:
         
     | 
| 
       101 
     | 
    
         
            -
              - -  
     | 
| 
      
 102 
     | 
    
         
            +
              - - ">="
         
     | 
| 
       102 
103 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       103 
104 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       104 
105 
     | 
    
         
             
            requirements: []
         
     | 
| 
         @@ -108,5 +109,6 @@ signing_key: 
     | 
|
| 
       108 
109 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       109 
110 
     | 
    
         
             
            summary: Black-box web app configuration testing
         
     | 
| 
       110 
111 
     | 
    
         
             
            test_files:
         
     | 
| 
      
 112 
     | 
    
         
            +
            - spec/rspec/webservice_matchers/protcol_spec.rb
         
     | 
| 
       111 
113 
     | 
    
         
             
            - spec/rspec/webservice_matchers/redirect_spec.rb
         
     | 
| 
       112 
114 
     | 
    
         
             
            - spec/rspec/webservice_matchers/ssl_spec.rb
         
     |