From 2198aea9e8a3444c03419b5c9fb557d2fa3f0368 Mon Sep 17 00:00:00 2001 From: George Shaw Date: Sat, 26 Mar 2016 03:26:29 -0700 Subject: [PATCH] Allow full URL for consistnecy check. Check for errors. --- apivore.gemspec | 2 +- lib/apivore/rspec_matchers.rb | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/apivore.gemspec b/apivore.gemspec index 26e3e2c..59fe318 100644 --- a/apivore.gemspec +++ b/apivore.gemspec @@ -2,7 +2,7 @@ $:.push File.expand_path("../lib", __FILE__) Gem::Specification.new do |s| s.name = 'apivore' - s.version = '1.5.0' + s.version = '1.6.0' s.date = '2016-02-24' s.summary = "Tests your API against its OpenAPI (Swagger) 2.0 spec" s.description = "Tests your rails API using its OpenAPI (Swagger) description of end-points, models, and query parameters." diff --git a/lib/apivore/rspec_matchers.rb b/lib/apivore/rspec_matchers.rb index 0b99b8f..2bb77e9 100644 --- a/lib/apivore/rspec_matchers.rb +++ b/lib/apivore/rspec_matchers.rb @@ -4,7 +4,7 @@ module Apivore module RspecMatchers extend RSpec::Matchers::DSL - matcher :be_consistent_with_swagger_definitions do |master_swagger_host, current_service| + matcher :be_consistent_with_swagger_definitions do |master_swagger_url, current_service| attr_reader :actual, :expected @@ -22,8 +22,18 @@ module RspecMatchers end define_method :fetch_master_swagger do - req = Net::HTTP.get(master_swagger_host, "/swagger.json") - JSON.parse(req) + res = + if master_swagger_url.starts_with? 'http' + Net::HTTP.get_response(URI(master_swagger_url)) + else + Net::HTTP.get_response(master_swagger_url, "/swagger.json") + end + + unless res.is_a? Net::HTTPSuccess + message = "Master swagger at #{master_swagger_url} not accessible\n" + fail (message + res.body) + end + JSON.parse(res.body) end define_method :master_swagger do