public async Task Controller_ScopedTest()
        {
            using (var config = new HttpConfiguration())
            {
                var container = new StashboxContainer();
                config.MapHttpAttributeRoutes();
                config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

                container.RegisterScoped <Test3>();
                container.AddWebApi(config);

                using (var server = new HttpServer(config))
                    using (var client = new HttpClient(server))
                    {
                        using (var response = await client.GetAsync("http://fakeurl/api/test2/value"))
                        {
                            response.EnsureSuccessStatusCode();
                            Assert.AreEqual("\"1test1test1\"", await response.Content.ReadAsStringAsync());
                        }

                        using (var response = await client.GetAsync("http://fakeurl/api/test2/value"))
                        {
                            response.EnsureSuccessStatusCode();
                            Assert.AreEqual("\"2test2test2\"", await response.Content.ReadAsStringAsync());
                        }
                    }
            }
        }
        public async Task Controller_ValidationTest()
        {
            using (var config = new HttpConfiguration())
            {
                var container = new StashboxContainer();
                config.MapHttpAttributeRoutes();
                config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

                container.Register <Test>().Register <Test2>();
                container.AddWebApi(config);

                using (var server = new HttpServer(config))
                    using (var client = new HttpClient(server))
                    {
                        var content = new ObjectContent <TestRequest>(new TestRequest {
                            Sample = "test"
                        },
                                                                      new JsonMediaTypeFormatter());
                        using (var response = await client.PostAsync("http://fakeurl/api/test/value", content))
                            response.EnsureSuccessStatusCode();
                    }
            }
        }
        public async Task Controller_ActionFilterTest()
        {
            using (var config = new HttpConfiguration())
            {
                var container = new StashboxContainer();
                config.MapHttpAttributeRoutes();
                config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

                container.Register <Test>().Register <Test2>();
                container.AddWebApi(config);

                using (var server = new HttpServer(config))
                    using (var client = new HttpClient(server))
                    {
                        using (var response = await client.GetAsync("http://fakeurl/api/test/value"))
                        {
                            response.EnsureSuccessStatusCode();
                            Assert.IsTrue(response.Headers.Contains("test"));
                            Assert.AreEqual("test", response.Headers.GetValues("test").First());
                            Assert.AreEqual("\"test2\"", await response.Content.ReadAsStringAsync());
                        }
                    }
            }
        }