public void ConfiguresInstrumentationKey()
            {
                // Act
                var aiConfiguration = DefaultDependenciesModule.ConfigureApplicationInsights(_appConfiguration, out var _);

                // Assert
                Assert.Equal(
                    _appConfiguration.AppInsightsInstrumentationKey,
                    aiConfiguration.TelemetryConfiguration.InstrumentationKey);
            }
            public void SetsApplicationIdProvider()
            {
                // Act
                var aiConfiguration = DefaultDependenciesModule.ConfigureApplicationInsights(
                    _appConfiguration,
                    out var _);

                // Assert
                Assert.NotNull(aiConfiguration.TelemetryConfiguration.ApplicationIdProvider);
                Assert.IsType(
                    typeof(ApplicationInsightsApplicationIdProvider),
                    aiConfiguration.TelemetryConfiguration.ApplicationIdProvider);
            }
            public void ConfiguresHeartbeatInterval()
            {
                // Act
                var aiConfiguration = DefaultDependenciesModule.ConfigureApplicationInsights(_appConfiguration, out var _);

                // Assert
                Assert.Equal(
                    _appConfiguration.AppInsightsInstrumentationKey,
                    aiConfiguration.TelemetryConfiguration.InstrumentationKey);

                Assert.Equal(
                    _appConfiguration.AppInsightsHeartbeatIntervalSeconds,
                    aiConfiguration.DiagnosticsTelemetryModule.HeartbeatInterval.TotalSeconds);
            }
            public void ConfiguresTelemetryInitializers(string deploymentLabel)
            {
                // Arrange
                _appConfiguration.DeploymentLabel = deploymentLabel;
                var elementInspectors = GetTelemetryInitializerInspectors(deploymentLabel, deploymentId: null);

                // Act
                var aiConfiguration = DefaultDependenciesModule.ConfigureApplicationInsights(
                    _appConfiguration,
                    out var _);

                // Assert
                Assert.Collection(
                    aiConfiguration.TelemetryConfiguration.TelemetryInitializers,
                    elementInspectors);
            }
            public void ConfiguresTelemetryClientWrapper()
            {
                // Act
                var aiConfiguration = DefaultDependenciesModule.ConfigureApplicationInsights(
                    _appConfiguration,
                    out var telemetryClient);

                // Assert
                Assert.NotNull(telemetryClient);
                Assert.IsType <TelemetryClientWrapper>(telemetryClient);

                var telemetryClientWrapper = (TelemetryClientWrapper)telemetryClient;

                Assert.Equal(
                    _appConfiguration.AppInsightsInstrumentationKey,
                    telemetryClientWrapper.UnderlyingClient.InstrumentationKey);

                Assert.Equal(
                    _appConfiguration.AppInsightsInstrumentationKey,
                    telemetryClientWrapper.UnderlyingClient.Context.InstrumentationKey);
            }
            public void ConfiguresDefaultSink()
            {
                // Act
                var aiConfiguration = DefaultDependenciesModule.ConfigureApplicationInsights(
                    _appConfiguration,
                    out var _);

                Assert.NotNull(aiConfiguration.TelemetryConfiguration.DefaultTelemetrySink);
                Assert.IsType(
                    typeof(ServerTelemetryChannel),
                    aiConfiguration.TelemetryConfiguration.DefaultTelemetrySink.TelemetryChannel);

                // We can't use Assert.Collection here as Application Insights auto-registers
                // an additional TelemetryProcessor of type TransmissionProcessor in the TelemetrySink,
                // but that type is internal...
                Assert.Contains(
                    aiConfiguration.TelemetryConfiguration.DefaultTelemetrySink.TelemetryProcessors,
                    i => i.GetType().Equals(typeof(QuickPulseTelemetryProcessor)));
                Assert.Contains(
                    aiConfiguration.TelemetryConfiguration.DefaultTelemetrySink.TelemetryProcessors,
                    i => i.GetType().Equals(typeof(AutocollectedMetricsExtractor)));
            }