示例#1
0
        public void ReadAttributesCorrectlyInAttributeMadness()
        {
            var content = Helper.StreamFromBytes(Assets.IrishCentral);
            var expected = new[]
            {
                "src",
                "alt",
                "hilde",
                "michnia",
                "is",
                "under",
                "investigation",
                "as",
                "a",
                "former",
                "concentration",
                "camp",
                "guard",
                "after",
                "holocaust",
                "documentary.\\\"",
                "class",
                "style"
            };
            var document = content.ToHtmlDocument();
            var img = document.QuerySelector("img.img-responsive");
            Assert.IsNotNull(img);
            var attributes = img.Attributes.ToArray();
            Assert.AreEqual(18, attributes.Length);

            for (int i = 0; i < attributes.Length; i++)
                Assert.AreEqual(expected[i], attributes[i].Name);
        }
示例#2
0
 public void AppendMultipleNodesToParentNode()
 {
     var document = Html("");
     var children = new[]
     {
         document.CreateElement("span"),
         document.CreateElement("em")
     };
     Assert.AreEqual(2, children.Length);
     document.Body.Append(children);
     Assert.AreEqual(2, document.Body.ChildNodes.Length);
     var span = document.Body.ChildNodes[0];
     var em = document.Body.ChildNodes[1];
     Assert.AreEqual("span", span.GetTagName());
     Assert.AreEqual(0, span.ChildNodes.Length);
     Assert.AreEqual("em", em.GetTagName());
     Assert.AreEqual(0, em.ChildNodes.Length);
 }
示例#3
0
        public async Task PostFormWithFileFieldWithoutNameShouldNotSendAnything()
        {
            if (Helper.IsNetworkAvailable())
            {
                var content = Encoding.UTF8.GetBytes("test");
                var result = await PostDocumentAsync((document, form) =>
                {
                    var input = form.AppendElement(document.CreateElement<IHtmlInputElement>());
                    form.Enctype = MimeTypes.MultipartForm;
                    input.Type = "file";
                    input.Files.Add(new FileEntry("test.txt", new MemoryStream(content)));
                });
                var rows = result.QuerySelectorAll("tr");
                var raw = result.QuerySelector("#input").TextContent;

                Assert.AreEqual(0, rows.Length);

                var lines = raw.Split('\n');

                Assert.AreEqual(3, lines.Length);

                var emptyLines = new[] { 0, 2 };

                foreach (var emptyLine in emptyLines)
                    Assert.AreEqual(String.Empty, lines[emptyLine]);
            }
        }
示例#4
0
        public async Task PostFormWithSimpleFileShouldSendFileContent()
        {
            if (Helper.IsNetworkAvailable())
            {
                var content = Encoding.UTF8.GetBytes("test");
                var result = await PostDocumentAsync((document, form) =>
                {
                    var input = form.AppendElement(document.CreateElement<IHtmlInputElement>());
                    form.Enctype = MimeTypes.MultipartForm;
                    input.Name = "image";
                    input.Type = "file";
                    input.Files.Add(new FileEntry("test.txt", new MemoryStream(content)));
                });
                var rows = result.QuerySelectorAll("tr");
                var raw = result.QuerySelector("#input").TextContent;

                Assert.AreEqual(0, rows.Length);

                var lines = raw.Split('\n');

                Assert.AreEqual(8, lines.Length);

                var emptyLines = new[] { 0, 4, 7 };

                foreach (var emptyLine in emptyLines)
                    Assert.AreEqual(String.Empty, lines[emptyLine]);

                Assert.AreEqual(lines[1] + "--", lines[lines.Length - 2]);
                Assert.AreEqual("Content-Disposition: form-data; name=\"image\"; filename=\"test.txt\"", lines[2]);
                Assert.AreEqual("Content-Type: text/plain", lines[3]);
                Assert.AreEqual("test", lines[5]);
            }
        }
示例#5
0
        public async Task PostFormWithNoFileShouldSendInputEmptyFileName()
        {
            if (Helper.IsNetworkAvailable())
            {
                var source = @"<input type=file name=image>";
                var result = await PostDocumentAsync(source, encType: MimeTypes.MultipartForm);
                var rows = result.QuerySelectorAll("tr");
                var raw = result.QuerySelector("#input").TextContent;

                Assert.AreEqual(0, rows.Length);

                var lines = raw.Split('\n');

                Assert.AreEqual(8, lines.Length);

                var emptyLines = new[] { 0, 4, 5, 7 };

                foreach (var emptyLine in emptyLines)
                    Assert.AreEqual(String.Empty, lines[emptyLine]);

                Assert.AreEqual(lines[1] + "--", lines[lines.Length - 2]);
                Assert.AreEqual("Content-Disposition: form-data; name=\"image\"; filename=\"\"", lines[2]);
                Assert.AreEqual("Content-Type: application/octet-stream", lines[3]);
            }
        }
示例#6
0
        public async Task PostMulipartFormdataShouldEchoAllValuesCorrectly()
        {
            if (Helper.IsNetworkAvailable())
            {
                var fields = new Dictionary<String, String>
                {
                    { "myname", "foo" },
                    { "bar", "this is some longer text" },
                    { "yeti", "0" },
                };
                var result = await PostDocumentAsync(fields, MimeTypes.MultipartForm);
                var rows = result.QuerySelectorAll("tr");
                var raw = result.QuerySelector("#input").TextContent;

                Assert.AreEqual(3, rows.Length);

                Assert.AreEqual("myname", rows[0].QuerySelector("th").TextContent);
                Assert.AreEqual(fields["myname"], rows[0].QuerySelector("td").TextContent);

                Assert.AreEqual("bar", rows[1].QuerySelector("th").TextContent);
                Assert.AreEqual(fields["bar"], rows[1].QuerySelector("td").TextContent);

                Assert.AreEqual("yeti", rows[2].QuerySelector("th").TextContent);
                Assert.AreEqual(fields["yeti"], rows[2].QuerySelector("td").TextContent);

                var lines = raw.Split('\n');

                Assert.AreEqual(15, lines.Length);

                var emptyLines = new[] { 0, 3, 7, 11, 14 };
                var sameLines = new[] { 1, 5, 9 };
                var nameLines = new[] { 2, 6, 10 };
                var valueLines = new[] { 4, 8, 12 };

                foreach (var emptyLine in emptyLines)
                    Assert.AreEqual(String.Empty, lines[emptyLine]);

                for (int i = 1; i < sameLines.Length; i++)
                    Assert.AreEqual(lines[sameLines[0]], lines[sameLines[i]]);

                Assert.AreEqual(lines[sameLines[0]] + "--", lines[lines.Length - 2]);

                for (int i = 0; i < nameLines.Length; i++)
                {
                    var field = fields.Skip(i).First();
                    Assert.AreEqual("Content-Disposition: form-data; name=\"" + field.Key + "\"", lines[nameLines[i]]);
                    Assert.AreEqual(field.Value, lines[valueLines[i]]);
                }
            }
        }