public void AddEndpoint_registers_endpoint_for_given_binding(WcfServiceHostConfiguration <TestService> sut, GenericEndpointAddress endpointAddress, ServiceHost host)
        {
            sut.AddEndpoint <TestHttpBinding>(typeof(ITestService), endpointAddress);

            sut.ConfigureServiceHost(host);

            Assert.That(host.Description.Endpoints, Has.Exactly(1).InstanceOf <ServiceEndpoint>());
        }
        public void AddEndpoint_uses_binding_configuration_when_given(WcfServiceHostConfiguration <TestService> sut, GenericEndpointAddress endpointAddress, Action <TestHttpBinding> bindingConfiguration, ServiceHost host)
        {
            sut.AddEndpoint <TestHttpBinding>(typeof(ITestService), endpointAddress, bindingConfiguration);

            sut.ConfigureServiceHost(host);

            Mock.Get(bindingConfiguration).Verify(p => p(It.IsAny <TestHttpBinding>()), Times.Once);
        }
        public void ConfigureServiceHost_executes_given_actions(WcfServiceHostConfiguration <TestService> sut, ServiceHost host, Action <ServiceHost> additionalSetup)
        {
            sut.ServiceHostConfigurations.Add(additionalSetup);

            sut.ConfigureServiceHost(host);

            Mock.Get(additionalSetup).Verify(p => p(host), Times.Once);
        }
        public void ConfigureServiceHost_adds_custom_endpoint_behaviors(WcfServiceHostConfiguration <TestService> sut, ServiceHost host, GenericEndpointAddress endpointAddress, IEndpointBehavior endpointBehavior)
        {
            sut.AddEndpoint <TestHttpBinding>(typeof(ITestService), endpointAddress).Behaviors.Add(endpointBehavior);

            sut.ConfigureServiceHost(host);

            Assert.That(host.Description.Endpoints[0].Behaviors, Contains.Item(endpointBehavior));
        }
Пример #5
0
        public void AcceptAllIncomingRequests_sets_filterMode_to_Any(WcfServiceHostConfiguration <TestService> configurator, ServiceHost serviceHost)
        {
            configurator.AcceptAllIncomingRequests();

            configurator.ConfigureServiceHost(serviceHost);

            Assert.That(serviceHost.Description.Behaviors.Find <ServiceBehaviorAttribute>().AddressFilterMode, Is.EqualTo(AddressFilterMode.Any));
        }
Пример #6
0
        public void ConfigureService_alters_ServiceBehaviorAttribute(WcfServiceHostConfiguration <TestService> configurator, ServiceHost serviceHost, AddressFilterMode filterMode)
        {
            configurator.ConfigureService(service => service.AddressFilterMode = filterMode);

            configurator.ConfigureServiceHost(serviceHost);

            Assert.That(serviceHost.Description.Behaviors.Find <ServiceBehaviorAttribute>().AddressFilterMode, Is.EqualTo(filterMode));
        }
Пример #7
0
        public void ConfigureService_alters_ServiceBehaviorAttribute(WcfServiceHostConfiguration <TestService> configurator, Action <ServiceBehaviorAttribute> testDelegate, ServiceHost serviceHost)
        {
            configurator.ConfigureService(testDelegate);

            configurator.ConfigureServiceHost(serviceHost);

            Mock.Get(testDelegate).Verify(p => p(serviceHost.Description.Behaviors.Find <ServiceBehaviorAttribute>()));
        }
Пример #8
0
        public void AddMetadataEndpoints_adds_service_host_configuration(WcfServiceHostConfiguration <TestService> configurator, Action <ServiceMetadataBehavior> serviceMetadataBehaviorConfigurator)
        {
            Assume.That(configurator.ServiceHostConfigurations, Is.Empty);

            ServiceHostConfiguratorExtensions.AddMetadataEndpoints(configurator, serviceMetadataBehaviorConfigurator);

            Assert.That(configurator.ServiceHostConfigurations, Has.One.InstanceOf <Action <ServiceHost> >());
        }
Пример #9
0
        public void AddExecutionLogging_adds_behavior_to_host(WcfServiceHostConfiguration <TestService> configurator, ServiceHost host)
        {
            ServiceHostConfiguratorExtensions.AddExecutionLogging(configurator);

            var configuration = configurator.ServiceHostConfigurations.First();

            configuration(host);

            Assert.That(host.Description.Behaviors.Find <ExecutionLoggingBehavior>(), Is.Not.Null);
        }
