public void Ctor()
        {
            var httpClient = new HttpClient();
            var options    = Options.Create(new AuditTrailClientOptions {
                DeliveryEndpoint = "https://example.com"
            });
            var tokenClientOptions = options.Value.TokenClientOptions;
            var sink          = new TestTokenSink(true);
            var store         = new TestTokenStore();
            var tokenAcquirer = new DefaultAccessTokenAcquirer(new TestLogger <DefaultAccessTokenAcquirer>(), new TokenClient(httpClient, options.Value.TokenClientOptions), options);
            var logger        = new TestLogger <AuditTrailClient>();
            var env           = new TestHostEnvironment();

            var client = new AuditTrailClient("https://example.com", "api", tokenClientOptions);

            client = new AuditTrailClient(httpClient, options, sink, store, logger, tokenAcquirer, env);
            client = new AuditTrailClient(httpClient, options, sink, store, logger, tokenAcquirer);

            Assert.Throws <ArgumentNullException>("eventEndpoint", () => new AuditTrailClient(null !, "api", tokenClientOptions));
            Assert.Throws <ArgumentNullException>("scope", () => new AuditTrailClient("https://example.com", null !, tokenClientOptions));
            Assert.Throws <ArgumentNullException>("tokenClientOptions", () => new AuditTrailClient("https://example.com", "api", null !));
            Assert.Throws <ArgumentNullException>("httpClient", () => new AuditTrailClient(null !, options, sink, store, logger, tokenAcquirer, env));
            Assert.Throws <ArgumentNullException>("options", () => new AuditTrailClient(httpClient, null !, sink, store, logger, tokenAcquirer, env));
            Assert.Throws <ArgumentNullException>("sink", () => new AuditTrailClient(httpClient, options, null !, store, logger, tokenAcquirer, env));
            Assert.Throws <ArgumentNullException>("store", () => new AuditTrailClient(httpClient, options, sink, null !, logger, tokenAcquirer, env));
            Assert.Throws <ArgumentNullException>("logger", () => new AuditTrailClient(httpClient, options, sink, store, null !, tokenAcquirer, env));
            Assert.Throws <ArgumentNullException>("tokenAcquirer", () => new AuditTrailClient(httpClient, options, sink, store, logger, null !, env));
            Assert.Throws <ArgumentException>("options", () => new AuditTrailClient(httpClient, Options.Create(new AuditTrailClientOptions()), sink, store, logger, tokenAcquirer, env));
        }
Пример #2
0
        public async Task Test(bool canWrite, int expectedCount)
        {
            var options = new AuditTrailClientOptions
            {
                ResendIntervalInSeconds = 0
            };
            var            items   = new[] { new AuditTrailItem(), new AuditTrailItem(), new AuditTrailItem() };
            TestSink       sink    = new TestSink(canWrite);
            TestTokenStore store   = new TestTokenStore(items);
            var            service = new AuditTrailRecoveryService(Options.Create(options), new TestLogger <AuditTrailRecoveryService>(), store, sink);

            await service.StartAsync(default);
Пример #3
0
        public void Ctor()
        {
            IOptions <AuditTrailClientOptions> options = Options.Create(new AuditTrailClientOptions());
            TestSink       sink  = new TestSink(true);
            TestTokenStore store = new TestTokenStore(null);
            TestLogger <AuditTrailRecoveryService> testLogger = new TestLogger <AuditTrailRecoveryService>();
            var service = new AuditTrailRecoveryService(options, testLogger, store, sink);

            Assert.Throws <ArgumentNullException>("options", () => new AuditTrailRecoveryService(null !, testLogger, store, sink));
            Assert.Throws <ArgumentNullException>("logger", () => new AuditTrailRecoveryService(options, null !, store, sink));
            Assert.Throws <ArgumentNullException>("store", () => new AuditTrailRecoveryService(options, testLogger, null !, sink));
            Assert.Throws <ArgumentNullException>("sink", () => new AuditTrailRecoveryService(options, testLogger, store, null !));
        }
        public async Task SendAsync_Retriable_NotHosted_WarningCaptureException(Type exceptionType)
        {
            var store     = new TestTokenStore();
            var response1 = new HttpResponseMessage {
                Content = new FailingHttpContent(exceptionType)
            };
            var httpClient = CreateClient(new TestHttpMessageHandler(response1), tokenSinkResult: true, store: store);
            var request    = CreateDescriptor();
            var response   = await httpClient.SendAuditTrailAsync(request);

            Assert.Equal(EventTransmissionStatus.Error, response.Status);
            Assert.IsType(exceptionType, response.Exception);
            Assert.Equal(0, store.RecordedCount);
        }
        public async Task SendAsync_Retriable_NotHosted_ErrorCaptureException(Type exceptionType)
        {
            var store      = new TestTokenStore();
            var httpClient = CreateClient(new FailingHttpMessageHandler((Exception)Activator.CreateInstance(exceptionType) !), tokenSinkResult: false, store: store, env: null);
            var request    = CreateDescriptor();
            var response   = await httpClient.SendAuditTrailAsync(request);

            Assert.Equal(EventTransmissionStatus.Error, response.Status);
            Assert.Null(response.Error);
            Assert.Null(response.ErrorDescription);
            Assert.NotNull(response.Exception);
            Assert.IsType(exceptionType, response.Exception);

            Assert.Equal(0, store.RecordedCount);
        }
        public async Task SendAsync_Exception_Fail(Type exceptionType)
        {
            var store     = new TestTokenStore();
            var response1 = new HttpResponseMessage()
            {
                Content = new FailingHttpContent(exceptionType)
            };
            var httpClient = CreateClient(new TestHttpMessageHandler(response1), store: store);
            var request    = CreateDescriptor();
            var response   = await httpClient.SendAuditTrailAsync(request);

            Assert.Equal(EventTransmissionStatus.Error, response.Status);
            Assert.Null(response.Error);
            Assert.Null(response.ErrorDescription);
            Assert.NotNull(response.Exception);
            Assert.IsType(exceptionType, response.Exception);

            Assert.Equal(0, store.RecordedCount);
        }