Sha256: efa4450a17312cb9ba29791d2023992cc82169493a4da2618ad769d49d3857af

Contents?: true

Size: 1.83 KB

Versions: 17

Compression:

Stored size: 1.83 KB

Contents

require 'pact_broker/api/resources/base_resource'
require 'pact_broker/configuration'
require 'pact_broker/domain/verification'
require 'pact_broker/api/contracts/verification_contract'
require 'pact_broker/api/decorators/verification_decorator'

module PactBroker
  module Api
    module Resources

      class Verifications < BaseResource

        def content_types_accepted
          [["application/json", :from_json]]
        end

        def content_types_provided
          [["application/hal+json", :to_json]]
        end

        def allowed_methods
          ["POST", "OPTIONS"]
        end

        def post_is_create?
          true
        end

        def resource_exists?
          !!pact
        end

        def malformed_request?
          if request.post?
            return true if invalid_json?
            errors = verification_service.errors(params)
            if !errors.empty?
              set_json_validation_error_messages(errors.messages)
              return true
            end
          end
          false
        end

        def create_path
          new_verification_url(pact, next_verification_number, base_url)
        end

        def from_json
          verification = verification_service.create(next_verification_number, params_with_string_keys, pact)
          response.body = decorator_for(verification).to_json(user_options: {base_url: base_url})
          true
        end

        private

        def pact
          @pact ||= pact_service.find_pact(pact_params)
        end

        def next_verification_number
          @next_verification_number ||= verification_service.next_number
        end

        def decorator_for model
          PactBroker::Api::Decorators::VerificationDecorator.new(model)
        end

        def update_matrix_after_request?
          request.post?
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
pact_broker-2.31.0 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.30.0 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.29.0 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.27.6 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.27.5 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.27.4 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.27.3 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.27.2 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.27.0 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.26.1 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.26.0 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.25.0 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.24.0 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.23.4 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.23.3 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.23.2 lib/pact_broker/api/resources/verifications.rb
pact_broker-2.23.1 lib/pact_broker/api/resources/verifications.rb