private static void AddCorsMessageHandler(this HttpConfiguration httpConfiguration) { object corsEnabled; if (!httpConfiguration.Properties.TryGetValue(CorsEnabledKey, out corsEnabled)) { Action <HttpConfiguration> defaultInitializer = httpConfiguration.Initializer; httpConfiguration.Initializer = config => { if (!config.Properties.TryGetValue(CorsEnabledKey, out corsEnabled)) { // Execute this in the Initializer to ensure that the CorsMessageHandler is added last. config.MessageHandlers.Add(new CorsMessageHandler(config)); ITraceWriter traceWriter = config.Services.GetTraceWriter(); if (traceWriter != null) { ICorsPolicyProviderFactory factory = config.GetCorsPolicyProviderFactory(); config.SetCorsPolicyProviderFactory(new CorsPolicyProviderFactoryTracer(factory, traceWriter)); ICorsEngine corsEngine = config.GetCorsEngine(); config.SetCorsEngine(new CorsEngineTracer(corsEngine, traceWriter)); } config.Properties[CorsEnabledKey] = true; } defaultInitializer(config); }; } }
public CorsPolicyProviderFactoryTracer(ICorsPolicyProviderFactory innerPolicyProviderFactory, ITraceWriter traceWriter) { Contract.Assert(innerPolicyProviderFactory != null); Contract.Assert(traceWriter != null); _innerPolicyProviderFactory = innerPolicyProviderFactory; _traceWriter = traceWriter; }
public void GetCorsPolicyProviderFactory_ReturnsDefaultCorsPolicyProviderFactory() { HttpConfiguration config = new HttpConfiguration(); ICorsPolicyProviderFactory providerFactory = config.GetCorsPolicyProviderFactory(); Assert.NotNull(providerFactory); Assert.IsType(typeof(AttributeBasedPolicyProviderFactory), providerFactory); }
public void GetCorsPolicyProviderFactory_ReturnsTheCustomCorsPolicyProviderFactory() { ICorsPolicyProviderFactory mockFactory = new Mock <ICorsPolicyProviderFactory>().Object; HttpConfiguration config = new HttpConfiguration(); config.SetCorsPolicyProviderFactory(mockFactory); ICorsPolicyProviderFactory providerFactory = config.GetCorsPolicyProviderFactory(); Assert.Same(mockFactory, providerFactory); }
private async Task <CorsPolicy> GetCorsPolicyAsync(HttpRequestMessage request, CancellationToken cancellationToken) { CorsPolicy corsPolicy = null; ICorsPolicyProviderFactory corsPolicyProviderFactory = _httpConfiguration.GetCorsPolicyProviderFactory(); ICorsPolicyProvider corsPolicyProvider = corsPolicyProviderFactory.GetCorsPolicyProvider(request); if (corsPolicyProvider != null) { corsPolicy = await corsPolicyProvider.GetCorsPolicyAsync(request, cancellationToken); } return(corsPolicy); }
public void EnableCors_AddsCorsPolicyProvider() { HttpConfiguration config = new HttpConfiguration(); config.MessageHandlers.Clear(); EnableCorsAttribute policyProvider = new EnableCorsAttribute(); config.EnableCors(policyProvider); config.Initializer(config); ICorsPolicyProviderFactory providerFactory = config.GetCorsPolicyProviderFactory(); AttributeBasedPolicyProviderFactory attributeProviderFactory = Assert.IsType <AttributeBasedPolicyProviderFactory>(providerFactory); Assert.Same(policyProvider, attributeProviderFactory.DefaultPolicyProvider); }
/// <summary> /// Sets the <see cref="ICorsPolicyProviderFactory"/> on the <see cref="HttpConfiguration"/>. /// </summary> /// <param name="httpConfiguration">The <see cref="HttpConfiguration"/>.</param> /// <param name="corsPolicyProviderFactory">The <see cref="ICorsPolicyProviderFactory"/>.</param> /// <exception cref="System.ArgumentNullException"> /// httpConfiguration /// or /// corsPolicyProviderFactory /// </exception> public static void SetCorsPolicyProviderFactory( this HttpConfiguration httpConfiguration, ICorsPolicyProviderFactory corsPolicyProviderFactory ) { if (httpConfiguration == null) { throw new ArgumentNullException("httpConfiguration"); } if (corsPolicyProviderFactory == null) { throw new ArgumentNullException("corsPolicyProviderFactory"); } httpConfiguration.Properties[CorsPolicyProviderFactoryKey] = corsPolicyProviderFactory; }
public void EnableCors_AddsTracers_WhenTracingIsEnabled() { HttpConfiguration config = new HttpConfiguration(); ITraceWriter traceMock = new Mock <ITraceWriter>().Object; config.Services.Replace(typeof(ITraceWriter), traceMock); config.MessageHandlers.Clear(); EnableCorsAttribute policyProvider = new EnableCorsAttribute(); config.EnableCors(policyProvider); config.Initializer(config); ICorsPolicyProviderFactory providerFactory = config.GetCorsPolicyProviderFactory(); Assert.IsType(typeof(CorsPolicyProviderFactoryTracer), providerFactory); }
/// <summary> /// Sets the <see cref="ICorsPolicyProviderFactory"/> on the <see cref="HttpConfiguration"/>. /// </summary> /// <param name="httpConfiguration">The <see cref="HttpConfiguration"/>.</param> /// <param name="corsPolicyProviderFactory">The <see cref="ICorsPolicyProviderFactory"/>.</param> /// <exception cref="System.ArgumentNullException"> /// httpConfiguration /// or /// corsPolicyProviderFactory /// </exception> public static void SetCorsPolicyProviderFactory(this HttpConfiguration httpConfiguration, ICorsPolicyProviderFactory corsPolicyProviderFactory) { if (httpConfiguration == null) { throw new ArgumentNullException("httpConfiguration"); } if (corsPolicyProviderFactory == null) { throw new ArgumentNullException("corsPolicyProviderFactory"); } httpConfiguration.Properties[CorsPolicyProviderFactoryKey] = corsPolicyProviderFactory; }