public void AddCloudFoundryActuators_IHostBuilder()
        {
            // Arrange
            var hostBuilder = new HostBuilder().ConfigureAppConfiguration(cbuilder => cbuilder.AddInMemoryCollection(ManagementSettings));

            // Act
            var host = hostBuilder.AddCloudFoundryActuators(MediaTypeVersion.V1).Build();
            var managementOptions = host.Services.GetServices <IManagementOptions>();

            var filter = host.Services.GetServices <IStartupFilter>().FirstOrDefault();

            // Assert
            Assert.Contains(managementOptions, t => t.GetType() == typeof(CloudFoundryManagementOptions));

            if (Platform.IsWindows)
            {
                Assert.Single(host.Services.GetServices <ThreadDumpEndpoint>());
            }
            else
            {
                Assert.Empty(host.Services.GetServices <ThreadDumpEndpoint>());
            }

            if (Endpoint.HeapDump.EndpointServiceCollectionExtensions.IsHeapDumpSupported())
            {
                Assert.Single(host.Services.GetServices <HeapDumpEndpoint>());
            }
            else
            {
                Assert.Empty(host.Services.GetServices <HeapDumpEndpoint>());
            }

            Assert.NotNull(filter);
            Assert.IsType <CloudFoundryActuatorsStartupFilter>(filter);
        }
        public async Task AddCloudFoundryActuators_IHostBuilder_IStartupFilterFires()
        {
            // Arrange
            var hostBuilder = new HostBuilder()
                              .ConfigureWebHost(c => c.UseTestServer().Configure(app => { }))
                              .ConfigureAppConfiguration(cbuilder => cbuilder.AddInMemoryCollection(managementSettings));

            // Act
            var host = await hostBuilder.AddCloudFoundryActuators(MediaTypeVersion.V1, ActuatorContext.ActuatorAndCloudFoundry).StartAsync();

            // Assert general success...
            //   not sure how to actually validate the StartupFilter worked,
            //   but debug through and you'll see it. Also the code coverage report should provide validation
            Assert.True(true);
        }
        public async Task AddCloudFoundryActuatorsV1_IHostBuilder_IStartupFilterFires()
        {
            // Arrange
            var hostBuilder = new HostBuilder()
                              .ConfigureWebHost(testServerWithRouting)
                              .ConfigureAppConfiguration(cbuilder => cbuilder.AddInMemoryCollection(ManagementSettings));

            // Act
            var host = await hostBuilder.AddCloudFoundryActuators(MediaTypeVersion.V1).StartAsync();

            // Assert
            var response = host.GetTestServer().CreateClient().GetAsync("/cloudfoundryapplication");

            Assert.Equal(System.Net.HttpStatusCode.OK, response.Result.StatusCode);
            response = host.GetTestServer().CreateClient().GetAsync("/cloudfoundryapplication/info");
            Assert.Equal(System.Net.HttpStatusCode.OK, response.Result.StatusCode);
            response = host.GetTestServer().CreateClient().GetAsync("/cloudfoundryapplication/trace");
            Assert.Equal(System.Net.HttpStatusCode.OK, response.Result.StatusCode);
        }