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); }
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); }
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]); } }
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]); } }
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]); } }
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]]); } } }