Module: Julewire::Core::Testing::Contracts::Wire

Included in:
Julewire::Core::Testing::Contracts
Defined in:
lib/julewire/core/testing/contracts/wire.rb

Instance Method Summary collapse

Instance Method Details

#assert_julewire_propagation_contract(key: Julewire::Core::Propagation::Carrier::DEFAULT_KEY) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/julewire/core/testing/contracts/wire.rb', line 8

def assert_julewire_propagation_contract(key: Julewire::Core::Propagation::Carrier::DEFAULT_KEY)
  carrier = {}
  extracted = nil
  restored = nil

  Julewire.with_execution(type: :contract, id: "contract-1", emit_summary: false) do
    Julewire.context.add(request_id: "request-1")
    Julewire.carry.add(http: { request_headers: { traceparent: contract_traceparent } })

    assert_same carrier, Julewire::Core::Propagation::Carrier.inject(carrier, key: key)

    extracted = Julewire::Core::Propagation::Carrier.extract(carrier, key: key)
    assert_equal "request-1", extracted.dig(:context, :request_id)
    assert_equal contract_traceparent, extracted.dig(:carry, :http, :request_headers, :traceparent)
    assert_equal "contract-1", extracted.dig(:execution, :id)

    Julewire::Core::Propagation::Carrier.restore(carrier, key: key) do
      restored = Julewire::Core::Propagation.capture_local
    end
  end

  assert_equal "request-1", restored.dig(:context, :request_id)
  assert_equal contract_traceparent, restored.dig(:carry, :http, :request_headers, :traceparent)
  assert_equal "contract-1", restored.dig(:execution, :id)
  assert_oversize_carrier_clears_stale_value!(key)

  extracted
end