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)); }
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)); }
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)); }
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>())); }
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> >()); }
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); }
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)); }
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))); }
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); }
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"))); }