Skip to content

Commit de52994

Browse files
committed
Merge remote-tracking branch 'internal/internal/release/2.2' into release/2.2
2 parents 2217be2 + be0a4a7 commit de52994

File tree

9 files changed

+104
-5
lines changed

9 files changed

+104
-5
lines changed

build/dependencies.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@
146146
<MicrosoftCodeAnalysisCSharpPackageVersion>2.8.0</MicrosoftCodeAnalysisCSharpPackageVersion>
147147
<MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>2.8.0</MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>
148148
<MicrosoftCSharpPackageVersion>4.5.0</MicrosoftCSharpPackageVersion>
149+
<MicrosoftDataODataPackageVersion>5.8.4</MicrosoftDataODataPackageVersion>
150+
<MicrosoftDataServicesClientPackageVersion>5.8.4</MicrosoftDataServicesClientPackageVersion>
149151
<MicrosoftDiaSymReaderNativePackageVersion>1.7.0</MicrosoftDiaSymReaderNativePackageVersion>
150152
<MicrosoftDotNetArchivePackageVersion>0.2.0-beta-63019-01</MicrosoftDotNetArchivePackageVersion>
151153
<MicrosoftDotNetProjectModelPackageVersion>1.0.0-rc3-003121</MicrosoftDotNetProjectModelPackageVersion>

build/external-dependencies.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@
9696
<ExternalDependency Include="Microsoft.Build.Tasks.Core" Version="$(MicrosoftBuildTasksCorePackageVersion)" />
9797
<ExternalDependency Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCorePackageVersion)" />
9898
<ExternalDependency Include="Microsoft.Internal.AspNetCore.H2Spec.All" Version="$(MicrosoftInternalAspNetCoreH2SpecAllPackageVersion)" />
99+
<ExternalDependency Include="Microsoft.Data.OData" Version="$(MicrosoftDataODataPackageVersion)" />
100+
<ExternalDependency Include="Microsoft.Data.Services.Client" Version="$(MicrosoftDataServicesClientPackageVersion)" />
99101

100102
<!-- Razor uses a custom version of roslyn packages -->
101103
<ExternalDependency Include="Microsoft.CodeAnalysis.Common" Version="$(MicrosoftCodeAnalysisCommonPackageVersion)" />

eng/Dependencies.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ and are generated based on the last package release.
110110
<LatestPackageReference Include="IdentityServer4" Version="$(IdentityServer4PackageVersion)" />
111111
<LatestPackageReference Include="MessagePack" Version="$(MessagePackPackageVersion)" />
112112
<LatestPackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" />
113+
<LatestPackageReference Include="Microsoft.Data.OData" Version="$(MicrosoftDataODataPackageVersion)" />
114+
<LatestPackageReference Include="Microsoft.Data.Services.Client" Version="$(MicrosoftDataServicesClientPackageVersion)" />
113115
<LatestPackageReference Include="Moq" Version="$(MoqPackageVersion)" />
114116
<!-- This version is required by MSBuild tasks or Visual Studio extensions. -->
115117
<LatestPackageReference Include="Newtonsoft.Json" Version="9.0.1" Condition="'$(UseMSBuildJsonNet)' == 'true'" />

eng/PatchConfig.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ Later on, this will be checked using this condition:
7575
</PropertyGroup>
7676
<PropertyGroup Condition=" '$(VersionPrefix)' == '2.2.7' ">
7777
<PackagesInPatch>
78+
Microsoft.AspNetCore.DataProtection.AzureStorage;
7879
Microsoft.AspNetCore.Hosting;
80+
Microsoft.AspNetCore.SpaServices;
7981
</PackagesInPatch>
8082
</PropertyGroup>
8183
</Project>
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<Description>Microsoft Azure Blob storrage support as key store.</Description>
4+
<Description>Microsoft Azure Blob storage support as key store.</Description>
55
<TargetFramework>netstandard2.0</TargetFramework>
66
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
77
<GenerateDocumentationFile>true</GenerateDocumentationFile>
88
<PackageTags>aspnetcore;dataprotection;azure;blob</PackageTags>
9+
<UseLatestPackageReferences>true</UseLatestPackageReferences>
910
</PropertyGroup>
1011

1112
<ItemGroup>
1213
<Reference Include="Microsoft.AspNetCore.DataProtection" />
1314
<Reference Include="WindowsAzure.Storage" />
15+
<Reference Include="Microsoft.Data.OData" />
1416
</ItemGroup>
1517

1618
</Project>

