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

103 lines
4.0 KiB
C#
Raw Normal View History

// 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 Microsoft.VisualStudio.TestTools.UnitTesting;
using SvgPreviewHandler.Utilities;
using System.Text;
namespace UnitTests_SvgPreviewHandler
{
[TestClass]
public class SvgPreviewHandlerHelperTests
{
[TestMethod]
public void CheckBlockedElements_ShouldReturnTrue_IfABlockedElementIsPresent()
{
// 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]
public void CheckBlockedElements_ShouldReturnTrue_IfBlockedElementsIsPresentInNestedLevel()
{
// 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]
public void CheckBlockedElements_ShouldReturnTrue_IfMultipleBlockedElementsArePresent()
{
// 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]
public void CheckBlockedElements_ShouldReturnFalse_IfNoBlockedElementsArePresent()
{
// 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)]
public void CheckBlockedElements_ShouldReturnFalse_IfSvgDataIsNullOrWhiteSpaces(string svgData)
{
// Arrange
bool foundFilteredElement;
// Act
foundFilteredElement = SvgPreviewHandlerHelper.CheckBlockedElements(svgData);
// Assert
Assert.IsFalse(foundFilteredElement);
}
}
}