static MonoValidationTestParameters CreateParameters(ValidationTestCategory category, MonoValidationTestType type, params object[] args) { var sb = new StringBuilder(); sb.Append(type); foreach (var arg in args) { sb.AppendFormat(":{0}", arg); } var name = sb.ToString(); return(new MonoValidationTestParameters(category, type, name)); }
public static IEnumerable <MonoValidationTestParameters> GetParameters(TestContext ctx, ValidationTestCategory category) { return(GetTestTypes(ctx, category).Select(t => Create(ctx, category, t))); }
public static IEnumerable <MonoValidationTestType> GetTestTypes(TestContext ctx, ValidationTestCategory category) { switch (category) { case ValidationTestCategory.Default: yield return(MonoValidationTestType.NoHost); yield return(MonoValidationTestType.EmptyHost); yield return(MonoValidationTestType.WrongHost); yield return(MonoValidationTestType.Success); yield return(MonoValidationTestType.RejectSelfSigned); yield return(MonoValidationTestType.RejectHamillerTube); yield return(MonoValidationTestType.TestRunnerCallback); yield break; case ValidationTestCategory.AppleTls: yield return(MonoValidationTestType.TestRunnerCallbackChain); yield break; case ValidationTestCategory.MartinTest: yield return(MonoValidationTestType.MartinTest); yield break; default: ctx.AssertFail("Unspported validation category: '{0}.", category); yield break; } }
static MonoValidationTestParameters Create(TestContext ctx, ValidationTestCategory category, MonoValidationTestType type) { var parameters = CreateParameters(category, type); switch (type) { case MonoValidationTestType.MartinTest: parameters.Host = "tlstest-1.xamdev.com"; parameters.Add(CertificateResourceType.TlsTestXamDevNew); parameters.Add(CertificateResourceType.TlsTestXamDevCA); parameters.UseTestRunnerCallback = true; parameters.ExpectSuccess = true; break; case MonoValidationTestType.NoHost: parameters.Host = null; parameters.Add(CertificateResourceType.TlsTestXamDevNew); parameters.Add(CertificateResourceType.TlsTestXamDevCA); parameters.ExpectSuccess = true; break; case MonoValidationTestType.EmptyHost: parameters.Host = string.Empty; parameters.Add(CertificateResourceType.TlsTestXamDevNew); parameters.Add(CertificateResourceType.TlsTestXamDevCA); /* * Older versions of AppleTls prior to Xamarin.iOS 10 incorrectly * returned success. */ parameters.ExpectSuccess = false; break; case MonoValidationTestType.WrongHost: parameters.Host = "invalid.xamdev-error.com"; parameters.Add(CertificateResourceType.TlsTestXamDevNew); parameters.Add(CertificateResourceType.TlsTestXamDevCA); parameters.ExpectSuccess = false; break; case MonoValidationTestType.Success: parameters.Host = "tlstest-1.xamdev.com"; parameters.Add(CertificateResourceType.TlsTestXamDevNew); parameters.Add(CertificateResourceType.TlsTestXamDevCA); parameters.ExpectSuccess = true; break; case MonoValidationTestType.RejectSelfSigned: parameters.Host = string.Empty; parameters.Add(CertificateResourceType.SelfSignedServerCertificate); parameters.ExpectSuccess = false; break; case MonoValidationTestType.RejectHamillerTube: parameters.Host = string.Empty; parameters.Add(CertificateResourceType.ServerCertificateFromLocalCA); parameters.Add(CertificateResourceType.HamillerTubeCA); parameters.ExpectSuccess = false; break; case MonoValidationTestType.TestRunnerCallback: parameters.Host = "tlstest-1.xamdev.com"; parameters.Add(CertificateResourceType.TlsTestXamDevNew); parameters.Add(CertificateResourceType.TlsTestXamDevCA); parameters.UseTestRunnerCallback = true; parameters.ExpectSuccess = true; break; case MonoValidationTestType.TestRunnerCallbackChain: parameters.Host = "tlstest-1.xamdev.com"; parameters.Add(CertificateResourceType.TlsTestXamDevNew); parameters.Add(CertificateResourceType.TlsTestXamDevCA); parameters.AddExpectedChainEntry(CertificateResourceType.TlsTestXamDevNew); parameters.AddExpectedChainEntry(CertificateResourceType.TlsTestXamDevCA); parameters.UseTestRunnerCallback = true; parameters.ExpectSuccess = true; break; default: ctx.AssertFail("Unsupported validation type: '{0}'.", type); break; } return(parameters); }
public static IEnumerable <BoringValidationTestType> GetTestTypes(TestContext ctx, ValidationTestCategory category) { switch (category) { case ValidationTestCategory.Default: yield return(BoringValidationTestType.Simple); yield return(BoringValidationTestType.NoTrustedRoots); yield return(BoringValidationTestType.ExplicitTrustedRoot); yield return(BoringValidationTestType.SslClientParameters); yield return(BoringValidationTestType.WrongPurpose); yield return(BoringValidationTestType.BeforeExpirationDate); yield return(BoringValidationTestType.AfterExpirationDate); yield return(BoringValidationTestType.CorrectHost); yield return(BoringValidationTestType.IncorrectHost); yield return(BoringValidationTestType.MissingIntermediateCert); yield return(BoringValidationTestType.WrongChainOrder); yield return(BoringValidationTestType.IntermediateServer); yield return(BoringValidationTestType.IntermediateServerChain); yield return(BoringValidationTestType.SelfSignedServer); yield return(BoringValidationTestType.MartinTest); yield break; default: ctx.AssertFail("Unspported validation category: '{0}.", category); yield break; } }
static BoringValidationTestParameters Create(TestContext ctx, ValidationTestCategory category, BoringValidationTestType type) { var parameters = CreateParameters(category, type); switch (type) { case BoringValidationTestType.Simple: parameters.Add(CertificateResourceType.TlsTestXamDevNew); parameters.Add(CertificateResourceType.TlsTestXamDevCA); parameters.VerifyParamType = BoringVerifyParamType.None; parameters.AddTrustedRoots = true; parameters.ExpectSuccess = true; break; case BoringValidationTestType.SslClientParameters: parameters.Add(CertificateResourceType.TlsTestXamDevNew); parameters.Add(CertificateResourceType.TlsTestXamDevCA); parameters.VerifyParamType = BoringVerifyParamType.SslClient; parameters.AddTrustedRoots = true; parameters.ExpectSuccess = true; break; case BoringValidationTestType.NoTrustedRoots: parameters.Add(CertificateResourceType.TlsTestXamDevNew); parameters.Add(CertificateResourceType.TlsTestXamDevCA); parameters.AddTrustedRoots = false; parameters.ExpectedResult = BtlsX509Error.UNABLE_TO_GET_ISSUER_CERT_LOCALLY; break; case BoringValidationTestType.ExplicitTrustedRoot: parameters.Add(CertificateResourceType.ServerCertificateFromLocalCA); parameters.AddTrustedRoot(CertificateResourceType.HamillerTubeCA); parameters.ExpectSuccess = true; break; case BoringValidationTestType.BeforeExpirationDate: parameters.Add(CertificateResourceType.TlsTestXamDevExpired); parameters.Add(CertificateResourceType.TlsTestXamDevCA); parameters.VerifyParamType = BoringVerifyParamType.CopySslServer; parameters.CheckTime = new DateTime(2016, 3, 17); parameters.AddTrustedRoots = true; parameters.ExpectSuccess = true; break; case BoringValidationTestType.AfterExpirationDate: parameters.Add(CertificateResourceType.TlsTestXamDevExpired); parameters.Add(CertificateResourceType.TlsTestXamDevCA); parameters.VerifyParamType = BoringVerifyParamType.CopySslServer; parameters.CheckTime = new DateTime(2016, 4, 17); parameters.ExpectedResult = BtlsX509Error.CERT_HAS_EXPIRED; parameters.AddTrustedRoots = true; break; case BoringValidationTestType.WrongPurpose: parameters.Add(CertificateResourceType.ServerCertificateFromLocalCA); parameters.AddTrustedRoot(CertificateResourceType.HamillerTubeCA); parameters.VerifyParamType = BoringVerifyParamType.SslClient; parameters.ExpectedResult = BtlsX509Error.INVALID_PURPOSE; break; case BoringValidationTestType.CorrectHost: parameters.Add(CertificateResourceType.ServerCertificateFromLocalCA); parameters.AddTrustedRoot(CertificateResourceType.HamillerTubeCA); parameters.VerifyParamType = BoringVerifyParamType.CopySslServer; parameters.Host = "Hamiller-Tube.local"; parameters.ExpectSuccess = true; break; case BoringValidationTestType.IncorrectHost: parameters.Add(CertificateResourceType.ServerCertificateFromLocalCA); parameters.AddTrustedRoot(CertificateResourceType.HamillerTubeCA); parameters.VerifyParamType = BoringVerifyParamType.CopySslServer; parameters.Host = "Hamiller-TubeX.local"; parameters.ExpectedResult = BtlsX509Error.HOSTNAME_MISMATCH; break; case BoringValidationTestType.MissingIntermediateCert: parameters.Add(CertificateResourceType.IntermediateServer); parameters.AddTrustedRoot(CertificateResourceType.HamillerTubeCA); parameters.VerifyParamType = BoringVerifyParamType.CopySslServer; parameters.Host = "intermediate-server.local"; parameters.ExpectedResult = BtlsX509Error.UNABLE_TO_GET_ISSUER_CERT_LOCALLY; break; case BoringValidationTestType.IntermediateServer: parameters.Add(CertificateResourceType.IntermediateServer); parameters.Add(CertificateResourceType.IntermediateCA); parameters.AddTrustedRoot(CertificateResourceType.HamillerTubeCA); parameters.VerifyParamType = BoringVerifyParamType.CopySslServer; parameters.Host = "intermediate-server.local"; parameters.ExpectSuccess = true; break; case BoringValidationTestType.IntermediateServerChain: parameters.Add(CertificateResourceType.IntermediateServer); parameters.Add(CertificateResourceType.IntermediateCA); parameters.AddTrustedRoot(CertificateResourceType.HamillerTubeCA); parameters.AddExpectedChainEntry(CertificateResourceType.IntermediateServer); parameters.AddExpectedChainEntry(CertificateResourceType.IntermediateCA); parameters.AddExpectedChainEntry(CertificateResourceType.HamillerTubeCA); parameters.VerifyParamType = BoringVerifyParamType.CopySslServer; parameters.Host = "intermediate-server.local"; parameters.ExpectSuccess = true; break; case BoringValidationTestType.WrongChainOrder: parameters.Add(CertificateResourceType.IntermediateCA); parameters.Add(CertificateResourceType.IntermediateServer); parameters.AddTrustedRoot(CertificateResourceType.HamillerTubeCA); parameters.VerifyParamType = BoringVerifyParamType.CopySslServer; parameters.Host = "intermediate-server.local"; parameters.ExpectedResult = BtlsX509Error.INVALID_PURPOSE; break; case BoringValidationTestType.SelfSignedServer: parameters.Add(CertificateResourceType.SelfSignedServerCertificate); parameters.VerifyParamType = BoringVerifyParamType.CopySslServer; parameters.ExpectedResult = BtlsX509Error.DEPTH_ZERO_SELF_SIGNED_CERT; break; case BoringValidationTestType.MartinTest: parameters.Add(CertificateResourceType.TlsTestXamDevNew); parameters.Add(CertificateResourceType.TlsTestXamDevCA); parameters.AddTrustedRoots = true; parameters.ExpectSuccess = true; break; default: ctx.AssertFail("Unsupported validation type: '{0}'.", type); break; } return(parameters); }
public ValidationTestCategoryAttribute(ValidationTestCategory category) { this.category = category; this.identifier = Type.Name; }
public ValidationTestParameters(ValidationTestCategory category, string identifier) { Category = category; Identifier = identifier; }
public MonoValidationTestParameters(ValidationTestCategory category, MonoValidationTestType type, string identifier) : base(category, identifier) { Type = type; }