From fd023a66988bee9d90b7ceee10641145200285c2 Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Fri, 19 Jul 2019 15:38:28 +0000 Subject: [PATCH 1/9] Merged PR 2157: Bump version of Microsoft.Data.OData to 5.8.4 Bump version of Microsoft.Data.OData to 5.8.4 Work item: https://dev.azure.com/dnceng/internal/_workitems/edit/222/ --- build/dependencies.props | 2 ++ build/external-dependencies.props | 3 +++ eng/Dependencies.props | 2 ++ eng/PatchConfig.props | 1 + .../Microsoft.AspNetCore.DataProtection.AzureStorage.csproj | 4 +++- ...rosoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj | 3 +++ 6 files changed, 14 insertions(+), 1 deletion(-) diff --git a/build/dependencies.props b/build/dependencies.props index 0b1adf4cf1..a9edc6f2b9 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -123,6 +123,8 @@ 2.8.0 2.8.0 4.5.0 + 5.8.4 + 5.8.4 1.7.0 0.2.0-beta-63019-01 1.0.0-rc3-003121 diff --git a/build/external-dependencies.props b/build/external-dependencies.props index f3bf216028..7e80a4cef6 100644 --- a/build/external-dependencies.props +++ b/build/external-dependencies.props @@ -93,6 +93,9 @@ + + + diff --git a/eng/Dependencies.props b/eng/Dependencies.props index 2f7b478d68..ed562c8690 100644 --- a/eng/Dependencies.props +++ b/eng/Dependencies.props @@ -100,6 +100,8 @@ and are generated based on the last package release. + + diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props index 0965ea09da..8fa9474235 100644 --- a/eng/PatchConfig.props +++ b/eng/PatchConfig.props @@ -42,6 +42,7 @@ Later on, this will be checked using this condition: + Microsoft.AspNetCore.DataProtection.AzureStorage; diff --git a/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj b/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj index d65f55a425..2e0d4c5dc4 100644 --- a/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj +++ b/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj @@ -1,16 +1,18 @@  - Microsoft Azure Blob storrage support as key store. + Microsoft Azure Blob storage support as key store. netstandard2.0 true true aspnetcore;dataprotection;azure;blob + true + diff --git a/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj b/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj index c01bea99ff..d36ba9fbbe 100644 --- a/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj +++ b/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj @@ -3,12 +3,15 @@ netcoreapp2.1;net461 true + true + + From dd212d7029defa696dd0d58ec997178e79a4b255 Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Fri, 19 Jul 2019 15:38:34 +0000 Subject: [PATCH 2/9] Merged PR 2184: rel/2.2 Bump version of Microsoft.Data.OData to 5.8.4 Bump version of Microsoft.Data.OData to 5.8.4 in the 2.2 branch Work item: https://dev.azure.com/dnceng/internal/_workitems/edit/222/ Related work items: #222 --- build/dependencies.props | 2 ++ build/external-dependencies.props | 2 ++ eng/Dependencies.props | 2 ++ .../Microsoft.AspNetCore.DataProtection.AzureStorage.csproj | 4 +++- ...rosoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj | 2 ++ 5 files changed, 11 insertions(+), 1 deletion(-) diff --git a/build/dependencies.props b/build/dependencies.props index 574bb8be33..abcfc1eac6 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -146,6 +146,8 @@ 2.8.0 2.8.0 4.5.0 + 5.8.4 + 5.8.4 1.7.0 0.2.0-beta-63019-01 1.0.0-rc3-003121 diff --git a/build/external-dependencies.props b/build/external-dependencies.props index 37b2379b42..d3398e91c4 100644 --- a/build/external-dependencies.props +++ b/build/external-dependencies.props @@ -96,6 +96,8 @@ + + diff --git a/eng/Dependencies.props b/eng/Dependencies.props index 2c0d8499f4..9ed0885937 100644 --- a/eng/Dependencies.props +++ b/eng/Dependencies.props @@ -110,6 +110,8 @@ and are generated based on the last package release. + + diff --git a/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj b/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj index d65f55a425..2e0d4c5dc4 100644 --- a/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj +++ b/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj @@ -1,16 +1,18 @@  - Microsoft Azure Blob storrage support as key store. + Microsoft Azure Blob storage support as key store. netstandard2.0 true true aspnetcore;dataprotection;azure;blob + true + diff --git a/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj b/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj index b6926a12d2..01ac9713de 100644 --- a/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj +++ b/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj @@ -9,6 +9,8 @@ + + From 124b96b09d122c4c41bc60d291d6146618a6bafc Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Thu, 8 Aug 2019 15:29:45 +0000 Subject: [PATCH 3/9] Merged PR 2564: Update PatchConfig.props for 2.2.7 Update PatchConfig.props for 2.2.7 Note: It's very easy to forget this. I think we should implement an automated check. --- eng/PatchConfig.props | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props index 196624c7d6..1f005216dc 100644 --- a/eng/PatchConfig.props +++ b/eng/PatchConfig.props @@ -75,6 +75,7 @@ Later on, this will be checked using this condition: + Microsoft.AspNetCore.DataProtection.AzureStorage; From d49d7d7e0a26340fb3f6ff099c974df349bce325 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Thu, 8 Aug 2019 22:24:48 +0000 Subject: [PATCH 4/9] Merged PR 2262: Fix encoding used in JS generated by prerenderer Fix encoding used in JS generated by prerenderer --- .../src/Prerendering/RenderToStringResult.cs | 13 ++-- ...rosoft.AspNetCore.SpaServices.Tests.csproj | 11 +++ .../RenderToStringResultTest.cs | 71 +++++++++++++++++++ 3 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj create mode 100644 src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs diff --git a/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs b/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs index 1a2e156354..0cf02247a1 100644 --- a/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs +++ b/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs @@ -1,6 +1,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Text; +using System.Text.Encodings.Web; namespace Microsoft.AspNetCore.SpaServices.Prerendering { @@ -49,12 +50,16 @@ namespace Microsoft.AspNetCore.SpaServices.Prerendering foreach (var property in Globals.Properties()) { - stringBuilder.AppendFormat("window.{0} = {1};", - property.Name, - property.Value.ToString(Formatting.None)); + var propertyNameJavaScriptString = JavaScriptEncoder.Default.Encode(property.Name); + var valueJson = property.Value.ToString(Formatting.None); + var valueJsonJavaScriptString = JavaScriptEncoder.Default.Encode(valueJson); + + stringBuilder.AppendFormat("window[\"{0}\"] = JSON.parse(\"{1}\");", + propertyNameJavaScriptString, + valueJsonJavaScriptString); } return stringBuilder.ToString(); } } -} \ No newline at end of file +} diff --git a/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj new file mode 100644 index 0000000000..db1160878b --- /dev/null +++ b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj @@ -0,0 +1,11 @@ + + + + netcoreapp2.0 + + + + + + + diff --git a/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs new file mode 100644 index 0000000000..77ce7a213c --- /dev/null +++ b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs @@ -0,0 +1,71 @@ +// 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.AspNetCore.SpaServices.Prerendering; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Xunit; + +namespace Microsoft.AspNetCore.SpaServices.Tests +{ + public class RenderToStringResultTest + { + [Fact] + public void HandlesNullGlobals() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = null; + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + Assert.Equal(string.Empty, actualScript); + } + + [Fact] + public void HandlesGlobalsWithMultipleProperties() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = ToJObject(new + { + FirstProperty = "first value", + SecondProperty = new[] { "Array entry 0", "Array entry 1" } + }); + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + var expectedScript = @"window[""FirstProperty""] = JSON.parse(""\u0022first value\u0022"");" + + @"window[""SecondProperty""] = JSON.parse(""[\u0022Array entry 0\u0022,\u0022Array entry 1\u0022]"");"; + Assert.Equal(expectedScript, actualScript); + } + + [Fact] + public void HandlesGlobalsWithCorrectStringEncoding() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = ToJObject(new Dictionary + { + { "Va\"'}\u260E" } + }); + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + var expectedScript = @"window[""Va\u003Cl\u0027u\u0022e""] = JSON.parse(""\u0022\u003C\/tag\u003E\\\u0022\u0027}\u260E\u0022"");"; + Assert.Equal(expectedScript, actualScript); + } + + private static JObject ToJObject(object value) + { + return JsonConvert.DeserializeObject(JsonConvert.SerializeObject(value)); + } + } +} From fc65b4fd86cb09d375a296ac5d68162ba72fefd5 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Fri, 9 Aug 2019 01:37:35 +0000 Subject: [PATCH 5/9] Merged PR 2264: Fix encoding used in JS generated by prerenderer Fix encoding used in JS generated by prerenderer --- .../src/Prerendering/RenderToStringResult.cs | 13 ++-- ...rosoft.AspNetCore.SpaServices.Tests.csproj | 11 +++ .../RenderToStringResultTest.cs | 71 +++++++++++++++++++ 3 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj create mode 100644 src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs diff --git a/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs b/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs index 1a2e156354..0cf02247a1 100644 --- a/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs +++ b/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs @@ -1,6 +1,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Text; +using System.Text.Encodings.Web; namespace Microsoft.AspNetCore.SpaServices.Prerendering { @@ -49,12 +50,16 @@ namespace Microsoft.AspNetCore.SpaServices.Prerendering foreach (var property in Globals.Properties()) { - stringBuilder.AppendFormat("window.{0} = {1};", - property.Name, - property.Value.ToString(Formatting.None)); + var propertyNameJavaScriptString = JavaScriptEncoder.Default.Encode(property.Name); + var valueJson = property.Value.ToString(Formatting.None); + var valueJsonJavaScriptString = JavaScriptEncoder.Default.Encode(valueJson); + + stringBuilder.AppendFormat("window[\"{0}\"] = JSON.parse(\"{1}\");", + propertyNameJavaScriptString, + valueJsonJavaScriptString); } return stringBuilder.ToString(); } } -} \ No newline at end of file +} diff --git a/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj new file mode 100644 index 0000000000..db1160878b --- /dev/null +++ b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj @@ -0,0 +1,11 @@ + + + + netcoreapp2.0 + + + + + + + diff --git a/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs new file mode 100644 index 0000000000..77ce7a213c --- /dev/null +++ b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs @@ -0,0 +1,71 @@ +// 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.AspNetCore.SpaServices.Prerendering; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Xunit; + +namespace Microsoft.AspNetCore.SpaServices.Tests +{ + public class RenderToStringResultTest + { + [Fact] + public void HandlesNullGlobals() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = null; + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + Assert.Equal(string.Empty, actualScript); + } + + [Fact] + public void HandlesGlobalsWithMultipleProperties() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = ToJObject(new + { + FirstProperty = "first value", + SecondProperty = new[] { "Array entry 0", "Array entry 1" } + }); + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + var expectedScript = @"window[""FirstProperty""] = JSON.parse(""\u0022first value\u0022"");" + + @"window[""SecondProperty""] = JSON.parse(""[\u0022Array entry 0\u0022,\u0022Array entry 1\u0022]"");"; + Assert.Equal(expectedScript, actualScript); + } + + [Fact] + public void HandlesGlobalsWithCorrectStringEncoding() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = ToJObject(new Dictionary + { + { "Va\"'}\u260E" } + }); + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + var expectedScript = @"window[""Va\u003Cl\u0027u\u0022e""] = JSON.parse(""\u0022\u003C\/tag\u003E\\\u0022\u0027}\u260E\u0022"");"; + Assert.Equal(expectedScript, actualScript); + } + + private static JObject ToJObject(object value) + { + return JsonConvert.DeserializeObject(JsonConvert.SerializeObject(value)); + } + } +} From e1426f6bdf0ca7501a5dc8258891075e6c7abe1c Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Mon, 12 Aug 2019 16:40:16 +0000 Subject: [PATCH 6/9] Merged PR 2582: Fixing merge conflict between release/2.2 and internal/release/2.2 Changes were made to the `PatchConfig.props` files in the internal and public branches. The change to the internal branch was made before the change in the public branch which caused the conflict and broke mirroring. --- eng/PatchConfig.props | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props index 1f005216dc..ca3fab2ab2 100644 --- a/eng/PatchConfig.props +++ b/eng/PatchConfig.props @@ -76,6 +76,7 @@ Later on, this will be checked using this condition: Microsoft.AspNetCore.DataProtection.AzureStorage; + Microsoft.AspNetCore.Hosting; From be0a4a7f4cf06cbd6ec714bd1d9afee6bdb040a8 Mon Sep 17 00:00:00 2001 From: Andrew Stanton-Nurse Date: Tue, 13 Aug 2019 22:10:56 +0000 Subject: [PATCH 7/9] Merged PR 2631: Fix patch config in 2.2 I'll merge this ASAP once I'm confident it will resolve the issue --- eng/PatchConfig.props | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props index ca3fab2ab2..3f12fb1a02 100644 --- a/eng/PatchConfig.props +++ b/eng/PatchConfig.props @@ -77,6 +77,7 @@ Later on, this will be checked using this condition: Microsoft.AspNetCore.DataProtection.AzureStorage; Microsoft.AspNetCore.Hosting; + Microsoft.AspNetCore.SpaServices; From 2a6c96a684b0cd574b6fb6e867422d5d605663eb Mon Sep 17 00:00:00 2001 From: Andrew Stanton-Nurse Date: Tue, 13 Aug 2019 22:13:40 +0000 Subject: [PATCH 8/9] Merged PR 2630: Fix patch config for SpaServices MSRC I'll merge this ASAP once I'm confident it will fix the issue. --- eng/PatchConfig.props | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props index 8fa9474235..e433208e89 100644 --- a/eng/PatchConfig.props +++ b/eng/PatchConfig.props @@ -43,6 +43,7 @@ Later on, this will be checked using this condition: Microsoft.AspNetCore.DataProtection.AzureStorage; + Microsoft.AspNetCore.SpaServices; From 1fe84a6ded892af518ef86006516ef2d74431eba Mon Sep 17 00:00:00 2001 From: Chris R Date: Mon, 9 Sep 2019 15:53:19 -0700 Subject: [PATCH 9/9] Replace obsolete feeds --- build/sources.props | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build/sources.props b/build/sources.props index 7648381d3b..9567ad020c 100644 --- a/build/sources.props +++ b/build/sources.props @@ -14,12 +14,11 @@ $(RestoreSources); - https://dotnet.myget.org/F/dotnet-core/api/v3/index.json; https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json; https://dotnet.myget.org/F/aspnetcore-master/api/v3/index.json; https://dotnet.myget.org/F/roslyn/api/v3/index.json; - https://vside.myget.org/F/vssdk/api/v3/index.json; - https://vside.myget.org/F/vsmac/api/v3/index.json; + https://pkgs.dev.azure.com/azure-public/vside/_packaging/vssdk/nuget/v3/index.json; + https://pkgs.dev.azure.com/azure-public/vside/_packaging/vs-impl/nuget/v3/index.json;