// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
        {
            var logger = loggerFactory.CreateLogger <Startup>();

            app.UseMiddleware <LogRequestIsHttpsMiddleware>();
            app.UseMiddleware <PreForwardedHeadersLogHeadersMiddleware>();
            app.UseForwardedHeaders();
            app.UseMiddleware <PostForwardedHeadersLogHeadersMiddleware>();
            app.UseMiddleware <LogRequestIsHttpsMiddleware>();

            app.UseMiddleware <LogResponseHeadersMiddleware>();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                logger.LogDebug($"Configuring HSTS");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            // app.UseHttpsRedirection();

            app.UseRouting();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
                endpoints.MapGet("api/test", EndpointExtensions.TestEndpoint("service2"));
            });
        }
        public void AddDiscoverable_adds_announceable_behavior_to_endpoint(IEndpoint endpoint)
        {
            EndpointExtensions.Discoverable(endpoint);

            Assert.That(endpoint.Behaviors, Has.One.InstanceOf <AnnounceableBehavior>());
        }
        public void AddDiscoverable_returns_same_endpoint(IEndpoint endpoint)
        {
            var result = EndpointExtensions.Discoverable(endpoint);

            Assert.That(result, Is.SameAs(endpoint));
        }
        public void AddBehavior_uses_configuration_delegate(IEndpoint endpoint, Action <TestEndpointBehavior> configurationAction)
        {
            EndpointExtensions.AddBehavior <TestEndpointBehavior>(endpoint, configurationAction);

            Mock.Get(configurationAction).Verify(p => p(It.IsAny <TestEndpointBehavior>()), Times.Once);
        }
        public void AddBehavior_returns_same_endpoint(IEndpoint endpoint)
        {
            var result = EndpointExtensions.AddBehavior <TestEndpointBehavior>(endpoint);

            Assert.That(result, Is.SameAs(endpoint));
        }
        public void AddBehavior_creates_new_instance_of_behavior(IEndpoint endpoint)
        {
            var result = EndpointExtensions.AddBehavior <TestEndpointBehavior>(endpoint);

            Assert.That(endpoint.Behaviors, Has.One.InstanceOf <TestEndpointBehavior>());
        }
        public void AddBehavior_adds_behavior_to_endpoint(IEndpoint endpoint, TestEndpointBehavior testBehavior)
        {
            EndpointExtensions.AddBehavior(endpoint, testBehavior);

            Assert.That(endpoint.Behaviors, Has.One.InstanceOf <TestEndpointBehavior>());
        }
 void InitializeEndpointExtensionsDefault()
 {
     EndpointExtensions.Add(new ExtensionElement("mexEndpoint", typeof(ServiceMetadataEndpointCollectionElement).AssemblyQualifiedName));
 }