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)); }
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);
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); }