diff --git a/AspNetCore.sln b/AspNetCore.sln index fbf4290fac83..152eadb7737e 100644 --- a/AspNetCore.sln +++ b/AspNetCore.sln @@ -9750,22 +9750,6 @@ Global {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Release|x64.Build.0 = Release|Any CPU {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Release|x86.ActiveCfg = Release|Any CPU {09FFBC53-3EFF-45C4-9822-5D66089CD6AD}.Release|x86.Build.0 = Release|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Debug|arm64.ActiveCfg = Debug|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Debug|arm64.Build.0 = Debug|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Debug|x64.ActiveCfg = Debug|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Debug|x64.Build.0 = Debug|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Debug|x86.ActiveCfg = Debug|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Debug|x86.Build.0 = Debug|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Release|Any CPU.Build.0 = Release|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Release|arm64.ActiveCfg = Release|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Release|arm64.Build.0 = Release|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Release|x64.ActiveCfg = Release|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Release|x64.Build.0 = Release|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Release|x86.ActiveCfg = Release|Any CPU - {A1D02CE6-1077-410A-81CB-D4BD500FD765}.Release|x86.Build.0 = Release|Any CPU {3044DFA5-DE4F-44D8-8DD8-EDF547BE513E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3044DFA5-DE4F-44D8-8DD8-EDF547BE513E}.Debug|Any CPU.Build.0 = Debug|Any CPU {3044DFA5-DE4F-44D8-8DD8-EDF547BE513E}.Debug|arm64.ActiveCfg = Debug|Any CPU @@ -11171,7 +11155,6 @@ Global {17F28812-983E-4415-A55D-842DD7EC6887} = {627BE8B3-59E6-4F1D-8C9C-76B804D41724} {A07D3B13-388B-444F-9E37-DDC0787C4690} = {17F28812-983E-4415-A55D-842DD7EC6887} {09FFBC53-3EFF-45C4-9822-5D66089CD6AD} = {17F28812-983E-4415-A55D-842DD7EC6887} - {A1D02CE6-1077-410A-81CB-D4BD500FD765} = {0508E463-0269-40C9-B5C2-3B600FB2A28B} {3044DFA5-DE4F-44D8-8DD8-EDF547BE513E} = {C445B129-0A4D-41F5-8347-6534B6B12303} {4BD6F0DB-BE9C-4C54-B52A-D20B88855ED5} = {C445B129-0A4D-41F5-8347-6534B6B12303} {6CCCF618-2E70-4870-B39F-32C016FE08F0} = {088C37A5-30D2-40FB-B031-D163CFBED006} diff --git a/src/Middleware/HttpOverrides/test/CertificateForwardingTest.cs b/src/Middleware/HttpOverrides/test/CertificateForwardingTest.cs index f4e31689e505..ee51bf02a879 100644 --- a/src/Middleware/HttpOverrides/test/CertificateForwardingTest.cs +++ b/src/Middleware/HttpOverrides/test/CertificateForwardingTest.cs @@ -230,34 +230,5 @@ public async Task VerifyArrHeaderEncodedCertFailsOnBadEncoding() c.Request.Headers["X-Client-Cert"] = "OOPS" + Convert.ToBase64String(Certificates.SelfSignedValidWithNoEku.RawData); }); } - - private static class Certificates - { - public static X509Certificate2 SelfSignedValidWithClientEku { get; private set; } = - new X509Certificate2(GetFullyQualifiedFilePath("validSelfSignedClientEkuCertificate.cer")); - - public static X509Certificate2 SelfSignedValidWithNoEku { get; private set; } = - new X509Certificate2(GetFullyQualifiedFilePath("validSelfSignedNoEkuCertificate.cer")); - - public static X509Certificate2 SelfSignedValidWithServerEku { get; private set; } = - new X509Certificate2(GetFullyQualifiedFilePath("validSelfSignedServerEkuCertificate.cer")); - - public static X509Certificate2 SelfSignedNotYetValid { get; private set; } = - new X509Certificate2(GetFullyQualifiedFilePath("selfSignedNoEkuCertificateNotValidYet.cer")); - - public static X509Certificate2 SelfSignedExpired { get; private set; } = - new X509Certificate2(GetFullyQualifiedFilePath("selfSignedNoEkuCertificateExpired.cer")); - - private static string GetFullyQualifiedFilePath(string filename) - { - var filePath = Path.Combine(AppContext.BaseDirectory, filename); - if (!File.Exists(filePath)) - { - throw new FileNotFoundException(filePath); - } - return filePath; - } - } - } } diff --git a/src/Middleware/HttpOverrides/test/Microsoft.AspNetCore.HttpOverrides.Tests.csproj b/src/Middleware/HttpOverrides/test/Microsoft.AspNetCore.HttpOverrides.Tests.csproj index 0a5a370b79a0..c34f7f8600c2 100644 --- a/src/Middleware/HttpOverrides/test/Microsoft.AspNetCore.HttpOverrides.Tests.csproj +++ b/src/Middleware/HttpOverrides/test/Microsoft.AspNetCore.HttpOverrides.Tests.csproj @@ -5,6 +5,7 @@ + diff --git a/src/Security/Authentication/test/CertificateTests.cs b/src/Security/Authentication/test/CertificateTests.cs index 25c982a7c61f..8756730f45d9 100644 --- a/src/Security/Authentication/test/CertificateTests.cs +++ b/src/Security/Authentication/test/CertificateTests.cs @@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.Authentication.Certificate.Test { - public class ClientCertificateAuthenticationTests + public class ClientCertificateAuthenticationTests : LoggedTest { [Fact] @@ -159,7 +159,8 @@ public async Task VerifyValidSelfSignedWithServerFailsPurposeValidationIsOffButS Assert.Equal(HttpStatusCode.Forbidden, response.StatusCode); } - [Fact] + [ConditionalFact] + [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/32813", Queues = "All.Ubuntu")] public async Task VerifyExpiredSelfSignedFails() { using var host = await CreateHost( @@ -194,7 +195,7 @@ public async Task VerifyExpiredSelfSignedPassesIfDateRangeValidationIsDisabled() } [ConditionalFact] - [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/32813")] + [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/32813", Queues = "All.Ubuntu")] public async Task VerifyNotYetValidSelfSignedFails() { using var host = await CreateHost( @@ -787,7 +788,7 @@ public async Task VerifyValidationResultNeverCachedAfter30Min(bool cache) Assert.Equal(laterExpected, count.First().Value); } - private static async Task CreateHost( + private async Task CreateHost( CertificateAuthenticationOptions configureOptions, X509Certificate2 clientCertificate = null, Func handler = null, @@ -846,6 +847,8 @@ private static async Task CreateHost( }) .ConfigureServices(services => { + AddTestLogging(services); + AuthenticationBuilder authBuilder; if (configureOptions != null) { @@ -932,43 +935,5 @@ private static async Task CreateHost( return Task.CompletedTask; } }; - - private static class Certificates - { - public static X509Certificate2 SelfSignedPrimaryRoot { get; private set; } = - new X509Certificate2(GetFullyQualifiedFilePath("validSelfSignedPrimaryRootCertificate.cer")); - - public static X509Certificate2 SignedSecondaryRoot { get; private set; } = - new X509Certificate2(GetFullyQualifiedFilePath("validSignedSecondaryRootCertificate.cer")); - - public static X509Certificate2 SignedClient { get; private set; } = - new X509Certificate2(GetFullyQualifiedFilePath("validSignedClientCertificate.cer")); - - public static X509Certificate2 SelfSignedValidWithClientEku { get; private set; } = - new X509Certificate2(GetFullyQualifiedFilePath("validSelfSignedClientEkuCertificate.cer")); - - public static X509Certificate2 SelfSignedValidWithNoEku { get; private set; } = - new X509Certificate2(GetFullyQualifiedFilePath("validSelfSignedNoEkuCertificate.cer")); - - public static X509Certificate2 SelfSignedValidWithServerEku { get; private set; } = - new X509Certificate2(GetFullyQualifiedFilePath("validSelfSignedServerEkuCertificate.cer")); - - public static X509Certificate2 SelfSignedNotYetValid { get; private set; } = - new X509Certificate2(GetFullyQualifiedFilePath("selfSignedNoEkuCertificateNotValidYet.cer")); - - public static X509Certificate2 SelfSignedExpired { get; private set; } = - new X509Certificate2(GetFullyQualifiedFilePath("selfSignedNoEkuCertificateExpired.cer")); - - private static string GetFullyQualifiedFilePath(string filename) - { - var filePath = Path.Combine(AppContext.BaseDirectory, filename); - if (!File.Exists(filePath)) - { - throw new FileNotFoundException(filePath); - } - return filePath; - } - } } } - diff --git a/src/Security/Authentication/test/Microsoft.AspNetCore.Authentication.Test.csproj b/src/Security/Authentication/test/Microsoft.AspNetCore.Authentication.Test.csproj index bd8e2eaa3b03..a65c8ad9271f 100644 --- a/src/Security/Authentication/test/Microsoft.AspNetCore.Authentication.Test.csproj +++ b/src/Security/Authentication/test/Microsoft.AspNetCore.Authentication.Test.csproj @@ -13,6 +13,8 @@ + + PreserveNewest diff --git a/src/Shared/test/Certificates/Certificates.cs b/src/Shared/test/Certificates/Certificates.cs new file mode 100644 index 000000000000..8124e9cdf0f1 --- /dev/null +++ b/src/Shared/test/Certificates/Certificates.cs @@ -0,0 +1,113 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Security.Cryptography; +using System.Security.Cryptography.X509Certificates; + +public static class Certificates +{ + private static string ServerEku = "1.3.6.1.5.5.7.3.1"; + private static string ClientEku = "1.3.6.1.5.5.7.3.2"; + + static Certificates() + { + DateTimeOffset now = DateTimeOffset.UtcNow; + + SelfSignedPrimaryRoot = MakeCert( + "CN=Valid Self Signed Client EKU,OU=dev,DC=idunno-dev,DC=org", + ClientEku, + now); + + SignedSecondaryRoot = MakeCert( + "CN=Valid Signed Secondary Root EKU,OU=dev,DC=idunno-dev,DC=org", + ClientEku, + now); + + SelfSignedValidWithServerEku = MakeCert( + "CN=Valid Self Signed Server EKU,OU=dev,DC=idunno-dev,DC=org", + ServerEku, + now); + + SelfSignedValidWithClientEku = MakeCert( + "CN=Valid Self Signed Server EKU,OU=dev,DC=idunno-dev,DC=org", + ClientEku, + now); + + SelfSignedValidWithNoEku = MakeCert( + "CN=Valid Self Signed No EKU,OU=dev,DC=idunno-dev,DC=org", + eku: null, + now); + + SelfSignedExpired = MakeCert( + "CN=Expired Self Signed,OU=dev,DC=idunno-dev,DC=org", + eku: null, + now.AddYears(-2), + now.AddYears(-1)); + + SelfSignedNotYetValid = MakeCert( + "CN=Not Valid Yet Self Signed,OU=dev,DC=idunno-dev,DC=org", + eku: null, + now.AddYears(2), + now.AddYears(3)); + + SignedClient = MakeCert( + "CN=Valid Signed Client,OU=dev,DC=idunno-dev,DC=org", + ClientEku, + now); + + } + + private static readonly X509KeyUsageExtension s_digitalSignatureOnlyUsage = + new X509KeyUsageExtension(X509KeyUsageFlags.DigitalSignature, true); + + private static X509Certificate2 MakeCert( + string subjectName, + string eku, + DateTimeOffset now) + { + return MakeCert(subjectName, eku, now, now.AddYears(5)); + } + + private static X509Certificate2 MakeCert( + string subjectName, + string eku, + DateTimeOffset notBefore, + DateTimeOffset notAfter) + { + using (var key = RSA.Create(2048)) + { + CertificateRequest request = new CertificateRequest( + subjectName, + key, + HashAlgorithmName.SHA256, + RSASignaturePadding.Pkcs1); + + request.CertificateExtensions.Add(s_digitalSignatureOnlyUsage); + + if (eku != null) + { + request.CertificateExtensions.Add( + new X509EnhancedKeyUsageExtension( + new OidCollection { new Oid(eku, null) }, false)); + } + + return request.CreateSelfSigned(notBefore, notAfter); + } + } + + public static X509Certificate2 SelfSignedPrimaryRoot { get; private set; } + + public static X509Certificate2 SignedSecondaryRoot { get; private set; } + + public static X509Certificate2 SignedClient { get; private set; } + + public static X509Certificate2 SelfSignedValidWithClientEku { get; private set; } + + public static X509Certificate2 SelfSignedValidWithNoEku { get; private set; } + + public static X509Certificate2 SelfSignedValidWithServerEku { get; private set; } + + public static X509Certificate2 SelfSignedNotYetValid { get; private set; } + + public static X509Certificate2 SelfSignedExpired { get; private set; } +} diff --git a/src/Shared/test/Certificates/selfSignedNoEkuCertificateExpired.cer b/src/Shared/test/Certificates/selfSignedNoEkuCertificateExpired.cer deleted file mode 100644 index 81b6326d6f1e..000000000000 Binary files a/src/Shared/test/Certificates/selfSignedNoEkuCertificateExpired.cer and /dev/null differ diff --git a/src/Shared/test/Certificates/selfSignedNoEkuCertificateNotValidYet.cer b/src/Shared/test/Certificates/selfSignedNoEkuCertificateNotValidYet.cer deleted file mode 100644 index 19ee0adcef1b..000000000000 Binary files a/src/Shared/test/Certificates/selfSignedNoEkuCertificateNotValidYet.cer and /dev/null differ diff --git a/src/Shared/test/Certificates/validSelfSignedClientEkuCertificate.cer b/src/Shared/test/Certificates/validSelfSignedClientEkuCertificate.cer deleted file mode 100644 index db4bb5b90a07..000000000000 Binary files a/src/Shared/test/Certificates/validSelfSignedClientEkuCertificate.cer and /dev/null differ diff --git a/src/Shared/test/Certificates/validSelfSignedNoEkuCertificate.cer b/src/Shared/test/Certificates/validSelfSignedNoEkuCertificate.cer deleted file mode 100644 index 2be2a46d7992..000000000000 Binary files a/src/Shared/test/Certificates/validSelfSignedNoEkuCertificate.cer and /dev/null differ diff --git a/src/Shared/test/Certificates/validSelfSignedPrimaryRootCertificate.cer b/src/Shared/test/Certificates/validSelfSignedPrimaryRootCertificate.cer deleted file mode 100644 index a7420c8493b0..000000000000 --- a/src/Shared/test/Certificates/validSelfSignedPrimaryRootCertificate.cer +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDPTCCAiWgAwIBAgIQTmWeCzG8SbRJ0y+osLWwDjANBgkqhkiG9w0BAQsFADAp -MScwJQYDVQQDDB5WYWxpZCBTZWxmIFNpZ25lZCBQcmltYXJ5IFJvb3QwHhcNMjAw -MTIxMDAwMDAwWhcNNDUwMTIxMDAwMDAwWjApMScwJQYDVQQDDB5WYWxpZCBTZWxm -IFNpZ25lZCBQcmltYXJ5IFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQDMK6v6HsJ19iRlXIRQVBJiy9xnJWBddLjm+2RRkyiiffEitBExiXVyrQ8L -DlegQQH3oJR0xgXwisJctjpHHz54dfbw5LwC9j9EVtu/UgDgK4lo6X3WLNYMJ1pX -xxjGfXcyzGGhcI0KATlyWhWgOrZNFzE+v0KY/LtZvcZ290Y4X7MQLge+V/09Lohx -pj6vsHkpoK8tD8ksJp+O8jk45TXTxs4yo8BRXbIv0oMmuZ9+gVkiaGurCCe/o+nw -vjEQre9oKNFI9KOgen6l1152BVQaXMDd22vemGIz738Scl9kcBQhy1D0dPuL6QV3 -rR8HoNG3i0cuYxB4xgFF5GY2fhQBAgMBAAGjYTBfMA4GA1UdDwEB/wQEAwIBhjAd -BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDwYDVR0TAQH/BAUwAwEB/zAd -BgNVHQ4EFgQU/cAC4CkVEtEj2UCYMVS/mlFCdBAwDQYJKoZIhvcNAQELBQADggEB -AInTuEG8Kv2aWy7MJg/N/AvEmC7USMgTceFY+bKhVogYCE9m2VAa4Tz5DEEJwYQV -IBnEamQN1eWP/R7dxcg+gIck8TevZC6r7wKMUATCcn9Ti0I0Hxdplts9+YIksJJ7 -GbgyPS3UWnXl2D0374KrqTKSRjEXPOzaNyJ0HB4Pr9bibuSZ6Qc0gSltz7xOPFYS -7cedTqpABJXF6hZM7tDsxPfXmBHDy2sU84yXTQQghmU5S7fLWgy3so4g/DUqxffS -hmYPagc9DsmRGc2CCZz8IHlVc7byZ/NF4FgqB3IATbqYBAw4S/RyKHfWpURie2hC -OtYLcOTzVJG4uD3FGxyXP1k= ------END CERTIFICATE----- diff --git a/src/Shared/test/Certificates/validSelfSignedServerEkuCertificate.cer b/src/Shared/test/Certificates/validSelfSignedServerEkuCertificate.cer deleted file mode 100644 index 823000d4a147..000000000000 Binary files a/src/Shared/test/Certificates/validSelfSignedServerEkuCertificate.cer and /dev/null differ diff --git a/src/Shared/test/Certificates/validSignedClientCertificate.cer b/src/Shared/test/Certificates/validSignedClientCertificate.cer deleted file mode 100644 index a8034b05a8b9..000000000000 --- a/src/Shared/test/Certificates/validSignedClientCertificate.cer +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDTTCCAjWgAwIBAgIQaaZ/qIdm4K5JhFdDzzj53DANBgkqhkiG9w0BAQsFADAm -MSQwIgYDVQQDDBtWYWxpZCBTaWduZWQgU2Vjb25kYXJ5IFJvb3QwHhcNMjAwMTIx -MDAwMDAwWhcNMjIwMTIxMDAwMDAwWjAeMRwwGgYDVQQDDBNWYWxpZCBTaWduZWQg -Q2xpZW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu3dVA8q1GewW -i1K0Pw0gKqgv92RrX3JI6tTiLbU6FBpFdV63b1M3jgFhUSXJi7L8A/dxh2HwvKBJ -p+4KW7V+aXQXOY8iShQwrIud5IExFdtEjyGVtfFSvfYmDgbfjFKIGswxsLenlfEt -7mp303GH99JVFql1n7S+bib79vKkrjFBqixhnXisXjNlBlfH6kRBYiwQ1Gc5oyib -fZQkfakXo896UwIvQjc0W27c0tiGY6xyGLSesLih2yECADiGa+cc5rnRc7R9/IMB -N7o5gLpbe71WBopI1uq1VSuXwH9xy0bq307dZEMaX0b4SqhkuQHsBVtOV1mYAskE -K3W8VUZy7QIDAQABo38wfTAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB -BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUx9BZtKX7 -/z2mmoO2Ec127GkibsAwHQYDVR0OBBYEFDmtlIR/fVwtDseOG/NNQ/QEv3/PMA0G -CSqGSIb3DQEBCwUAA4IBAQBQMhsmlwF5JKEkfay7uLCH9IrJZGk1ZDxK/qcVaOk5 -mQ4IcCBq+Wp7Hg/D92b5diwlkXJDrYZZ7OHSEcD/PrxUKyZkoBQIvlNKDgmjp0wV -lXYUISZHaXbWZ0XNFAS0KyqoLZ8c2xmhuI21L3hyOoRcoqKleO1kzYfb2seBaRHk -Iu4la0opKGFoI/o7gC9uLrcizpj3SoPF9+vJz/FJmeBbKzKe1zA479a74tjfOODy -LZVbsGDhKRQ02GftFqXRl257hVX+6etQiOePj7S++R1B/QXRjvKrOTMs/NpMLAeK -8uWXSx+boL/8j/3u+65Udh614C5dXSrgDjMGJ7/OchC1 ------END CERTIFICATE----- diff --git a/src/Shared/test/Certificates/validSignedSecondaryRootCertificate.cer b/src/Shared/test/Certificates/validSignedSecondaryRootCertificate.cer deleted file mode 100644 index ef31f31a98da..000000000000 --- a/src/Shared/test/Certificates/validSignedSecondaryRootCertificate.cer +++ /dev/null @@ -1,21 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDXTCCAkWgAwIBAgIQE2HFYAdh7b5NSBsomRG9cjANBgkqhkiG9w0BAQsFADAp -MScwJQYDVQQDDB5WYWxpZCBTZWxmIFNpZ25lZCBQcmltYXJ5IFJvb3QwHhcNMjAw -MTIxMDAwMDAwWhcNMzUwMTIxMDAwMDAwWjAmMSQwIgYDVQQDDBtWYWxpZCBTaWdu -ZWQgU2Vjb25kYXJ5IFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCw1Wvr8SeMdXM0ZMN3/NyZhGzXC/IcqJyI1tM1IQNpO9OxJWDkfxGh14ORRZ3f -4pTdXOXRCcPYxHk8d3kuH9EEo78WRrLV4XHw31vGrQkHAPn3ZMl/Qre1mYvzkKbn -DIpScfPYMuqydOvx1YSsTP2G37pNszOAXTkHPPH9smTo/W7Dv/1mnroAru/FU+Hv -zOMqNirIz1EpCEopLeBS41lcohyuCMzHPKJJZOnNbV3wV3AnpEriRLQVNO9WiaGs -Nwj8ffai9M4vncRQ9wLK866lx6iA7istjod9hourKQWC1284pv+RLtIeJaGrpXkV -mSbk9ebabz1fPC2/WgPtd1JVAgMBAAGjgYMwgYAwDgYDVR0PAQH/BAQDAgGGMB0G -A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAPBgNVHRMBAf8EBTADAQH/MB8G -A1UdIwQYMBaAFP3AAuApFRLRI9lAmDFUv5pRQnQQMB0GA1UdDgQWBBTH0Fm0pfv/ -Paaag7YRzXbsaSJuwDANBgkqhkiG9w0BAQsFAAOCAQEAT5fEUkVP3Allay2ODcjQ -GzM135mV718DS84B4bVDBWr+CW9i89bzYgRZgClTABqddotHEqmLEan/bV4suBSt -QuACy7m39Q8kj/S/ydBhvHx9fxqWnAsacQ+fuAPviBQ11UZB19zWj1zikw1/Xfow -V9OIf4gYtY2aBPyygWN3HwpszhJWQIuFGl4rwqAxli7Wp2eUBXxDtYBHAscsclG4 -1rduhiV5eUZXZ11mbA7KBH9XwWKoFpRza049I0WC+V0PWqlK4H4P0QzCWUlXmTC8 -kN04cnPtyciOlP9J3Uro5xTXaDC0Cge82JmRxnCovGKGBEdjIxMC4nbPB4emmcth -BA== ------END CERTIFICATE----- diff --git a/src/Testing/src/xunit/SkipOnHelixAttribute.cs b/src/Testing/src/xunit/SkipOnHelixAttribute.cs index a9a6b2fafccf..803456e89f63 100644 --- a/src/Testing/src/xunit/SkipOnHelixAttribute.cs +++ b/src/Testing/src/xunit/SkipOnHelixAttribute.cs @@ -57,6 +57,11 @@ private bool ShouldSkip() return true; } + if (Queues.Contains("All.Ubuntu") && targetQueue.StartsWith("ubuntu", StringComparison.OrdinalIgnoreCase)) + { + return true; + } + return Queues.ToLowerInvariant().Split(';').Contains(targetQueue); }