Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit f103b80

Browse files
authored
System.Security.Cryptography.Xml.Tests now at 0 failures on ILC. (#19567)
The usual suspects: - Checking for Exception.ParamNames - Types obtained through CryptoConfig being reduced away. - Unnecessary use of GetCallingAssembly() in TestHelper - XmlDsigXsltTransform relies on XslCompiledTransform which relies heavily on Reflection.Emit. Let me know if you want an issue opened on this, though it looks pretty fundamental...
1 parent d7e490a commit f103b80

File tree

8 files changed

+65
-19
lines changed

8 files changed

+65
-19
lines changed

src/Common/tests/System/PlatformDetection.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,5 +385,11 @@ public static bool IsNonZeroLowerBoundArraySupported
385385
}
386386

387387
private static volatile Tuple<bool> s_lazyNonZeroLowerBoundArraySupported;
388+
389+
public static bool IsReflectionEmitSupported = !PlatformDetection.IsNetNative;
390+
391+
// System.Security.Cryptography.Xml.XmlDsigXsltTransform.GetOutput() relies on XslCompiledTransform which relies
392+
// heavily on Reflection.Emit
393+
public static bool IsXmlDsigXsltTransformSupported => PlatformDetection.IsReflectionEmitSupported;
388394
}
389395
}

src/System.Security.Cryptography.Xml/tests/EncryptedXmlTest.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -678,8 +678,11 @@ public void DecryptData_CipherReference_IdUri()
678678
cipherDataByReference.InnerText = cipherValue;
679679
doc.DocumentElement.AppendChild(cipherDataByReference);
680680

681-
string decryptedXmlString = Encoding.UTF8.GetString(exml.DecryptData(ed, aes));
682-
Assert.Equal(xml, decryptedXmlString);
681+
if (PlatformDetection.IsXmlDsigXsltTransformSupported)
682+
{
683+
string decryptedXmlString = Encoding.UTF8.GetString(exml.DecryptData(ed, aes));
684+
Assert.Equal(xml, decryptedXmlString);
685+
}
683686
}
684687
}
685688

src/System.Security.Cryptography.Xml/tests/EncryptionMethodTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public void KeySize_SetNegativeValue_ThrowsArgumentOutOfRangeException(int value
4848
if (PlatformDetection.IsFullFramework)
4949
Assert.Throws<ArgumentOutOfRangeException>("The key size should be a non negative integer.", () => method.KeySize = value);
5050
else
51-
Assert.Throws<ArgumentOutOfRangeException>("value", () => method.KeySize = value);
51+
AssertExtensions.Throws<ArgumentOutOfRangeException>("value", () => method.KeySize = value);
5252
}
5353

5454
[Theory]

src/System.Security.Cryptography.Xml/tests/KeyInfoX509DataTest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,23 +147,23 @@ public void AddCertificate_Null()
147147
public void AddIssuerSerial_Issuer_Null()
148148
{
149149
KeyInfoX509Data data = new KeyInfoX509Data();
150-
Assert.Throws<ArgumentException>("issuerName", () => data.AddIssuerSerial(null, "serial"));
150+
AssertExtensions.Throws<ArgumentException>("issuerName", () => data.AddIssuerSerial(null, "serial"));
151151
}
152152

153153
[Fact]
154154
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "https://github.com/dotnet/corefx/issues/18690")]
155155
public void AddIssuerSerial_Null_Serial()
156156
{
157157
KeyInfoX509Data data = new KeyInfoX509Data();
158-
Assert.Throws<ArgumentException>("serialNumber", () => data.AddIssuerSerial("issuer", null));
158+
AssertExtensions.Throws<ArgumentException>("serialNumber", () => data.AddIssuerSerial("issuer", null));
159159
}
160160

161161
[Fact]
162162
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "https://github.com/dotnet/corefx/issues/18690")]
163163
public void AddIssuerSerial_Invalid_Serial()
164164
{
165165
KeyInfoX509Data data = new KeyInfoX509Data();
166-
Assert.Throws<ArgumentException>("serialNumber", () => data.AddIssuerSerial("issuer", "NotANumber"));
166+
AssertExtensions.Throws<ArgumentException>("serialNumber", () => data.AddIssuerSerial("issuer", "NotANumber"));
167167
}
168168

169169
[Fact]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
2+
<Library>
3+
4+
<!-- These types are loaded through CryptoConfig -->
5+
<Type Name="System.Security.Cryptography.RSAPKCS1SignatureFormatter" Dynamic="Required Public" />
6+
<Type Name="System.Security.Cryptography.RSAPKCS1SignatureDeformatter" Dynamic="Required Public" />
7+
<Type Name="System.Security.Cryptography.DSASignatureFormatter" Dynamic="Required Public" />
8+
<Type Name="System.Security.Cryptography.DSASignatureDeformatter" Dynamic="Required Public" />
9+
10+
</Library>
11+
</Directives>
12+
13+

