diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5e06dbf685..10edfb8486 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -57,340 +57,340 @@ https://github.com/aspnet/EntityFrameworkCore b9c9b57de1ba41f75427db0a51b2e897d0354656 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c https://github.com/dotnet/corefx a28176b5ec68b6da1472934fe9493790d1665cae - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/dotnet/core-setup - 63abc77da6d99470caa5bfa0465afe244105e595 + 372355272004e08c035c61077f5d6ca4d8f9cd22 - + https://github.com/dotnet/core-setup - 63abc77da6d99470caa5bfa0465afe244105e595 + 372355272004e08c035c61077f5d6ca4d8f9cd22 - + https://github.com/dotnet/core-setup - 63abc77da6d99470caa5bfa0465afe244105e595 + 372355272004e08c035c61077f5d6ca4d8f9cd22 - + https://github.com/dotnet/corefx - e23119d577e644d2c2a25419c88c1181681358e0 + d47cae744ddfb625db8e391cecb261e4c3d7bb1c - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 https://github.com/dotnet/arcade @@ -404,9 +404,9 @@ https://github.com/dotnet/arcade e6a5d5f970bb872451c6310ae34eda31041fb552 - + https://github.com/aspnet/Extensions - 6e92fcad99b6a6e882ac8dc5ad817b558f603597 + 04a5ac947976fc17e701ffd4cd406b589e14b1e5 diff --git a/eng/Versions.props b/eng/Versions.props index 1755801069..3ff25c6135 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -23,95 +23,95 @@ 1.0.0-beta.19302.2 - 3.0.0-preview6-27730-01 - 3.0.0-preview6-27730-01 - 2.1.0-preview6-27730-01 + 3.0.0-preview6-27803-13 + 3.0.0-preview6-27803-13 + 2.1.0-preview6-27803-13 - 4.6.0-preview6.19279.8 - 4.6.0-preview6.19279.8 - 4.6.0-preview6.19279.8 + 4.6.0-preview6.19303.8 + 4.6.0-preview6.19303.8 + 4.6.0-preview6.19303.8 4.7.0-preview6.19264.9 - 4.6.0-preview6.19279.8 - 4.6.0-preview6.19279.8 - 4.6.0-preview6.19279.8 - 4.6.0-preview6.19279.8 - 1.7.0-preview6.19279.8 - 4.6.0-preview6.19279.8 - 4.6.0-preview6.19279.8 - 4.6.0-preview6.19279.8 - 4.6.0-preview6.19279.8 - 4.6.0-preview6.19279.8 - 4.6.0-preview6.19279.8 - 4.6.0-preview6.19279.8 - 4.6.0-preview6.19279.8 - 4.6.0-preview6.19279.8 - 4.6.0-preview6.19279.8 + 4.6.0-preview6.19303.8 + 4.6.0-preview6.19303.8 + 4.6.0-preview6.19303.8 + 4.6.0-preview6.19303.8 + 1.7.0-preview6.19303.8 + 4.6.0-preview6.19303.8 + 4.6.0-preview6.19303.8 + 4.6.0-preview6.19303.8 + 4.6.0-preview6.19303.8 + 4.6.0-preview6.19303.8 + 4.6.0-preview6.19303.8 + 4.6.0-preview6.19303.8 + 4.6.0-preview6.19303.8 + 4.6.0-preview6.19303.8 + 4.6.0-preview6.19303.8 - 3.0.0-preview6.19279.8 + 3.0.0-preview6.19303.8 0.10.0-preview7.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 - 3.0.0-preview6.19303.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 + 3.0.0-preview6.19304.2 3.0.0-preview7.19303.12 3.0.0-preview7.19303.12 @@ -180,9 +180,9 @@ 0.10.13 4.2.1 4.2.1 - 3.7.0 - 0.1.21-dev201905010701 - 1.20.0-pre3 + 3.8.0 + 0.1.21-pre1 + 1.21.0 3.0.0-preview3.4 3.0.0-preview3.4 3.0.0-preview3.4 diff --git a/src/Mvc/Mvc.ViewFeatures/test/Rendering/JsonHelperTestBase.cs b/src/Mvc/Mvc.ViewFeatures/test/Rendering/JsonHelperTestBase.cs index 90d994af41..cfbabe735b 100644 --- a/src/Mvc/Mvc.ViewFeatures/test/Rendering/JsonHelperTestBase.cs +++ b/src/Mvc/Mvc.ViewFeatures/test/Rendering/JsonHelperTestBase.cs @@ -10,7 +10,7 @@ namespace Microsoft.AspNetCore.Mvc.Rendering protected abstract IJsonHelper GetJsonHelper(); [Fact] - public void Serialize_EscapesHtmlByDefault() + public virtual void Serialize_EscapesHtmlByDefault() { // Arrange var helper = GetJsonHelper(); diff --git a/src/Mvc/Mvc.ViewFeatures/test/Rendering/SystemTextJsonHelperTest.cs b/src/Mvc/Mvc.ViewFeatures/test/Rendering/SystemTextJsonHelperTest.cs index 4550976a40..e754844dec 100644 --- a/src/Mvc/Mvc.ViewFeatures/test/Rendering/SystemTextJsonHelperTest.cs +++ b/src/Mvc/Mvc.ViewFeatures/test/Rendering/SystemTextJsonHelperTest.cs @@ -2,7 +2,9 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Text.Json.Serialization; +using Microsoft.AspNetCore.Html; using Microsoft.Extensions.Options; +using Xunit; namespace Microsoft.AspNetCore.Mvc.Rendering { @@ -13,5 +15,24 @@ namespace Microsoft.AspNetCore.Mvc.Rendering var options = new JsonOptions() { JsonSerializerOptions = { PropertyNamingPolicy = JsonNamingPolicy.CamelCase } }; return new SystemTextJsonHelper(Options.Create(options)); } + + [Fact] + public override void Serialize_EscapesHtmlByDefault() + { + // Arrange + var helper = GetJsonHelper(); + var obj = new + { + HTML = "John Doe" + }; + var expectedOutput = "{\"html\":\"\\u003cb\\u003eJohn Doe\\u003c\\u002fb\\u003e\"}"; + + // Act + var result = helper.Serialize(obj); + + // Assert + var htmlString = Assert.IsType(result); + Assert.Equal(expectedOutput, htmlString.ToString()); + } } } diff --git a/src/SignalR/clients/ts/FunctionalTests/ts/HubConnectionTests.ts b/src/SignalR/clients/ts/FunctionalTests/ts/HubConnectionTests.ts index a5e4059fc6..bb577c539a 100644 --- a/src/SignalR/clients/ts/FunctionalTests/ts/HubConnectionTests.ts +++ b/src/SignalR/clients/ts/FunctionalTests/ts/HubConnectionTests.ts @@ -457,7 +457,7 @@ describe("hubConnection", () => { const complexObject = { ByteArray: protocol.name === "json" - ? new Array(0x68, 0x65, 0x6c, 0x6c, 0x6f) + ? "aGVsbG8=" : new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0x6f]), DateTime: protocol.name === "json" ? "2002-04-01T10:20:15Z" @@ -499,7 +499,7 @@ describe("hubConnection", () => { const complexObject = { ByteArray: protocol.name === "json" - ? new Array(0x1, 0x2, 0x3) + ? "AQID" : new Uint8Array([0x1, 0x2, 0x3]), DateTime: protocol.name === "json" ? "2000-01-01T00:00:00Z" diff --git a/src/SignalR/common/Shared/SystemTextJsonExtensions.cs b/src/SignalR/common/Shared/SystemTextJsonExtensions.cs index 2af8371d7d..766efadb18 100644 --- a/src/SignalR/common/Shared/SystemTextJsonExtensions.cs +++ b/src/SignalR/common/Shared/SystemTextJsonExtensions.cs @@ -57,23 +57,6 @@ namespace Microsoft.AspNetCore.Internal } } - // Remove after https://github.com/dotnet/corefx/issues/33295 is done - public static void Skip(this ref Utf8JsonReader reader) - { - if (reader.TokenType == JsonTokenType.PropertyName) - { - reader.Read(); - } - - if (reader.TokenType == JsonTokenType.StartObject || reader.TokenType == JsonTokenType.StartArray) - { - int depth = reader.CurrentDepth; - while (reader.Read() && depth < reader.CurrentDepth) - { - } - } - } - public static string ReadAsString(this ref Utf8JsonReader reader, string propertyName) { reader.Read(); diff --git a/src/SignalR/common/SignalR.Common/test/Internal/Protocol/JsonHubProtocolTests.cs b/src/SignalR/common/SignalR.Common/test/Internal/Protocol/JsonHubProtocolTests.cs index 5ef05d6e4e..f7dcdfa3c1 100644 --- a/src/SignalR/common/SignalR.Common/test/Internal/Protocol/JsonHubProtocolTests.cs +++ b/src/SignalR/common/SignalR.Common/test/Internal/Protocol/JsonHubProtocolTests.cs @@ -105,32 +105,32 @@ namespace Microsoft.AspNetCore.SignalR.Common.Tests.Internal.Protocol { new JsonProtocolTestData("InvocationMessage_HasFloatArgument", new InvocationMessage(null, "Target", new object[] { 1, "Foo", 2.0f }), true, true, "{\"type\":1,\"target\":\"Target\",\"arguments\":[1,\"Foo\",2]}"), new JsonProtocolTestData("InvocationMessage_StringIsoDateArgument", new InvocationMessage("Method", new object[] { "2016-05-10T13:51:20+12:34" }), true, true, "{\"type\":1,\"target\":\"Method\",\"arguments\":[\"2016-05-10T13:51:20\\u002b12:34\"]}"), - new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNoCamelCase", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, true, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":[1,2,3]}]}"), - new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNullValueIgnore", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, true, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":[1,2,3]}]}"), - new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNullValueIgnoreAndNoCamelCase", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, false, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":[1,2,3]}]}"), - new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNullValueInclude", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, false, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":[1,2,3]}]}"), + new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNoCamelCase", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, true, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":\"AQID\"}]}"), + new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNullValueIgnore", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, true, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":\"AQID\"}]}"), + new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNullValueIgnoreAndNoCamelCase", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, false, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":\"AQID\"}]}"), + new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNullValueInclude", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, false, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":\"AQID\"}]}"), new JsonProtocolTestData("InvocationMessage_HasHeaders", AddHeaders(TestHeaders, new InvocationMessage("123", "Target", new object[] { 1, "Foo", 2.0f })), true, true, "{\"type\":1," + SerializedHeaders + ",\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[1,\"Foo\",2]}"), - new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNoCamelCase", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, true, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":[1,2,3]}}"), - new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNullValueIgnore", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, true, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":[1,2,3]}}"), - new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNullValueIgnoreAndNoCamelCase", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, false, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":[1,2,3]}}"), - new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNullValueInclude", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, false, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":[1,2,3]}}"), + new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNoCamelCase", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, true, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":\"AQID\"}}"), + new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNullValueIgnore", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, true, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":\"AQID\"}}"), + new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNullValueIgnoreAndNoCamelCase", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, false, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":\"AQID\"}}"), + new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNullValueInclude", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, false, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":\"AQID\"}}"), new JsonProtocolTestData("StreamItemMessage_HasFloatItem", new StreamItemMessage("123", 2.0f), true, true, "{\"type\":2,\"invocationId\":\"123\",\"item\":2}"), - new JsonProtocolTestData("StreamItemMessage_HasHeaders", AddHeaders(TestHeaders, new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } })), true, false, "{\"type\":2," + SerializedHeaders + ",\"invocationId\":\"123\",\"item\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":[1,2,3]}}"), + new JsonProtocolTestData("StreamItemMessage_HasHeaders", AddHeaders(TestHeaders, new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } })), true, false, "{\"type\":2," + SerializedHeaders + ",\"invocationId\":\"123\",\"item\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":\"AQID\"}}"), new JsonProtocolTestData("CompletionMessage_HasFloatResult", CompletionMessage.WithResult("123", 2.0f), true, true, "{\"type\":3,\"invocationId\":\"123\",\"result\":2}"), - new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNoCamelCase", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, true, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":[1,2,3]}}"), - new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNullValueIgnore", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, true, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":[1,2,3]}}"), - new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNullValueIncludeAndNoCamelCase", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, false, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":[1,2,3]}}"), - new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNullValueInclude", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, false, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":[1,2,3]}}"), + new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNoCamelCase", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, true, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":\"AQID\"}}"), + new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNullValueIgnore", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, true, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":\"AQID\"}}"), + new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNullValueIncludeAndNoCamelCase", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, false, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":\"AQID\"}}"), + new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNullValueInclude", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, false, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":\"AQID\"}}"), new JsonProtocolTestData("CompletionMessage_HasErrorAndCamelCase", CompletionMessage.Empty("123"), true, true, "{\"type\":3,\"invocationId\":\"123\"}"), - new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNoCamelCase", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, true, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":[1,2,3]}]}"), - new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNullValueIgnore", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, true, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":[1,2,3]}]}"), - new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNullValueIgnoreAndNoCamelCase", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, false, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":[1,2,3]}]}"), - new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNullValueInclude", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, false, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":[1,2,3]}]}"), + new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNoCamelCase", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, true, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":\"AQID\"}]}"), + new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNullValueIgnore", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, true, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":\"AQID\"}]}"), + new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNullValueIgnoreAndNoCamelCase", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, false, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":\"AQID\"}]}"), + new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNullValueInclude", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, false, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":\"AQID\"}]}"), new JsonProtocolTestData("StreamInvocationMessage_HasFloatArgument", new StreamInvocationMessage("123", "Target", new object[] { 1, "Foo", 2.0f }), true, true, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[1,\"Foo\",2]}"), - new JsonProtocolTestData("StreamInvocationMessage_HasHeaders", AddHeaders(TestHeaders, new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } })), true, false, "{\"type\":4," + SerializedHeaders + ",\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":[1,2,3]}]}"), + new JsonProtocolTestData("StreamInvocationMessage_HasHeaders", AddHeaders(TestHeaders, new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } })), true, false, "{\"type\":4," + SerializedHeaders + ",\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":\"AQID\"}]}"), }.ToDictionary(t => t.Name); public static IEnumerable CustomProtocolTestDataNames => CustomProtocolTestData.Keys.Select(name => new object[] { name });