コード例 #1
0
        public static IAppBuilder UseWebApi(this IAppBuilder builder, HttpConfiguration configuration)
        {
            if (builder == null)
            {
                throw new ArgumentNullException("builder");
            }

            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }

            HttpServer server = new HttpServer(configuration);

            try
            {
                HttpMessageHandlerOptions options = CreateOptions(builder, server, configuration);
                return UseMessageHandler(builder, options);
            }
            catch
            {
                server.Dispose();
                throw;
            }
        }
コード例 #2
0
        public void cache_singleton_in_pipeline()
        {
            _cache = new Mock<IApiOutputCache>();

            var conf = new HttpConfiguration();
            conf.CacheOutputConfiguration().RegisterCacheOutputProvider(() => _cache.Object);

            conf.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
                );

            _server = new HttpServer(conf);

            var client = new HttpClient(_server);
            var result = client.GetAsync(_url + "Get_c100_s100").Result;

            _cache.Verify(s => s.Contains(It.Is<string>(x => x == "webapi.outputcache.v2.tests.testcontrollers.samplecontroller-get_c100_s100:application/json; charset=utf-8")), Times.Exactly(2));

            var result2 = client.GetAsync(_url + "Get_c100_s100").Result;
            _cache.Verify(s => s.Contains(It.Is<string>(x => x == "webapi.outputcache.v2.tests.testcontrollers.samplecontroller-get_c100_s100:application/json; charset=utf-8")), Times.Exactly(4));

            _server.Dispose();
        }
コード例 #3
0
 public static void MyClassCleanup()
 {
     if (_server != null)
     {
         _server.Dispose();
     }
 }
コード例 #4
0
        public void Post_NoContent_RequestMethodIsPost()
        {
            var config = new HttpConfiguration { IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always };
            var messageHandler = new CaptureRequestMessageHandler();
            config.MessageHandlers.Add(messageHandler);
            var server = new HttpServer(config);

            server.Post("http://www.sample.com", string.Empty);
            server.Dispose();

            Assert.Equal(HttpMethod.Post, messageHandler.CapturedRequest.Method);
        }
コード例 #5
0
        public async Task DisposedReturnsServiceUnavailable()
        {
            // Arrange
            Mock <HttpMessageHandler> mockHandler = new Mock <HttpMessageHandler>();
            HttpServer         server             = new HttpServer(mockHandler.Object);
            HttpMessageInvoker invoker            = new HttpMessageInvoker(server);

            server.Dispose();
            HttpRequestMessage request = new HttpRequestMessage();

            // Act
            var response = await invoker.SendAsync(request, CancellationToken.None);

            // Assert
            mockHandler.Protected().Verify <Task <HttpResponseMessage> >("SendAsync", Times.Never(), request, CancellationToken.None);
            Assert.Equal(HttpStatusCode.ServiceUnavailable, response.StatusCode);
        }
コード例 #6
0
        public Task <HttpResponseMessage> DisposedReturnsServiceUnavailable()
        {
            // Arrange
            Mock <HttpMessageHandler> mockHandler = new Mock <HttpMessageHandler>();
            HttpServer         server             = new HttpServer(mockHandler.Object);
            HttpMessageInvoker invoker            = new HttpMessageInvoker(server);

            server.Dispose();
            HttpRequestMessage request = new HttpRequestMessage();

            // Act
            return(invoker.SendAsync(request, CancellationToken.None).ContinueWith(
                       (reqTask) =>
            {
                // Assert
                mockHandler.Protected().Verify <Task <HttpResponseMessage> >("SendAsync", Times.Never(), request, CancellationToken.None);
                Assert.Equal(HttpStatusCode.ServiceUnavailable, reqTask.Result.StatusCode);
                return reqTask.Result;
            }
                       ));
        }
コード例 #7
0
        public Task<HttpResponseMessage> DisposedReturnsServiceUnavailable()
        {
            // Arrange
            Mock<HttpControllerDispatcher> dispatcherMock = new Mock<HttpControllerDispatcher>();
            HttpServer server = new HttpServer(dispatcherMock.Object);
            HttpMessageInvoker invoker = new HttpMessageInvoker(server);
            server.Dispose();
            HttpRequestMessage request = new HttpRequestMessage();

            // Act
            return invoker.SendAsync(request, CancellationToken.None).ContinueWith(
                (reqTask) =>
                {
                    // Assert
                    dispatcherMock.Protected().Verify<Task<HttpResponseMessage>>("SendAsync", Times.Never(), request, CancellationToken.None);
                    Assert.Equal(HttpStatusCode.ServiceUnavailable, reqTask.Result.StatusCode);
                    return reqTask.Result;
                }
            );
        }