Пример #10
0
        public void AddMetadataEndpoints_throws_if_not_supported_endpoint_is_added(WcfServiceHostConfiguration <TestService> configurator, ServiceHost host)
        {
            configurator.ConfigureServiceHost(host);

            ServiceHostConfiguratorExtensions.AddMetadataEndpoints(configurator);

            var configuration = configurator.ServiceHostConfigurations.First();

            Assert.Throws <InvalidOperationException>(() => configuration(host));
        }
Пример #11
0
        public static IServiceCollection AddWcfService <TService>(this IServiceCollection services, WcfServiceConfigurator <TService> configurator, ServiceLifetime serviceLifetime = ServiceLifetime.Singleton) where TService : class
        {
            if (services.Any(sd => sd.ImplementationType == typeof(TService)))
            {
                throw new ArgumentException($"The service {typeof(TService).Name} is already registered");
            }

            services.AddSingleton <IServiceHostConfiguration <TService> >(sp =>
            {
                var loggerFactory = sp.GetRequiredService <ILoggerFactory>();

                var configuration = new WcfServiceHostConfiguration <TService>(loggerFactory);

                configurator?.Invoke(configuration);

                return(configuration);
            });

            services.TryAddSingleton <IServiceHostBuilder, ServiceHostBuilder>();

            services.AddSingleton <WcfServiceHostedServiceConfiguration <TService> >();

            services.AddSingleton <IHostedService, WcfServiceHostedService <TService> >(sp =>
            {
                var options = sp.GetRequiredService <WcfServiceHostedServiceConfiguration <TService> >();

                var logger = sp.GetRequiredService <ILogger <WcfServiceHostedService> >();

                var announceService = sp.GetRequiredService <IAnnouncementService>();

                return(new WcfServiceHostedService <TService>(options, announceService, logger));
            });

            services.TryAddSingleton <IAnnouncementService, EmptyAnnouncementService>();

            services.Add(ServiceDescriptor.Describe(typeof(TService), typeof(TService), serviceLifetime));

            return(services);
        }
        public void AddEndpoint_throws_if_binding_and_address_schema_dont_match(WcfServiceHostConfiguration <TestService> sut, Uri endpointAddress)
        {
            Assume.That(endpointAddress.Scheme, Is.Not.Empty);

            Assert.Throws <ArgumentException>(() => sut.AddEndpoint <TestBinding>(typeof(ITestService), endpointAddress));
        }
 public void AddEndpoint_throws_if_service_does_not_implement_contract(WcfServiceHostConfiguration <TestService> sut, Uri endpointAddress)
 {
     Assert.Throws <ArgumentException>(() => sut.AddEndpoint <TestHttpBinding>(typeof(IInvalidTestService), endpointAddress));
 }
 public void ServiceType_reflects_the_generic_parameter(WcfServiceHostConfiguration <TestService> sut)
 {
     Assert.That(sut.ServiceType, Is.EqualTo(typeof(TestService)));
 }
Пример #15
0
        public void AddMetadataEndpoints_adds_ServiceMetadataBehavior_to_host_with_BasicHttp_binding(WcfServiceHostConfiguration <TestService> configurator, ServiceHost host)
        {
            configurator.AddEndpoint <BasicHttpBinding>(typeof(ITestService), new Uri("http://localhost/test"));

            configurator.ConfigureServiceHost(host);

            ServiceHostConfiguratorExtensions.AddMetadataEndpoints(configurator);

            var configuration = configurator.ServiceHostConfigurations.First();

            configuration(host);

            Assert.That(host.Description.Behaviors.Find <ServiceMetadataBehavior>(), Is.Not.Null);
        }
Пример #16
0
        public void AddMetadataEndpoints_adds_metadata_endpoint_to_host_with_NetTcp_binding(WcfServiceHostConfiguration <TestService> configurator, ServiceHost host)
        {
            configurator.AddEndpoint <NetTcpBinding>(typeof(ITestService), new Uri("net.tcp://localhost/test"));

            configurator.ConfigureServiceHost(host);

            ServiceHostConfiguratorExtensions.AddMetadataEndpoints(configurator);

            var configuration = configurator.ServiceHostConfigurations.First();

            configuration(host);

            Assert.That(host.Description.Endpoints.Any(endpoint => endpoint.Address.Uri.AbsolutePath.EndsWith("mex")));
        }