src/System.Security.Cryptography.Xml/tests/System.Security.Cryptography.Xml.Tests.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@
6767
<EmbeddedResource Include="EncryptedXmlSample1.xml" />
6868
<EmbeddedResource Include="XmlLicenseSample.xml" />
6969
</ItemGroup>
70+
<ItemGroup>
71+
<EmbeddedResource Include="Resources\$(AssemblyName).rd.xml" />
72+
</ItemGroup>
7073
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netstandard-Debug|AnyCPU'" />
7174
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netstandard-Release|AnyCPU'" />
7275
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />

src/System.Security.Cryptography.Xml/tests/TestHelpers.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,12 +195,12 @@ public static X509Certificate2 GetSampleX509Certificate()
195195

196196
public static Stream LoadResourceStream(string resourceName)
197197
{
198-
return Assembly.GetCallingAssembly().GetManifestResourceStream(resourceName);
198+
return typeof(TestHelpers).Assembly.GetManifestResourceStream(resourceName);
199199
}
200200

201201
public static byte[] LoadResource(string resourceName)
202202
{
203-
using (Stream stream = Assembly.GetCallingAssembly().GetManifestResourceStream(resourceName))
203+
using (Stream stream = typeof(TestHelpers).Assembly.GetManifestResourceStream(resourceName))
204204
{
205205
long length = stream.Length;
206206
byte[] buffer = new byte[length];

src/System.Security.Cryptography.Xml/tests/XmlDsigXsltTransformTest.cs

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,10 @@ public void EmptyXslt()
127127
doc.LoadXml(test);
128128

129129
transform.LoadInput(doc.ChildNodes);
130-
Assert.Throws<ArgumentNullException>(() => transform.GetOutput());
130+
if (PlatformDetection.IsXmlDsigXsltTransformSupported)
131+
{
132+
Assert.Throws<ArgumentNullException>(() => transform.GetOutput());
133+
}
131134
}
132135

133136
[Fact]
@@ -141,7 +144,10 @@ public void EmbeddedStylesheet()
141144

142145
transform.LoadInnerXml(doc.ChildNodes);
143146
transform.LoadInput(doc);
144-
Stream s = (Stream)transform.GetOutput();
147+
if (PlatformDetection.IsXmlDsigXsltTransformSupported)
148+
{
149+
Stream s = (Stream)transform.GetOutput();
150+
}
145151
}
146152

147153
[Fact]
@@ -182,7 +188,10 @@ public void OnlyInner()
182188
doc.LoadXml(test);
183189

184190
transform.LoadInnerXml(doc.ChildNodes);
185-
Assert.Throws<ArgumentNullException>(() => transform.GetOutput());
191+
if (PlatformDetection.IsXmlDsigXsltTransformSupported)
192+
{
193+
Assert.Throws<ArgumentNullException>(() => transform.GetOutput());
194+
}
186195
}
187196

188197
private XmlDocument GetXslDoc()
@@ -205,8 +214,11 @@ public void LoadInputAsXmlDocument()
205214
XmlDocument doc = GetXslDoc();
206215
transform.LoadInnerXml(doc.DocumentElement.ChildNodes);
207216
transform.LoadInput(doc);
208-
Stream s = (Stream)transform.GetOutput();
209-
string output = Stream2Array(s);
217+
if (PlatformDetection.IsXmlDsigXsltTransformSupported)
218+
{
219+
Stream s = (Stream)transform.GetOutput();
220+
string output = Stream2Array(s);
221+
}
210222
}
211223

212224
[Fact]
@@ -215,8 +227,11 @@ public void LoadInputAsXmlNodeList()
215227
XmlDocument doc = GetXslDoc();
216228
transform.LoadInnerXml(doc.DocumentElement.ChildNodes);
217229
transform.LoadInput(doc.ChildNodes);
218-
Stream s = (Stream)transform.GetOutput();
219-
string output = Stream2Array(s);
230+
if (PlatformDetection.IsXmlDsigXsltTransformSupported)
231+
{
232+
Stream s = (Stream)transform.GetOutput();
233+
string output = Stream2Array(s);
234+
}
220235
}
221236

222237
[Fact]
@@ -228,8 +243,11 @@ public void LoadInputAsStream()
228243
doc.Save(ms);
229244
ms.Position = 0;
230245
transform.LoadInput(ms);
231-
Stream s = (Stream)transform.GetOutput();
232-
string output = Stream2Array(s);
246+
if (PlatformDetection.IsXmlDsigXsltTransformSupported)
247+
{
248+
Stream s = (Stream)transform.GetOutput();
249+
string output = Stream2Array(s);
250+
}
233251
}
234252

235253
protected void AreEqual(string msg, XmlNodeList expected, XmlNodeList actual)
@@ -265,8 +283,11 @@ public void Load2()
265283
XmlDocument doc = GetXslDoc();
266284
transform.LoadInnerXml(doc.DocumentElement.ChildNodes);
267285
transform.LoadInput(doc);
268-
Stream s = (Stream)transform.GetOutput();
269-
string output = Stream2Array(s);
286+
if (PlatformDetection.IsXmlDsigXsltTransformSupported)
287+
{
288+
Stream s = (Stream)transform.GetOutput();
289+
string output = Stream2Array(s);
290+
}
270291
}
271292

272293
[Fact]

0 commit comments

Comments
 (0)