A gem to black-box test a web server configuration. For example, whether a site's SSL certificate is correctly configured and not expired:
expect('github.com').to have_a_valid_cert
It's a tool for doing Test Driven Devops (I just made that up). See the introductory blog post for the backstory and Nonstop QA - a SaaS built on it.
This library takes a minimalist approach: it simply adds new RSpec matchers. Therefore, you can use your own RSpec writing style; there's no new DSL to learn.
If you're too busy to install this and code the tests by hand, you can try the new hosted service which runs these RSpec matchers in the cloud:
$ gem install rspec-webservice_matchers
These new RSpec matchers:
| Notes
-------------------------------|------------------------------------------------
be_up | Looks for a 200, but will follow up to four redirects
be_fast | Checks for Google PageSpeed score >= 85. Expects the environment variable WEBSERVICE_MATCHER_INSIGHTS_KEY
to contain a Google "server" API key with PageSpeed Insights API enabled.
enforce_https_everywhere | Passes if the site will only allow SSL connections. See the EFF project, HTTPS Everywhere
have_a_valid_cert | Will fail if there's no cert, or it's expired or incorrectly configured
be_status | A low-level matcher to explicitly check for a 200, 503, or any other code
redirect_permanently_to | Checks for 301 and a correct destination URL
redirect_temporarily_to | Checks for 302 or 307 and a correct destination
Here's an example which uses them all:
require 'rspec/webservice_matchers'
describe 'My app' do
context 'www.myapp.com' do
it { should be_up }
it { should be_fast }
it { should have_a_valid_cert }
end
it 'serves the "about" page without redirecting' do
expect('http://www.myapp.com/about').to be_status 200
end
it 'only serves via www' do
expect('http://myapp.com').to redirect_permanently_to 'http://www.myapp.com/'
end
it 'forces visitors to use https' do
expect('myapp.com').to enforce_https_everywhere
end
end
- json-schema-rspec
- serverspec
- HTTP Assertions: A precusor to this library. Written in the older test case / assert style.