public async Task TestSdkVersionIsPopulatedByMiddleware()
        {
            var context = new DefaultHttpContext();

            context.Request.Scheme = HttpRequestScheme;
            context.Request.Host   = this.httpRequestHost;

            await middleware.Invoke(context, new RequestTelemetry());

            Assert.NotEmpty(this.sentTelemetry.Context.GetInternalContext().SdkVersion);
            Assert.Contains(SdkVersionTestUtils.VersionPrefix, this.sentTelemetry.Context.GetInternalContext().SdkVersion);
        }
        public async Task RequestWillBeMarkedAsFailedForRunawayException()
        {
            var context = new DefaultHttpContext();
            context.Request.Scheme = HttpRequestScheme;
            context.Request.Host = this.httpRequestHost;

            var requestMiddleware = new RequestTrackingMiddleware(
                httpContext => { throw new InvalidOperationException(); },
                CommonMocks.MockTelemetryClient(telemetry => this.sentTelemetry = telemetry));

            await Assert.ThrowsAnyAsync<InvalidOperationException>(async () => { await requestMiddleware.Invoke(context, new RequestTelemetry()); } );

            Assert.False(((RequestTelemetry)this.sentTelemetry).Success);
        }
        public async Task RequestWillBeMarkedAsFailedForRunawayException()
        {
            var context = new DefaultHttpContext();

            context.Request.Scheme = HttpRequestScheme;
            context.Request.Host   = this.httpRequestHost;

            var requestMiddleware = new RequestTrackingMiddleware(
                httpContext => { throw new InvalidOperationException(); },
                CommonMocks.MockTelemetryClient(telemetry => this.sentTelemetry = telemetry));

            await Assert.ThrowsAnyAsync <InvalidOperationException>(async() => { await requestMiddleware.Invoke(context, new RequestTelemetry()); });

            Assert.False(((RequestTelemetry)this.sentTelemetry).Success);
        }