Sha256: 8284d3c2c56c117dfedd093e63d3ec512ca9885438ad991c07393cc2ab6086fe

Contents?: true

Size: 1.91 KB

Versions: 2

Compression:

Stored size: 1.91 KB

Contents

require 'spec_helper'

describe Grape::Middleware::Logger, type: :integration do
  let(:app) { build :app }
  let(:options) { { filter: build(:param_filter), logger: Logger.new(Tempfile.new('logger')) } }

  subject { described_class.new(app, options) }

  let(:app_response) { build :app_response }
  let(:grape_request) { build :grape_request }
  let(:grape_endpoint) { build(:grape_endpoint) }
  let(:env) { build(:expected_env, grape_endpoint: grape_endpoint) }

  it 'logs all parts of the request' do
    expect(subject.logger).to receive(:info).with ''
    expect(subject.logger).to receive(:info).with %Q(Started POST "/api/1.0/users" at #{subject.start_time})
    expect(subject.logger).to receive(:info).with %Q(Processing by TestAPI/users)
    expect(subject.logger).to receive(:info).with %Q(  Parameters: {"id"=>"101001", "secret"=>"[FILTERED]", "customer"=>[], "name"=>"foo", "password"=>"[FILTERED]"})
    expect(subject.logger).to receive(:info).with /Completed 200 in \d+.\d+ms/
    expect(subject.logger).to receive(:info).with ''
    subject.call!(env)
  end

  describe 'the "processing by" section' do
    before { subject.call!(env) }

    context 'namespacing' do
      let(:grape_endpoint) { build(:namespaced_endpoint) }

      it 'ignores the namespacing' do
        expect(subject.processed_by).to eq 'TestAPI/admin/users'
      end

      context 'with more complex route' do
        let(:grape_endpoint) { build(:namespaced_endpoint, :complex) }

        it 'only escapes the first slash and leaves the rest of the untouched' do
          expect(subject.processed_by).to eq 'TestAPI/admin/users/:name/profile'
        end
      end
    end

    context 'with more complex route' do
      let(:grape_endpoint) { build(:grape_endpoint, :complex) }

      it 'only escapes the first slash and leaves the rest of the untouched' do
        expect(subject.processed_by).to eq 'TestAPI/users/:name/profile'
      end
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
grape-middleware-logger-1.7.0 spec/integration/lib/grape/middleware/logger_spec.rb
grape-middleware-logger-1.6.0 spec/integration/lib/grape/middleware/logger_spec.rb