@@ -9,7 +9,11 @@ import type {
99import { createClientReportEnvelope , createEnvelope , dsnFromString , parseEnvelope } from '@sentry/utils' ;
1010
1111import { createTransport , getEnvelopeEndpointWithUrlEncodedAuth , makeMultiplexedTransport } from '../../../src' ;
12- import { eventFromEnvelope } from '../../../src/transports/multiplexed' ;
12+ import {
13+ SIMPLE_MULTIPLEXED_TRANSPORT_EXTRA_ROUTING_KEY ,
14+ eventFromEnvelope ,
15+ makeSimpleMultiplexedTransport ,
16+ } from '../../../src/transports/multiplexed' ;
1317
1418const DSN1 = 'https://[email protected] /4321' ; 1519const DSN1_URL = getEnvelopeEndpointWithUrlEncodedAuth ( dsnFromString ( DSN1 ) ! ) ;
@@ -221,3 +225,82 @@ describe('makeMultiplexedTransport', () => {
221225 await transport . send ( TRANSACTION_ENVELOPE ) ;
222226 } ) ;
223227} ) ;
228+
229+ describe ( 'makeSimpleMultiplexedTransport()' , ( ) => {
230+ it ( 'sends events to targets provided in event.extra[SIMPLE_MULTIPLEXED_TRANSPORT_EXTRA_ROUTING_KEY]' , async ( ) => {
231+ expect . assertions ( 2 ) ;
232+
233+ const makeTransport = makeSimpleMultiplexedTransport (
234+ createTestTransport (
235+ url => {
236+ expect ( url ) . toBe ( DSN1_URL ) ;
237+ } ,
238+ url => {
239+ expect ( url ) . toBe ( DSN2_URL ) ;
240+ } ,
241+ ) ,
242+ ) ;
243+
244+ const envelope = createEnvelope < EventEnvelope > ( { event_id : 'aa3ff046696b4bc6b609ce6d28fde9e2' , sent_at : '123' } , [
245+ [
246+ { type : 'event' } ,
247+ {
248+ event_id : 'aa3ff046696b4bc6b609ce6d28fde9e2' ,
249+ extra : {
250+ [ SIMPLE_MULTIPLEXED_TRANSPORT_EXTRA_ROUTING_KEY ] : [ DSN1 , DSN2 ] ,
251+ } ,
252+ } ,
253+ ] as EventItem ,
254+ ] ) ;
255+
256+ const transport = makeTransport ( { url : DSN1_URL , ...transportOptions } ) ;
257+ await transport . send ( envelope ) ;
258+ } ) ;
259+
260+ it ( 'sends events to default DSN if event.extra[SIMPLE_MULTIPLEXED_TRANSPORT_EXTRA_ROUTING_KEY] is not set' , async ( ) => {
261+ expect . assertions ( 1 ) ;
262+
263+ const makeTransport = makeSimpleMultiplexedTransport (
264+ createTestTransport ( url => {
265+ expect ( url ) . toBe ( DSN1_URL ) ;
266+ } ) ,
267+ ) ;
268+
269+ const envelope = createEnvelope < EventEnvelope > ( { event_id : 'aa3ff046696b4bc6b609ce6d28fde9e2' , sent_at : '123' } , [
270+ [
271+ { type : 'event' } ,
272+ {
273+ event_id : 'aa3ff046696b4bc6b609ce6d28fde9e2' ,
274+ } ,
275+ ] as EventItem ,
276+ ] ) ;
277+
278+ const transport = makeTransport ( { url : DSN1_URL , ...transportOptions } ) ;
279+ await transport . send ( envelope ) ;
280+ } ) ;
281+
282+ it ( 'sends events to default DSN if event.extra[SIMPLE_MULTIPLEXED_TRANSPORT_EXTRA_ROUTING_KEY] is an empty array' , async ( ) => {
283+ expect . assertions ( 1 ) ;
284+
285+ const makeTransport = makeSimpleMultiplexedTransport (
286+ createTestTransport ( url => {
287+ expect ( url ) . toBe ( DSN1_URL ) ;
288+ } ) ,
289+ ) ;
290+
291+ const envelope = createEnvelope < EventEnvelope > ( { event_id : 'aa3ff046696b4bc6b609ce6d28fde9e2' , sent_at : '123' } , [
292+ [
293+ { type : 'event' } ,
294+ {
295+ event_id : 'aa3ff046696b4bc6b609ce6d28fde9e2' ,
296+ extra : {
297+ [ SIMPLE_MULTIPLEXED_TRANSPORT_EXTRA_ROUTING_KEY ] : [ ] ,
298+ } ,
299+ } ,
300+ ] as EventItem ,
301+ ] ) ;
302+
303+ const transport = makeTransport ( { url : DSN1_URL , ...transportOptions } ) ;
304+ await transport . send ( envelope ) ;
305+ } ) ;
306+ } ) ;
0 commit comments