mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 19:57:57 +01:00
Add info bar if blocked elements present in Svg (#1620)
* Added logic to check for blocked elements * Added unit tests * Fix warnings from msi solution
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
// 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_ShoudReturnTrue_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_ShoudReturnTrue_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_ShoudReturnTrue_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_ShoudReturnFalse_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_ShoudReturnFalse_IfSvgDataIsNullOrWhiteSpaces(string svgData)
|
||||
{
|
||||
// Arrange
|
||||
bool foundFilteredElement;
|
||||
|
||||
// Act
|
||||
foundFilteredElement = SvgPreviewHandlerHelper.CheckBlockedElements(svgData);
|
||||
|
||||
// Assert
|
||||
Assert.IsFalse(foundFilteredElement);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user