public void ValidateIssuerCertStores()
        {
            X509 validCertInfo1 = new X509()
            {
                ClusterCertificateCommonNames = ConstructServerCns("clusterCN", ""),
                ServerCertificateCommonNames  = ConstructServerCns("serverCN", ""),
                ClientCertificateCommonNames  = new List <ClientCertificateCommonName>()
                {
                    new ClientCertificateCommonName()
                    {
                        CertificateCommonName = "clientCN", CertificateIssuerThumbprint = ""
                    }
                },
                ClusterCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClusterIssuer", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                },
                ServerCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ServerIssuer", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                },
                ClientCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(validCertInfo1); }, null);

            X509 validCertInfo2 = new X509()
            {
                ClientCertificateCommonNames = new List <ClientCertificateCommonName>()
                {
                    new ClientCertificateCommonName()
                    {
                        CertificateCommonName = "clientCN", CertificateIssuerThumbprint = ""
                    },
                    new ClientCertificateCommonName()
                    {
                        CertificateCommonName = "clientCN", CertificateIssuerThumbprint = ""
                    }
                },
                ClientCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "Issuer1", X509StoreNames = "My"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "Issuer2", X509StoreNames = "My"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "Issuer3", X509StoreNames = "My"
                    }
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(validCertInfo2); }, null);

            X509 invalidCertInfo1 = new X509()
            {
                ClusterCertificateCommonNames = ConstructServerCns("clusterCN", ""),
                ServerCertificateCommonNames  = ConstructServerCns("serverCN", ""),
                ClientCertificateCommonNames  = new List <ClientCertificateCommonName>()
                {
                    new ClientCertificateCommonName()
                    {
                        CertificateCommonName = "clientCN", CertificateIssuerThumbprint = ""
                    }
                },
                ClusterCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClusterIssuer1", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClusterIssuer1", X509StoreNames = "My"
                    }
                },
                ServerCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ServerIssuer", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                },
                ClientCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo1); }, ClusterManagementErrorCode.DupIssuerCertificateCN);

            X509 invalidCertInfo2 = new X509()
            {
                ClusterCertificateCommonNames = ConstructServerCns("clusterCN", ""),
                ServerCertificateCommonNames  = ConstructServerCns("serverCN", ""),
                ClientCertificateCommonNames  = new List <ClientCertificateCommonName>()
                {
                    new ClientCertificateCommonName()
                    {
                        CertificateCommonName = "clientCN", CertificateIssuerThumbprint = ""
                    }
                },
                ClusterCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClusterIssuer1", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                },
                ServerCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ServerIssuer1", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ServerIssuer1", X509StoreNames = "My"
                    }
                },
                ClientCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo2); }, ClusterManagementErrorCode.DupIssuerCertificateCN);

            X509 invalidCertInfo3 = new X509()
            {
                ClusterCertificateCommonNames = ConstructServerCns("clusterCN", ""),
                ServerCertificateCommonNames  = ConstructServerCns("serverCN", ""),
                ClientCertificateCommonNames  = new List <ClientCertificateCommonName>()
                {
                    new ClientCertificateCommonName()
                    {
                        CertificateCommonName = "clientCN", CertificateIssuerThumbprint = ""
                    }
                },
                ClusterCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClusterIssuer1", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                },
                ServerCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ServerIssuer1", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ServerIssuer2", X509StoreNames = "My"
                    }
                },
                ClientCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClientIssuer1", X509StoreNames = "My"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClientIssuer1", X509StoreNames = "My, Root"
                    },
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo3); }, ClusterManagementErrorCode.DupIssuerCertificateCN);

            X509 invalidCertInfo4 = new X509()
            {
                ClusterCertificateCommonNames = ConstructServerCns("clusterCN", ""),
                ServerCertificateCommonNames  = ConstructServerCns("serverCN", ""),
                ClientCertificateCommonNames  = new List <ClientCertificateCommonName>()
                {
                    new ClientCertificateCommonName()
                    {
                        CertificateCommonName = "clientCN", CertificateIssuerThumbprint = ""
                    }
                },
                ClusterCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClusterIssuer1", X509StoreNames = "My, My"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                },
                ServerCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ServerIssuer1", X509StoreNames = "My, Root, InvalidStore"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                },
                ClientCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo4); }, ClusterManagementErrorCode.DupIssuerCertificateStore);

            X509 invalidCertInfo5 = new X509()
            {
                ClusterCertificateCommonNames  = ConstructServerCns("clusterCN", ""),
                ClusterCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo5); }, ClusterManagementErrorCode.IssuerCNCannotBeNull);

            X509 invalidCertInfo6 = new X509()
            {
                ClusterCertificateCommonNames  = ConstructServerCns("clusterCN", ""),
                ClusterCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = ""
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClusterIssuer", X509StoreNames = "My"
                    }
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo6); }, ClusterManagementErrorCode.IssuerStoreNameCannotBeNull);

            X509 invalidCertInfo7 = new X509()
            {
                ClusterCertificateCommonNames  = ConstructServerCns("clusterCN", ""),
                ClusterCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClusterIssuer1", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClusterIssuer2", X509StoreNames = "My"
                    }
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo7); }, ClusterManagementErrorCode.IssuerCertStoreCNMoreThan2);

            X509 invalidCertInfo8 = new X509()
            {
                ClusterCertificateCommonNames = ConstructServerCns("clusterCN", ""),
                ClientCertificateCommonNames  = new List <ClientCertificateCommonName>()
                {
                    new ClientCertificateCommonName()
                    {
                        CertificateCommonName = "clientCN", CertificateIssuerThumbprint = ""
                    }
                },
                ClusterCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClusterIssuer1", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                },
                ServerCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ServerIssuer1", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                },
                ClientCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo8); }, ClusterManagementErrorCode.IssuerCertStoreSpecifiedWithoutCommonNameCertificate);

            X509 invalidCertInfo9 = new X509()
            {
                ClusterCertificateCommonNames = ConstructServerCns("clusterCN", ""),
                ServerCertificateCommonNames  = ConstructServerCns("serverCN", ""),
                ClientCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo9); }, ClusterManagementErrorCode.IssuerCertStoreSpecifiedWithoutCommonNameCertificate);

            X509 invalidCertInfo10 = new X509()
            {
                ClientCertificateCommonNames = new List <ClientCertificateCommonName>()
                {
                    new ClientCertificateCommonName()
                    {
                        CertificateCommonName = "clientCN", CertificateIssuerThumbprint = ""
                    }
                },
                ClientCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClientIssuer", X509StoreNames = "My"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClientIssuer", X509StoreNames = "My"
                    }
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo10); }, ClusterManagementErrorCode.DupIssuerCertificateCN);

            X509 invalidCertInfo11 = new X509()
            {
                ClientCertificateCommonNames = new List <ClientCertificateCommonName>()
                {
                    new ClientCertificateCommonName()
                    {
                        CertificateCommonName = "clientCN", CertificateIssuerThumbprint = ""
                    }
                },
                ClientCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "clientIssuer", X509StoreNames = "My"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClientIssuer", X509StoreNames = "My"
                    }
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo11); }, ClusterManagementErrorCode.DupIssuerCertificateCN);

            X509 invalidCertInfo12 = new X509()
            {
                ClientCertificateCommonNames = new List <ClientCertificateCommonName>()
                {
                    new ClientCertificateCommonName()
                    {
                        CertificateCommonName = "clientCN", CertificateIssuerThumbprint = "", IsAdmin = true
                    }
                },
                ClientCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClientIssuer1", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClientIssuer2", X509StoreNames = "Root, root"
                    },
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo12); }, ClusterManagementErrorCode.DupIssuerCertificateStore);

            X509 invalidCertInfo13 = new X509()
            {
                ClusterCertificateCommonNames  = ConstructServerCns("clusterCN", "59EC792004C56225DD6691132C713194D28098F1,59EC792004C56225DD6691132C713194D28098F1"),
                ClusterCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClusterIssuer1", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo13); }, ClusterManagementErrorCode.IssuerCertStoreAndIssuerPinningCannotBeTogether);

            X509 invalidCertInfo14 = new X509()
            {
                ServerCertificateCommonNames  = ConstructServerCns("serverCN", "59EC792004C56225DD6691132C713194D28098F1,59EC792004C56225DD6691132C713194D28098F1"),
                ServerCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ServerIssuer1", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "", X509StoreNames = "My"
                    }
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo14); }, ClusterManagementErrorCode.IssuerCertStoreAndIssuerPinningCannotBeTogether);

            X509 invalidCertInfo15 = new X509()
            {
                ClientCertificateCommonNames = new List <ClientCertificateCommonName>()
                {
                    new ClientCertificateCommonName()
                    {
                        CertificateCommonName = "clientCN", CertificateIssuerThumbprint = "59EC792004C56225DD6691132C713194D28098F1,59EC792004C56225DD6691132C713194D28098F1", IsAdmin = true
                    }
                },
                ClientCertificateIssuerStores = new List <CertificateIssuerStore>
                {
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClientIssuer1", X509StoreNames = "My, Root"
                    },
                    new CertificateIssuerStore()
                    {
                        IssuerCommonName = "ClientIssuer2", X509StoreNames = "root"
                    },
                }
            };

            this.RunWrapper(delegate { SettingsValidator.ValidateIssuerCertStore(invalidCertInfo15); }, ClusterManagementErrorCode.IssuerCertStoreAndIssuerPinningCannotBeTogether);
        }