public void ShouldReturnRequestUri()
 {
     using (WebServer webServer = new WebServer("http://localhost:9998/"))
     {
         webServer.ExecuteRequestAndInvokeAssertions(
             () => SendRequest(RequestUri, null),
             requestWrapper =>
                 {
                     Assert.IsNotNull(requestWrapper);
                     Assert.AreEqual(RequestUri, requestWrapper.Uri.AbsoluteUri);
                 });
     }
 }
 public void IfETagIsEmptyShouldReturnNullCondition()
 {
     using (WebServer webServer = new WebServer("http://localhost:9998/"))
     {
         webServer.ExecuteRequestAndInvokeAssertions(
             () => SendRequest(RequestUri, null),
             requestWrapper =>
                 {
                     Assert.IsNotNull(requestWrapper);
                     Assert.AreEqual(NullCondition.Instance, requestWrapper.Condition);
                 });
     }
 }
        public void IfETagIsNotEmptyShouldReturnIfNoneMatchCondition()
        {
            string eTagValue = "xyz";
            IRepresentation representation = new HeadersOnlyRepresentation(new ETag(eTagValue));

            using (WebServer webServer = new WebServer("http://localhost:9998/"))
            {
                webServer.ExecuteRequestAndInvokeAssertions(
                    () => SendRequest(RequestUri, eTagValue),
                    requestWrapper =>
                        {
                            Assert.IsNotNull(requestWrapper);
                            Assert.IsInstanceOf(typeof (IfNoneMatch), requestWrapper.Condition);

                            Output output = Output.For(requestWrapper.Condition.CreateResponse(representation));

                            Assert.AreEqual(304, output.StatusCode);
                            Assert.AreEqual("Not Modified", output.StatusDescription);
                        });
            }
        }
        private void ExecuteTest(Action<HttpListenerResponseWrapper> generateResponse, Action<HttpWebResponse> assertions)
        {
            using (WebServer webServer = new WebServer("http://localhost:9998/"))
            {
                HttpWebResponse response = webServer.ExecuteRequestAndGenerateResponse(
                    () => SendRequest(RequestUri), generateResponse);

                assertions.Invoke(response);
                response.Close();
            }
        }