File: SetupValidationTests.4.1.1.cs
Web Access
Project: src\src\System.Private.ServiceModel\tests\Common\Scenarios\ScenarioTests.Common.Tests.csproj (ScenarioTests.Common.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
 
using System;
using System.Security.Cryptography.X509Certificates;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Security;
using Infrastructure.Common;
using Xunit;
 
public class SetupValidationTests : ConditionalWcfTest
{
    //[todo: arcade] Resolve getting these tests running in Arcade.
    // Had to re-name the test project to end in "Tests" for Arcade to pick it up and run the tests.
    // But two of the tests fail and one is skipped, this prevents all the rest of the scenario tests from running.
    //[WcfFact]
    //[Condition(nameof(Root_Certificate_Installed))]
    //[OuterLoop]
    //public static void Root_Certificate_Correctly_Installed()
    //{
    //    string testString = "Hello";
    //    CustomBinding binding = null;
    //    ChannelFactory<IWcfService> factory = null;
    //    IWcfService serviceProxy = null;
 
    //    try
    //    {
    //        // *** SETUP *** \\
    //        binding = new CustomBinding(new TextMessageEncodingBindingElement(), new HttpsTransportBindingElement());
    //        factory = new ChannelFactory<IWcfService>(binding, new EndpointAddress(Endpoints.HttpsSoap12_Address));
    //        serviceProxy = factory.CreateChannel();
 
    //        // *** EXECUTE *** \\
    //        string result = serviceProxy.Echo(testString);
 
    //        // *** VALIDATE *** \\
    //        Assert.NotNull(result);
    //        Assert.Equal(testString, result);
 
    //        // *** CLEANUP *** \\
    //        factory.Close();
    //        ((ICommunicationObject)serviceProxy).Close();
    //    }
    //    finally
    //    {
    //        // *** ENSURE CLEANUP *** \\
    //        ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)serviceProxy, factory);
    //    }
    //}
 
    //[WcfFact]
    //[Issue(1886, OS = OSID.OSX)]
    //[Condition(nameof(Client_Certificate_Installed))]
    //[OuterLoop]
    //public static void Client_Certificate_Correctly_Installed()
    //{
    //    string clientCertThumb = null;
    //    EndpointAddress endpointAddress = null;
    //    string testString = "Hello";
    //    ChannelFactory<IWcfService> factory = null;
    //    IWcfService serviceProxy = null;
 
    //    try
    //    {
    //        // *** SETUP *** \\
    //        NetTcpBinding binding = new NetTcpBinding(SecurityMode.Transport);
    //        binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate;
 
    //        endpointAddress = new EndpointAddress(new Uri(Endpoints.Tcp_ClientCredentialType_Certificate_Address),
    //            new DnsEndpointIdentity(Endpoints.Tcp_VerifyDNS_HostName));
    //        clientCertThumb = ServiceUtilHelper.ClientCertificate.Thumbprint;
 
    //        factory = new ChannelFactory<IWcfService>(binding, endpointAddress);
    //        factory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
    //        factory.Credentials.ClientCertificate.SetCertificate(
    //            StoreLocation.CurrentUser,
    //            StoreName.My,
    //            X509FindType.FindByThumbprint,
    //            clientCertThumb);
 
    //        serviceProxy = factory.CreateChannel();
 
    //        // *** EXECUTE *** \\
    //        string result = serviceProxy.Echo(testString);
 
    //        // *** VALIDATE *** \\
    //        Assert.Equal(testString, result);
 
    //        // *** CLEANUP *** \\
    //        ((ICommunicationObject)serviceProxy).Close();
    //        factory.Close();
    //    }
    //    finally
    //    {
    //        // *** ENSURE CLEANUP *** \\
    //        ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)serviceProxy, factory);
    //    }
    //}
 
    //[WcfFact]
    //[Issue(1945, OS = OSID.OSX)]
    //[Condition(nameof(Peer_Certificate_Installed))]
    //[OuterLoop]
    //public static void Peer_Certificate_Correctly_Installed()
    //{
    //    // *** SETUP *** \\
    //    InvalidOperationException exception = null;
 
    //    // *** EXECUTE *** \\
    //    try
    //    {
    //        DateTime now = DateTime.Now;
    //        X509Certificate2 certificate = ServiceUtilHelper.PeerCertificate;
    //        StoreName storeName = StoreName.TrustedPeople;
    //        StoreLocation storeLocation = StoreLocation.CurrentUser;
 
    //        Assert.True(certificate != null, "Certificate is null");
    //        Assert.True(now > certificate.NotBefore,
    //               String.Format("The current date {{0}} is earlier than NotBefore ({1})",
    //                             now,
    //                             certificate.NotBefore));
 
    //        Assert.True(now < certificate.NotAfter,
    //        String.Format("The current date {{0}} is later than NotAfter ({1})",
    //                     now,
    //                     certificate.NotAfter));
 
    //        using (X509Store store = new X509Store(storeName, storeLocation))
    //        {
    //            store.Open(OpenFlags.ReadOnly);
    //            X509Certificate2Collection certificates = store.Certificates.Find(X509FindType.FindByThumbprint, certificate.Thumbprint, validOnly: true);
    //            Assert.True(certificates.Count == 1,
    //                        String.Format("Did not find valid certificate with thumbprint {0} in StoreName '{1}', StoreLocation '{2}'",
    //                                      certificate.Thumbprint,
    //                                      storeName,
    //                                      storeLocation));
    //        }
 
    //        using (X509Store store = new X509Store(StoreName.Disallowed, storeLocation))
    //        {
    //            store.Open(OpenFlags.ReadOnly);
    //            X509Certificate2Collection certificates = store.Certificates.Find(X509FindType.FindByThumbprint, certificate.Thumbprint, validOnly: false);
    //            Assert.True(certificates.Count == 0, "Certificate was found in Disallowed store.");
    //        }
    //    }
    //    catch (InvalidOperationException e)
    //    {
    //        exception = e;
    //    }
 
    //    // *** VALIDATE *** \\
    //    // Validate rather than allowing an exception to propagate
    //    // to be clear the exception was anticipated. 
    //    Assert.True(exception == null, exception == null ? String.Empty : exception.ToString());
    //}
}