PowerToys/src/modules/previewpane/UnitTests-SvgPreviewHandler/SvgPreviewHandlerHelperTests.cs

103 lines
3.8 KiB
C#
Raw Normal View History

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