public RemoteBaggageRestrictionManagerTest()
 {
     _baggageRestrictionProxy = Substitute.For <IBaggageRestrictionManagerProxy>();
     _inMemoryMetricsFactory  = new InMemoryMetricsFactory();
     _metrics   = new MetricsImpl(_inMemoryMetricsFactory);
     _undertest = new RemoteBaggageRestrictionManager(SERVICE_NAME, _baggageRestrictionProxy, _metrics, false);
 }
        public void TestDenyBaggageOnInitializationFailure()
        {
            _baggageRestrictionProxy.GetBaggageRestrictionsAsync(SERVICE_NAME)
            .Returns(new List <BaggageRestrictionResponse> {
                RESTRICTION
            });

            _undertest = new RemoteBaggageRestrictionManager(SERVICE_NAME, _baggageRestrictionProxy, _metrics,
                                                             true, TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(1));

            Assert.False(_undertest.GetRestriction(SERVICE_NAME, BAGGAGE_KEY).KeyAllowed);

            _undertest.UpdateBaggageRestrictions();

            Assert.True(_undertest.IsReady());
            Assert.True(_undertest.GetRestriction(SERVICE_NAME, BAGGAGE_KEY).KeyAllowed);
        }
        public void TestAllowBaggageOnInitializationFailure()
        {
            _baggageRestrictionProxy.GetBaggageRestrictionsAsync(SERVICE_NAME)
            .Returns <List <BaggageRestrictionResponse> >(_ => throw new InvalidOperationException());

            _undertest = new RemoteBaggageRestrictionManager(SERVICE_NAME, _baggageRestrictionProxy, _metrics,
                                                             false, TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(1));

            Assert.True(_undertest.GetRestriction(SERVICE_NAME, BAGGAGE_KEY).KeyAllowed);

            _undertest.UpdateBaggageRestrictions();

            Assert.False(_undertest.IsReady());
            // If baggage restriction update fails, all baggage should still be allowed.
            Assert.True(_undertest.GetRestriction(SERVICE_NAME, BAGGAGE_KEY).KeyAllowed);
            Assert.True(_inMemoryMetricsFactory.GetCounter("jaeger:baggage_restrictions_updates", "result=err") > 0L);
        }