Sha256: 73571b3ffd94a73a5de55c01831e24929c3ba57d5e14ac988b99cd26f78210b1

Contents?: true

Size: 1.93 KB

Versions: 7

Compression:

Stored size: 1.93 KB

Contents

RSpec.describe Fauna::ClientLogger do
  before(:all) do
    create_test_db
    @test_class = client.post('classes', name: 'logger_test')[:ref]
  end

  after(:all) do
    destroy_test_db
  end

  # Captures logger output from wrapped client and splits it into lines
  def capture_log
    lines = nil
    observer = Fauna::ClientLogger.logger { |log| lines = log.split("\n") }

    yield get_client(secret: @server_secret, observer: observer)

    lambda { lines.shift }
  end

  it 'logs response' do
    reader = capture_log do |client|
      expect(client.ping).to eq('Scope global is OK')
    end

    expect(reader.call).to eq('Fauna GET /ping')
    expect(reader.call).to match(/^  Credentials:/)
    expect(reader.call).to eq('  Response headers: {')

    # Skip through headers
    loop do
      line = reader.call
      unless line.start_with? '    '
        expect(line).to eq('  }')
        break
      end
    end

    expect(reader.call).to eq('  Response JSON: {')
    expect(reader.call).to eq('    "resource": "Scope global is OK"')
    expect(reader.call).to eq('  }')
    expect(reader.call).to match(/^  Response \(200\): Network latency \d+ms$/)
  end

  it 'logs request content' do
    value = random_number
    reader = capture_log do |client|
      client.post @test_class, data: { a: value }
    end

    expect(reader.call).to eq("Fauna POST /#{@test_class}")
    expect(reader.call).to match(/^  Credentials:/)
    expect(reader.call).to eq('  Request JSON: {')
    expect(reader.call).to eq('    "data": {')
    expect(reader.call).to eq("      \"a\": #{value}")
    expect(reader.call).to eq('    }')
    expect(reader.call).to eq('  }')
    # Ignore the rest
  end

  it 'logs request query' do
    instance = client.post(@test_class)
    ref = instance[:ref]
    ts = instance[:ts]

    reader = capture_log do |client|
      client.get ref, ts: ts
    end

    expect(reader.call).to eq("Fauna GET /#{ref}?ts=#{ts}")
    # Ignore the rest
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
fauna-2.4.0 spec/client_logger_spec.rb
fauna-2.3.0 spec/client_logger_spec.rb
fauna-2.2.0 spec/client_logger_spec.rb
fauna-2.1.2 spec/client_logger_spec.rb
fauna-2.1.1 spec/client_logger_spec.rb
fauna-2.1.0 spec/client_logger_spec.rb
fauna-2.0.0 spec/client_logger_spec.rb