src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
<Reference Include="Microsoft.AspNetCore.DataProtection" />
1010
<Reference Include="Microsoft.AspNetCore.DataProtection.AzureStorage" />
1111
<Reference Include="Microsoft.Extensions.DependencyInjection" />
12+
<Reference Include="Microsoft.Data.OData"/>
13+
<Reference Include="Microsoft.Data.Services.Client"/>
1214
</ItemGroup>
1315

1416
</Project>

src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Newtonsoft.Json;
22
using Newtonsoft.Json.Linq;
33
using System.Text;
4+
using System.Text.Encodings.Web;
45

56
namespace Microsoft.AspNetCore.SpaServices.Prerendering
67
{
@@ -49,12 +50,16 @@ public string CreateGlobalsAssignmentScript()
4950

5051
foreach (var property in Globals.Properties())
5152
{
52-
stringBuilder.AppendFormat("window.{0} = {1};",
53-
property.Name,
54-
property.Value.ToString(Formatting.None));
53+
var propertyNameJavaScriptString = JavaScriptEncoder.Default.Encode(property.Name);
54+
var valueJson = property.Value.ToString(Formatting.None);
55+
var valueJsonJavaScriptString = JavaScriptEncoder.Default.Encode(valueJson);
56+
57+
stringBuilder.AppendFormat("window[\"{0}\"] = JSON.parse(\"{1}\");",
58+
propertyNameJavaScriptString,
59+
valueJsonJavaScriptString);
5560
}
5661

5762
return stringBuilder.ToString();
5863
}
5964
}
60-
}
65+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFrameworks>netcoreapp2.0</TargetFrameworks>
5+
</PropertyGroup>
6+
7+
<ItemGroup>
8+
<Reference Include="Microsoft.AspNetCore.SpaServices" />
9+
</ItemGroup>
10+
11+
</Project>
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
// Copyright (c) .NET Foundation. All rights reserved.
2+
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3+
4+
using System.Collections.Generic;
5+
using Microsoft.AspNetCore.SpaServices.Prerendering;
6+
using Newtonsoft.Json;
7+
using Newtonsoft.Json.Linq;
8+
using Xunit;
9+
10+
namespace Microsoft.AspNetCore.SpaServices.Tests
11+
{
12+
public class RenderToStringResultTest
13+
{
14+
[Fact]
15+
public void HandlesNullGlobals()
16+
{
17+
// Arrange
18+
var renderToStringResult = new RenderToStringResult();
19+
renderToStringResult.Globals = null;
20+
21+
// Act
22+
var actualScript = renderToStringResult.CreateGlobalsAssignmentScript();
23+
24+
// Assert
25+
Assert.Equal(string.Empty, actualScript);
26+
}
27+
28+
[Fact]
29+
public void HandlesGlobalsWithMultipleProperties()
30+
{
31+
// Arrange
32+
var renderToStringResult = new RenderToStringResult();
33+
renderToStringResult.Globals = ToJObject(new
34+
{
35+
FirstProperty = "first value",
36+
SecondProperty = new[] { "Array entry 0", "Array entry 1" }
37+
});
38+
39+
// Act
40+
var actualScript = renderToStringResult.CreateGlobalsAssignmentScript();
41+
42+
// Assert
43+
var expectedScript = @"window[""FirstProperty""] = JSON.parse(""\u0022first value\u0022"");" +
44+
@"window[""SecondProperty""] = JSON.parse(""[\u0022Array entry 0\u0022,\u0022Array entry 1\u0022]"");";
45+
Assert.Equal(expectedScript, actualScript);
46+
}
47+
48+
[Fact]
49+
public void HandlesGlobalsWithCorrectStringEncoding()
50+
{
51+
// Arrange
52+
var renderToStringResult = new RenderToStringResult();
53+
renderToStringResult.Globals = ToJObject(new Dictionary<string, object>
54+
{
55+
{ "Va<l'u\"e", "</tag>\"'}\u260E" }
56+
});
57+
58+
// Act
59+
var actualScript = renderToStringResult.CreateGlobalsAssignmentScript();
60+
61+
// Assert
62+
var expectedScript = @"window[""Va\u003Cl\u0027u\u0022e""] = JSON.parse(""\u0022\u003C\/tag\u003E\\\u0022\u0027}\u260E\u0022"");";
63+
Assert.Equal(expectedScript, actualScript);
64+
}
65+
66+
private static JObject ToJObject(object value)
67+
{
68+
return JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeObject(value));
69+
}
70+
}
71+
}

0 commit comments

Comments
 (0)