From 19d9dbcd43d4f3c1138aa1a509e9be609faecb2d Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Tue, 25 Jun 2019 18:35:38 +0200 Subject: [PATCH] Removes the logic for sanitizing the base path for static web assets (dotnet/aspnetcore-tooling#700) Removes the logic for sanitizing the base path for static web assets\n\nCommit migrated from https://github.com/dotnet/aspnetcore-tooling/commit/98b168c8947d8c7f7b3f2beb3a0561fb89cadfb5 --- .../src/GetDefaultStaticWebAssetsBasePath.cs | 40 -------- ...soft.NET.Sdk.Razor.StaticWebAssets.targets | 22 +---- .../GetDefaultStaticWebAssetsBasePathTest.cs | 95 ------------------- .../StaticWebAssetsIntegrationTest.cs | 36 +++---- 4 files changed, 19 insertions(+), 174 deletions(-) delete mode 100644 src/Razor/Microsoft.NET.Sdk.Razor/src/GetDefaultStaticWebAssetsBasePath.cs delete mode 100644 src/Razor/Microsoft.NET.Sdk.Razor/test/GetDefaultStaticWebAssetsBasePathTest.cs diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/src/GetDefaultStaticWebAssetsBasePath.cs b/src/Razor/Microsoft.NET.Sdk.Razor/src/GetDefaultStaticWebAssetsBasePath.cs deleted file mode 100644 index f39f1a789e..0000000000 --- a/src/Razor/Microsoft.NET.Sdk.Razor/src/GetDefaultStaticWebAssetsBasePath.cs +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -namespace Microsoft.AspNetCore.Razor.Tasks -{ - public class GetDefaultStaticWebAssetsBasePath : Task - { - [Required] - public string BasePath { get; set; } - - [Output] - public string SafeBasePath { get; set; } - - public override bool Execute() - { - if (string.IsNullOrWhiteSpace(BasePath)) - { - Log.LogError($"Base path '{BasePath ?? "(null)"}' must contain non-whitespace characters."); - return !Log.HasLoggedErrors; - } - - var safeBasePath = BasePath - .Replace(" ", "") - .Replace(".", "") - .ToLowerInvariant(); - - if (safeBasePath == "") - { - Log.LogError($"Base path '{BasePath}' must contain non '.' characters."); - return !Log.HasLoggedErrors; - } - SafeBasePath = safeBasePath; - - return !Log.HasLoggedErrors; - } - } -} \ No newline at end of file diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.StaticWebAssets.targets b/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.StaticWebAssets.targets index d30d7946ec..e6b23f2802 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.StaticWebAssets.targets +++ b/src/Razor/Microsoft.NET.Sdk.Razor/src/build/netstandard2.0/Microsoft.NET.Sdk.Razor.StaticWebAssets.targets @@ -32,11 +32,6 @@ Copyright (c) .NET Foundation. All rights reserved. AssemblyFile="$(RazorSdkBuildTasksAssembly)" Condition="'$(RazorSdkBuildTasksAssembly)' != ''" /> - - - - - - - - _content/$(_StaticWebAssetSafeBasePath) + _content/$(PackageId) diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/test/GetDefaultStaticWebAssetsBasePathTest.cs b/src/Razor/Microsoft.NET.Sdk.Razor/test/GetDefaultStaticWebAssetsBasePathTest.cs deleted file mode 100644 index 9a927fc155..0000000000 --- a/src/Razor/Microsoft.NET.Sdk.Razor/test/GetDefaultStaticWebAssetsBasePathTest.cs +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System.Collections.Generic; -using Microsoft.Build.Framework; -using Moq; -using Xunit; - -namespace Microsoft.AspNetCore.Razor.Tasks -{ - public class GetDefaultStaticWebAssetsBasePathTest - { - [Theory] - [InlineData(null)] - [InlineData("")] - [InlineData(" ")] - [InlineData(" ")] - public void ReturnsError_WhenBasePath_DoesNotContainNonWhitespaceCharacters(string basePath) - { - // Arrange - var expectedError = $"Base path '{basePath ?? "(null)"}' must contain non-whitespace characters."; - - var errorMessages = new List(); - var buildEngine = new Mock(); - buildEngine.Setup(e => e.LogErrorEvent(It.IsAny())) - .Callback(args => errorMessages.Add(args.Message)); - - var task = new GetDefaultStaticWebAssetsBasePath - { - BuildEngine = buildEngine.Object, - BasePath = basePath - }; - - // Act - var result = task.Execute(); - - // Assert - Assert.False(result); - var message = Assert.Single(errorMessages); - Assert.Equal(expectedError, message); - } - - [Theory] - [InlineData(".")] - [InlineData("..")] - [InlineData(". ")] - [InlineData(" .")] - [InlineData(" . ")] - [InlineData(". .")] - public void ReturnsError_WhenSafeBasePath_MapsToTheEmptyString(string basePath) - { - // Arrange - var expectedError = $"Base path '{basePath}' must contain non '.' characters."; - - var errorMessages = new List(); - var buildEngine = new Mock(); - buildEngine.Setup(e => e.LogErrorEvent(It.IsAny())) - .Callback(args => errorMessages.Add(args.Message)); - - var task = new GetDefaultStaticWebAssetsBasePath - { - BuildEngine = buildEngine.Object, - BasePath = basePath - }; - - // Act - var result = task.Execute(); - - // Assert - Assert.False(result); - var message = Assert.Single(errorMessages); - Assert.Equal(expectedError, message); - } - - [Theory] - [InlineData("Identity", "identity")] - [InlineData("Microsoft.AspNetCore.Identity", "microsoftaspnetcoreidentity")] - public void ReturnsSafeBasePath_WhenBasePath_ContainsUnsafeCharacters(string basePath, string expectedSafeBasePath) - { - // Arrange - var task = new GetDefaultStaticWebAssetsBasePath - { - BuildEngine = Mock.Of(), - BasePath = basePath - }; - - // Act - var result = task.Execute(); - - // Assert - Assert.True(result); - Assert.Equal(expectedSafeBasePath, task.SafeBasePath); - } - } -} diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/StaticWebAssetsIntegrationTest.cs b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/StaticWebAssetsIntegrationTest.cs index 4d96d43b55..0e3497a483 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/StaticWebAssetsIntegrationTest.cs +++ b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/StaticWebAssetsIntegrationTest.cs @@ -67,13 +67,13 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests Assert.BuildPassed(result); - Assert.FileExists(result, PublishOutputPath, Path.Combine("wwwroot", "_content", "classlibrary", "js", "project-transitive-dep.js")); - Assert.FileExists(result, PublishOutputPath, Path.Combine("wwwroot", "_content", "classlibrary", "js", "project-transitive-dep.v4.js")); - Assert.FileExists(result, PublishOutputPath, Path.Combine("wwwroot", "_content", "classlibrary2", "css", "site.css")); - Assert.FileExists(result, PublishOutputPath, Path.Combine("wwwroot", "_content", "classlibrary2", "js", "project-direct-dep.js")); - Assert.FileExists(result, PublishOutputPath, Path.Combine("wwwroot", "_content", "packagelibrarydirectdependency", "css", "site.css")); - Assert.FileExists(result, PublishOutputPath, Path.Combine("wwwroot", "_content", "packagelibrarydirectdependency", "js", "pkg-direct-dep.js")); - Assert.FileExists(result, PublishOutputPath, Path.Combine("wwwroot", "_content", "packagelibrarytransitivedependency", "js", "pkg-transitive-dep.js")); + Assert.FileExists(result, PublishOutputPath, Path.Combine("wwwroot", "_content", "ClassLibrary", "js", "project-transitive-dep.js")); + Assert.FileExists(result, PublishOutputPath, Path.Combine("wwwroot", "_content", "ClassLibrary", "js", "project-transitive-dep.v4.js")); + Assert.FileExists(result, PublishOutputPath, Path.Combine("wwwroot", "_content", "ClassLibrary2", "css", "site.css")); + Assert.FileExists(result, PublishOutputPath, Path.Combine("wwwroot", "_content", "ClassLibrary2", "js", "project-direct-dep.js")); + Assert.FileExists(result, PublishOutputPath, Path.Combine("wwwroot", "_content", "PackageLibraryDirectDependency", "css", "site.css")); + Assert.FileExists(result, PublishOutputPath, Path.Combine("wwwroot", "_content", "PackageLibraryDirectDependency", "js", "pkg-direct-dep.js")); + Assert.FileExists(result, PublishOutputPath, Path.Combine("wwwroot", "_content", "PackageLibraryTransitiveDependency", "js", "pkg-transitive-dep.js")); // Validate that static web assets don't get published as content too on their regular path Assert.FileDoesNotExist(result, PublishOutputPath, Path.Combine("wwwroot", "js", "project-transitive-dep.js")); @@ -95,13 +95,13 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests Assert.BuildPassed(publish); - Assert.FileExists(publish, PublishOutputPath, Path.Combine("wwwroot", "_content", "classlibrary", "js", "project-transitive-dep.js")); - Assert.FileExists(publish, PublishOutputPath, Path.Combine("wwwroot", "_content", "classlibrary", "js", "project-transitive-dep.v4.js")); - Assert.FileExists(publish, PublishOutputPath, Path.Combine("wwwroot", "_content", "classlibrary2", "css", "site.css")); - Assert.FileExists(publish, PublishOutputPath, Path.Combine("wwwroot", "_content", "classlibrary2", "js", "project-direct-dep.js")); - Assert.FileExists(publish, PublishOutputPath, Path.Combine("wwwroot", "_content", "packagelibrarydirectdependency", "css", "site.css")); - Assert.FileExists(publish, PublishOutputPath, Path.Combine("wwwroot", "_content", "packagelibrarydirectdependency", "js", "pkg-direct-dep.js")); - Assert.FileExists(publish, PublishOutputPath, Path.Combine("wwwroot", "_content", "packagelibrarytransitivedependency", "js", "pkg-transitive-dep.js")); + Assert.FileExists(publish, PublishOutputPath, Path.Combine("wwwroot", "_content", "ClassLibrary", "js", "project-transitive-dep.js")); + Assert.FileExists(publish, PublishOutputPath, Path.Combine("wwwroot", "_content", "ClassLibrary", "js", "project-transitive-dep.v4.js")); + Assert.FileExists(publish, PublishOutputPath, Path.Combine("wwwroot", "_content", "ClassLibrary2", "css", "site.css")); + Assert.FileExists(publish, PublishOutputPath, Path.Combine("wwwroot", "_content", "ClassLibrary2", "js", "project-direct-dep.js")); + Assert.FileExists(publish, PublishOutputPath, Path.Combine("wwwroot", "_content", "PackageLibraryDirectDependency", "css", "site.css")); + Assert.FileExists(publish, PublishOutputPath, Path.Combine("wwwroot", "_content", "PackageLibraryDirectDependency", "js", "pkg-direct-dep.js")); + Assert.FileExists(publish, PublishOutputPath, Path.Combine("wwwroot", "_content", "PackageLibraryTransitiveDependency", "js", "pkg-transitive-dep.js")); } @@ -255,10 +255,10 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests }; return $@" - - - - + + + + "; } }