Sha256: 66e197f8ebdd3500c6e8a08c20d17c23eb03b18d7154415a258665261cd8f3e6

Contents?: true

Size: 779 Bytes

Versions: 4

Compression:

Stored size: 779 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}\n#{body}"
            raise e
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sinatra-swagger-0.4.2 lib/sinatra/swagger/spec_enforcer.rb
sinatra-swagger-0.4.1 lib/sinatra/swagger/spec_enforcer.rb
sinatra-swagger-0.4.0 lib/sinatra/swagger/spec_enforcer.rb
sinatra-swagger-0.3.1 lib/sinatra/swagger/spec_enforcer.rb