/* Ċ Ġ* ĠUnless Ġexplicitly Ġstated Ġotherwise Ġall Ġfiles Ġin Ġthis Ġrepository Ġare Ġlicensed Ġunder Ġthe ĠApache ĠLicense ĠVersion Ġ 2 . 0 . Ċ Ġ* ĠThis Ġproduct Ġincludes Ġsoftware Ġdeveloped Ġat ĠDat adog Ġ( https :// www . datadog hq . com /). Ċ Ġ* ĠCopyright Ġ 2 0 1 6 - Present ĠDat adog , ĠInc . Ċ Ġ*/ Ċ Ċ package Ġcom . datadog . android Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . datadog . android . rum . Global R um Ċ import Ġcom . datadog . android . rum . R um Monitor Ċ import Ġcom . datadog . android . rum . R um Resource Attributes Provider Ċ import Ġcom . datadog . android . tracing . Tracing Interceptor Ċ import Ġcom . datadog . android . tracing . Tracing Interceptor Test Ċ import Ġcom . datadog . android . utils . forge . Configurator Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . any Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Return Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Throw Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Zero Interactions Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġfr . xg ou chet . el my r . annotation . F org ery Ċ import Ġfr . xg ou chet . el my r . annotation . Int F org ery Ċ import Ġfr . xg ou chet . el my r . junit 5 . Forge Configuration Ċ import Ġfr . xg ou chet . el my r . junit 5 . Forge Extension Ċ import Ġio . op entr acing . Tracer Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġorg . junit . jupiter . api . extension . Extensions Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . junit . jupiter . Mockito Extension Ċ import Ġorg . mockito . junit . jupiter . Mockito Settings Ċ import Ġorg . mockito . quality . Strict ness Ċ Ċ @ Extensions ( ĊĠĠĠ ĠExtend With ( Mockito Extension :: class ), ĊĠĠĠ ĠExtend With ( Forge Extension :: class ) Ċ ) Ċ @ Mockito Settings ( strict ness Ġ= ĠStrict ness . LEN IENT ) Ċ @ Forge Configuration ( Configurator :: class ) Ċ internal Ġclass ĠDat adog Interceptor Without R um Test Ġ: ĠTr acing Interceptor Test () Ġ{ ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġmock R um Monitor : ĠR um Monitor ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġmock R um Attributes Provider : ĠR um Resource Attributes Provider ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġ` set Ġup ĠR UM `() Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal R um . register If Absent ( mock R um Monitor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun Ġ` te ar Ġdown ĠR UM `() Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal R um . is Registered . set ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinstantiate Tested Interceptor ( ĊĠĠĠĠĠĠĠ Ġtr aced Hosts : ĠList < String >, ĊĠĠĠĠĠĠĠ Ġfactory : Ġ() Ġ-> ĠTr acer ĊĠĠĠ Ġ): ĠTr acing Interceptor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDat adog Interceptor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtr aced Hosts , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock RequestListener , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock Detector , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock R um Attributes Provider , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Expected Origin (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDat adog Interceptor . ORIGIN _ R UM ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ðĿ ķ Ħ Ġwarn Ġthat ĠR UM Ġis Ġnot Ġenabled Ġ ðĿ ķ İ Ġintercept ()` ( ĊĠĠĠĠĠĠĠ Ġ@ Int F org ery ( min Ġ= Ġ 2 0 0 , Ġmax Ġ= Ġ 3 0 0 ) ĠstatusCode : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġstub Chain ( mock Chain , ĠstatusCode ) ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġtested Interceptor . intercept ( mock Chain ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify ( mock Dev Log Handler ). handle Log ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . WARN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDat adog Interceptor . WARN _ R UM _ DISABLED ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ðĿ ķ Ħ Ġdo Ġnothing Ġ ðĿ ķ İ Ġintercept () Ġfor Ġsuccessful Ġrequest `( ĊĠĠĠĠĠĠĠ Ġ@ Int F org ery ( min Ġ= Ġ 2 0 0 , Ġmax Ġ= Ġ 3 0 0 ) ĠstatusCode : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġstub Chain ( mock Chain , ĠstatusCode ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġtested Interceptor . intercept ( mock Chain ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify Zero Interactions ( mock R um Monitor ) ĊĠĠĠĠĠĠĠ Ġverify Zero Interactions ( mock R um Attributes Provider ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ðĿ ķ Ħ Ġdo Ġnothing ĠR UM ĠResource Ġ ðĿ ķ İ Ġintercept () Ġfor Ġfailing Ġrequest `( ĊĠĠĠĠĠĠĠ Ġ@ Int F org ery ( min Ġ= Ġ 4 0 0 , Ġmax Ġ= Ġ 5 0 0 ) ĠstatusCode : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġstub Chain ( mock Chain , ĠstatusCode ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġtested Interceptor . intercept ( mock Chain ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify Zero Interactions ( mock R um Monitor ) ĊĠĠĠĠĠĠĠ Ġverify Zero Interactions ( mock R um Attributes Provider ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ðĿ ķ Ħ Ġdo Ġnothing Ġ ðĿ ķ İ Ġintercept () Ġfor Ġthrowing Ġrequest `( ĊĠĠĠĠĠĠĠ Ġ@ F org ery Ġthrowable : ĠThrowable ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Chain . request ()) Ġdo Return Ġfake Request ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Chain . proceed ( any ())) Ġdo Throw Ġthrowable ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ ĠassertThrows < Throwable >( throwable . message . or Empty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtested Interceptor . intercept ( mock Chain ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify Zero Interactions ( mock R um Monitor ) ĊĠĠĠĠĠĠĠ Ġverify Zero Interactions ( mock R um Attributes Provider ) ĊĠĠĠ Ġ} Ċ } Ċ