Sha256: 491d644cfa69a65d538bf6a760a6035ec476a75196c14dab4418a48df8619019

Contents?: true

Size: 1.74 KB

Versions: 11

Compression:

Stored size: 1.74 KB

Contents

require 'spec_helper'
require 'logger'

module Seahorse
  module  Client
    module Logging
      describe Handler do

        class LogNullDevice
          attr_reader :messages
          def write(msg)
            @messages ||= ''
            @messages << msg
          end
          def close; end
        end

        class TestFormatter
          def format(response)
            'test-formatter-log-msg'
          end
        end

        def handle!
          @log_dev ||= LogNullDevice.new
          @logger ||= Logger.new(@log_dev)
          @log_level ||= :info
          @formatter ||= TestFormatter.new
          @config ||= double('config',
            logger: @logger,
            log_level: @log_level,
            log_formatter: @formatter)
          @handler ||= Handler.new(lambda { |context|
            context.http_response.status_code = 200
            Response.new(context: context)
          })
          @handler.call(RequestContext.new(config: @config))
        end

        it 'populates the request context with timing information' do
          resp = handle!
          expect(resp.context[:logging_started_at]).to be_kind_of(Time)
          expect(resp.context[:logging_completed_at]).to be_kind_of(Time)
          expect(resp.context[:logging_started_at]).to be <= resp.context[:logging_completed_at]
        end

        it 'sends the formatted message to the logger' do
          handle!
          expect(@log_dev.messages).to match(/test-formatter-log-msg/)
        end

        it 'sends the message at the right log level' do
          @log_dev = LogNullDevice.new
          @logger = Logger.new(@log_dev)
          @logger.level = Logger::WARN
          handle!
          expect(@log_dev.messages).to be(nil)
        end

      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
aws-sdk-core-2.0.0.rc12 vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb
aws-sdk-core-2.0.0.rc11 vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb
aws-sdk-core-2.0.0.rc10 vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb
aws-sdk-core-2.0.0.rc9 vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb
aws-sdk-core-2.0.0.rc8 vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb
aws-sdk-core-2.0.0.rc7 vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb
aws-sdk-core-2.0.0.rc6 vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb
aws-sdk-core-2.0.0.rc5 vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb
aws-sdk-core-2.0.0.rc4 vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb
aws-sdk-core-2.0.0.rc3 vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb
aws-sdk-core-2.0.0.rc2 vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb