Sha256: d1bc95eeba89ae478430ea550494a1ec78e8edd8ef43c397a91de88f4b2dd90f

Contents?: true

Size: 770 Bytes

Versions: 2

Compression:

Stored size: 770 Bytes

Contents

require "sinatra/swagger/swagger_linked"

module Sinatra
  module Swagger
    module SpecEnforcer
      def self.registered(app)
        app.register Swagger::SwaggerLinked

        app.after do
          next unless response.content_type =~ %r{^application/(?:.+\+)?json$}
          next unless body = JSON.parse(response.body.first) rescue nil
          next if swagger_spec.nil?
          schema = schema_from_spec_at("responses/#{response.status}/schema")
          next if schema.nil?
          begin
            JSON::Validator.validate!(schema, body)
          rescue JSON::Schema::ValidationError => e
            e.message = "Response JSON did not match the Swagger schema: #{e.message}"
            raise e
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sinatra-swagger-0.2.2 lib/sinatra/swagger/spec_enforcer.rb
sinatra-swagger-0.2.1 lib/sinatra/swagger/spec_enforcer.rb