Sha256: a46eaf58a20e0c9d3d54225bc802a96a422f0458903a71534a66ff85454e7d2d

Contents?: true

Size: 1.71 KB

Versions: 11

Compression:

Stored size: 1.71 KB

Contents

require 'spec_helper'

RSpec.describe Loga::ParameterFilter do
  let(:filters) { [:password, /token/] }

  shared_examples 'compiled filter' do
    let(:compiled_filters) { described_class::CompiledFilter }

    before do
      allow(compiled_filters).to receive(:compile).and_call_original
    end

    it 'compiles filters only once' do
      expect(compiled_filters).to receive(:compile).once
      2.times { subject.filter(params) }
    end
  end

  describe '#filter(params)' do
    subject { described_class.new(filters) }

    let(:params) do
      {
        password: 'password123',
        email: 'hello@world.com',
        token: 'ABC',
      }
    end

    let(:result) do
      {
        password: '[FILTERED]',
        email: 'hello@world.com',
        token: '[FILTERED]',
      }
    end

    context 'when no filters are applied' do
      let(:filters) { [] }

      it 'returns params' do
        expect(subject.filter(params)).to match(params)
      end

      include_examples 'compiled filter'
    end

    context 'when params is shallow' do
      it 'returns filtered params' do
        expect(subject.filter(params)).to match(result)
      end

      include_examples 'compiled filter'
    end

    context 'when params has a nested Hash' do
      let(:params) { { user: super() } }

      it 'returns filtered params' do
        expect(subject.filter(params)).to match(user: result)
      end

      include_examples 'compiled filter'
    end

    context 'when params has a nested Array' do
      let(:params) { { users: [super(), super()] } }

      it 'returns filtered params' do
        expect(subject.filter(params)).to match(users: [result, result])
      end

      include_examples 'compiled filter'
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
loga-2.2.0 spec/unit/loga/parameter_filter_spec.rb
loga-2.1.2 spec/unit/loga/parameter_filter_spec.rb
loga-2.1.1 spec/unit/loga/parameter_filter_spec.rb
loga-2.0.0 spec/unit/loga/parameter_filter_spec.rb
loga-1.4.0 spec/unit/loga/parameter_filter_spec.rb
loga-1.3.0 spec/unit/loga/parameter_filter_spec.rb
loga-1.2.1 spec/unit/loga/parameter_filter_spec.rb
loga-1.1.1 spec/unit/loga/parameter_filter_spec.rb
loga-1.1.0 spec/unit/loga/parameter_filter_spec.rb
loga-1.0.0 spec/unit/loga/parameter_filter_spec.rb
loga-2.1.0 spec/unit/loga/parameter_filter_spec.rb