2020-08-18 01:00:56 +08:00
|
|
|
|
// Copyright (c) Microsoft Corporation
|
|
|
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
|
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
using Common.Utilities;
|
|
|
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
|
|
|
|
2020-08-22 08:23:42 +08:00
|
|
|
|
namespace SvgPreviewHandlerUnitTests
|
2020-08-18 01:00:56 +08:00
|
|
|
|
{
|
|
|
|
|
[TestClass]
|
|
|
|
|
public class SvgPreviewHandlerHelperTests
|
|
|
|
|
{
|
|
|
|
|
[TestMethod]
|
2020-08-22 08:23:42 +08:00
|
|
|
|
public void CheckBlockedElementsShouldReturnTrueIfABlockedElementIsPresent()
|
2020-08-18 01:00:56 +08:00
|
|
|
|
{
|
|
|
|
|
// Arrange
|
|
|
|
|
var svgBuilder = new StringBuilder();
|
|
|
|
|
svgBuilder.AppendLine("<svg width =\"200\" height=\"200\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">");
|
|
|
|
|
svgBuilder.AppendLine("\t<script>alert(\"hello\")</script>");
|
|
|
|
|
svgBuilder.AppendLine("</svg>");
|
|
|
|
|
bool foundFilteredElement;
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
foundFilteredElement = SvgPreviewHandlerHelper.CheckBlockedElements(svgBuilder.ToString());
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
Assert.IsTrue(foundFilteredElement);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
2020-08-22 08:23:42 +08:00
|
|
|
|
public void CheckBlockedElementsShouldReturnTrueIfBlockedElementsIsPresentInNestedLevel()
|
2020-08-18 01:00:56 +08:00
|
|
|
|
{
|
|
|
|
|
// Arrange
|
|
|
|
|
var svgBuilder = new StringBuilder();
|
|
|
|
|
svgBuilder.AppendLine("<svg viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">");
|
|
|
|
|
svgBuilder.AppendLine("\t<circle cx=\"50\" cy=\"50\" r=\"50\">");
|
|
|
|
|
svgBuilder.AppendLine("\t\t<script>alert(\"valid-message\")</script>");
|
|
|
|
|
svgBuilder.AppendLine("\t</circle>");
|
|
|
|
|
svgBuilder.AppendLine("</svg>");
|
|
|
|
|
bool foundFilteredElement;
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
foundFilteredElement = SvgPreviewHandlerHelper.CheckBlockedElements(svgBuilder.ToString());
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
Assert.IsTrue(foundFilteredElement);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
2020-08-22 08:23:42 +08:00
|
|
|
|
public void CheckBlockedElementsShouldReturnTrueIfMultipleBlockedElementsArePresent()
|
2020-08-18 01:00:56 +08:00
|
|
|
|
{
|
|
|
|
|
// Arrange
|
|
|
|
|
var svgBuilder = new StringBuilder();
|
|
|
|
|
svgBuilder.AppendLine("<svg width =\"200\" height=\"200\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">");
|
|
|
|
|
svgBuilder.AppendLine("\t<script>alert(\"valid-message\")</script>");
|
|
|
|
|
svgBuilder.AppendLine("\t<image href=\"valid-url\" height=\"200\" width=\"200\"/>");
|
|
|
|
|
svgBuilder.AppendLine("</svg>");
|
|
|
|
|
bool foundFilteredElement;
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
foundFilteredElement = SvgPreviewHandlerHelper.CheckBlockedElements(svgBuilder.ToString());
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
Assert.IsTrue(foundFilteredElement);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
2020-08-22 08:23:42 +08:00
|
|
|
|
public void CheckBlockedElementsShouldReturnFalseIfNoBlockedElementsArePresent()
|
2020-08-18 01:00:56 +08:00
|
|
|
|
{
|
|
|
|
|
// Arrange
|
|
|
|
|
var svgBuilder = new StringBuilder();
|
|
|
|
|
svgBuilder.AppendLine("<svg viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">");
|
|
|
|
|
svgBuilder.AppendLine("\t<circle cx=\"50\" cy=\"50\" r=\"50\">");
|
|
|
|
|
svgBuilder.AppendLine("\t</circle>");
|
|
|
|
|
svgBuilder.AppendLine("</svg>");
|
|
|
|
|
bool foundFilteredElement;
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
foundFilteredElement = SvgPreviewHandlerHelper.CheckBlockedElements(svgBuilder.ToString());
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
Assert.IsFalse(foundFilteredElement);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTestMethod]
|
|
|
|
|
[DataRow("")]
|
|
|
|
|
[DataRow(" ")]
|
|
|
|
|
[DataRow(null)]
|
2020-08-22 08:23:42 +08:00
|
|
|
|
public void CheckBlockedElementsShouldReturnFalseIfSvgDataIsNullOrWhiteSpaces(string svgData)
|
2020-08-18 01:00:56 +08:00
|
|
|
|
{
|
|
|
|
|
// Arrange
|
|
|
|
|
bool foundFilteredElement;
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
foundFilteredElement = SvgPreviewHandlerHelper.CheckBlockedElements(svgData);
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
Assert.IsFalse(foundFilteredElement);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|