Sha256: da496149192edc3bf1832fb09faa4aa9ac63979d71c1bd4da07e2cdfa4dc1fb2

Contents?: true

Size: 1.95 KB

Versions: 2

Compression:

Stored size: 1.95 KB

Contents

require 'spec_helper'
require 'rollbar/truncation/frames_strategy'

describe Rollbar::Truncation::MinBodyStrategy do
  describe '.call', :fixture => :payload do
    let(:message) { 'a' * 1_000 }

    context 'with trace key ' do
      let(:payload_fixture) { 'payloads/sample.trace.json' }
      let!(:frames) { payload['data']['body']['trace']['frames'].clone }

      before do
        payload['data']['body']['trace']['exception']['message'] = message
      end

      it 'truncates the exception message and frames array' do
        result = MultiJson.load(described_class.call(payload))

        trace = result['data']['body']['trace']
        expect(trace['frames']).to have(2).items
        expect(trace['exception']['message']).to be_eql('a' * 255)
      end
    end

    context 'with trace_chain key ' do
      let(:payload_fixture) { 'payloads/sample.trace_chain.json' }
      let!(:frames1) { payload['data']['body']['trace_chain'][0]['frames'].clone }
      let!(:frames2) { payload['data']['body']['trace_chain'][1]['frames'].clone }

      before do
        payload['data']['body']['trace_chain'][0]['exception']['message'] = message
        payload['data']['body']['trace_chain'][1]['exception']['message'] = message
      end

      it 'truncates the exception message and frames array' do
        result = MultiJson.load(described_class.call(payload))

        traces = result['data']['body']['trace_chain']
        expect(traces[0]['frames']).to have(2).items
        expect(traces[0]['exception']['message']).to be_eql('a' * 255)

        expect(traces[1]['frames']).to have(2).items
        expect(traces[1]['exception']['message']).to be_eql('a' * 255)
      end
    end

    context 'with a message payload' do
      let(:payload_fixture) { 'payloads/sample.trace_chain.json' }

      it "doesn't truncate anything and returns same payload" do
        result = MultiJson.load(described_class.call(payload))

        expect(result).to be_eql(payload)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rollbar-1.5.3 spec/rollbar/truncation/min_body_strategy_spec.rb
rollbar-1.5.2 spec/rollbar/truncation/min_body_strategy_spec.rb