spec/elastic_apm/span/context_spec.rb (84 lines of code) (raw):

# Licensed to Elasticsearch B.V. under one or more contributor # license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright # ownership. Elasticsearch B.V. licenses this file to you under # the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # frozen_string_literal: true require 'spec_helper' module ElasticAPM RSpec.describe Span::Context do describe 'initialize' do context 'with no args' do its(:db) { should be nil } its(:http) { should be nil } end context 'with db' do subject { described_class.new db: { statement: 'asd' } } it 'adds a db object' do expect(subject.db.statement).to eq 'asd' end context 'when the statement contains invalid utf-8 byte sequences' do subject { described_class.new db: { statement: ",&\xB4kh" } } it 'replaces the byte sequences' do expect(subject.db.statement).to eq ',&�kh' end end end context 'with http' do subject { described_class.new http: { url: 'asd' } } it 'adds a http object' do expect(subject.http.url).to eq 'asd' end context 'when given auth info' do subject do described_class.new( http: { url: 'https://user%40email.com:pass@example.com/q=a@b' } # %40 => @ ) end it 'omits the password' do expect(subject.http.url).to eq 'https://user%40email.com@example.com/q=a@b' end end end context 'with destination' do subject do described_class.new( destination: { service: { name: 'nam', resource: 'res', type: 'typ' } } ) end it 'adds a Destination object' do expect(subject.destination.service.name).to eq 'nam' expect(subject.destination.service.resource).to eq 'res' expect(subject.destination.service.type).to eq 'typ' end end context 'with service' do subject do described_class.new( service: { target: { name: 'nam', type: 'typ' } } ) end it 'adds a Service Target object' do expect(subject.service.target.name).to eq 'nam' expect(subject.service.target.type).to eq 'typ' end end context 'with message' do subject do described_class.new( message: { queue_name: 'my_queue', age_ms: 1000 } ) end it 'adds a Message object' do expect(subject.message.queue_name).to eq 'my_queue' expect(subject.message.age_ms).to eq 1000 end end end end end