public void ShouldChangeSelectedCookiesOnRedirect_Issue548()
        {
            var requester            = new MockRequester();
            var mcp                  = new MemoryCookieProvider();
            var config               = Configuration.Default.With(mcp).With(requester).WithDefaultLoader();
            var context              = BrowsingContext.New(config);
            var receivedCookieHeader = "THECOOKIE=value1";
            var url                  = new Url("http://example.com/path1");

            //request 1: /path1, set a cookie THECOOKIE=value1
            requester.BuildResponse(req => VirtualResponse.Create(r => r
                                                                  .Address("http://example.com/path1")
                                                                  .Content("")
                                                                  .Header(HeaderNames.SetCookie, receivedCookieHeader)));
            context.OpenAsync("http://example.com/path1");
            //request 2: /path1/somefile.jsp redirects to /path2/file2.jsp
            requester.BuildResponses(new Func <Request, IResponse>[] {
                req => VirtualResponse.Create(r => r
                                              .Address("http://example.com/path1/somefile.jsp")
                                              .Content("")
                                              .Status(System.Net.HttpStatusCode.Redirect)
                                              .Header(HeaderNames.Location, "http://example.com/path2/file2.jsp")),
                req => {
                    receivedCookieHeader = req.Headers.GetOrDefault(HeaderNames.Cookie, String.Empty);
                    return(VirtualResponse.Create(r => r
                                                  .Address("http://example.com/path2/file2.jsp")
                                                  .Content("")));
                }
            });
            context.OpenAsync("http://example.com/path1/somefile.jsp");
            Assert.AreEqual(String.Empty, receivedCookieHeader);
        }
Exemple #2
0
        public async Task ImportPageWithIndirectCycle()
        {
            var content = "<!doctype html><link rel=import href=http://example.com/test.html>";
            var nested  = new Queue <String>(new []
            {
                "<!doctype html><link rel=import href=http://example.com/foo.html>",
                "<!doctype html><link rel=import href=http://example.com/bar.html>",
                "<!doctype html><link rel=import href=http://example.com/test.html>",
                "<!doctype html><link rel=import href=http://example.com/foo.html>"
            });
            var requester    = new MockRequester();
            var requestCount = 0;

            requester.OnRequest = request => requestCount++;
            requester.BuildResponse(request => nested.Dequeue());
            var config = Configuration.Default.With(requester).WithDefaultLoader(new LoaderOptions {
                IsResourceLoadingEnabled = true
            });
            var document = await BrowsingContext.New(config).OpenAsync(m => m.Content(content));

            var link = document.QuerySelector <IHtmlLinkElement>("link");

            Assert.AreEqual("import", link.Relation);
            Assert.IsNotNull(link.Import);
            Assert.AreEqual(3, requestCount);
        }
Exemple #3
0
        private static Task <IDocument> LoadDocumentWithFakeRequesterAndCookie(IResponse initialResponse, Func <IRequest, IResponse> onRequest)
        {
            var requester = new MockRequester();

            requester.BuildResponse(onRequest);
            var config = Configuration.Default.WithDefaultLoader(setup => setup.IsResourceLoadingEnabled = true, new[] { requester }).WithCookies();

            return(BrowsingContext.New(config).OpenAsync(initialResponse, System.Threading.CancellationToken.None));
        }
        private static Task <IDocument> LoadDocumentWithFakeRequesterAndCookie(IResponse initialResponse,
                                                                               Func <Request, IResponse> onRequest)
        {
            var requester = new MockRequester();

            requester.BuildResponse(onRequest);
            var config = Configuration.Default.With(requester)
                         .WithDefaultLoader(new LoaderOptions {
                IsResourceLoadingEnabled = true
            }).WithDefaultCookies();

            return(BrowsingContext.New(config).OpenAsync(initialResponse, CancellationToken.None));
        }
        private static Task <IDocument> CreateDocumentWithOptions(String source)
        {
            var mockRequester = new MockRequester();

            mockRequester.BuildResponse(request =>
            {
                if (request.Address.Path.EndsWith("a.css"))
                {
                    return("div#A   { color: blue;	}");
                }
                else if (request.Address.Path.EndsWith("b.css"))
                {
                    return("div#B   { color: red;   }");
                }

                return(null);
            });
            var config  = Configuration.Default.WithCss().WithMockRequester(mockRequester);
            var context = BrowsingContext.New(config);

            return(context.OpenAsync(m => m.Content(source)));
        }
Exemple #6
0
 private static Task<IDocument> LoadDocumentWithFakeRequesterAndCookie(IResponse initialResponse, Func<IRequest, IResponse> onRequest)
 {
     var requester = new MockRequester();
     requester.BuildResponse(onRequest);
     var config = Configuration.Default.WithDefaultLoader(setup => setup.IsResourceLoadingEnabled = true, new[] { requester }).WithCookies();
     return BrowsingContext.New(config).OpenAsync(initialResponse, System.Threading.CancellationToken.None);
 }