public async Task GetCertificateLooksForDomainsAsync()
        {
            const string Domain1 = "github.com";
            const string Domain2 = "azure.com";

            var secretClient        = new Mock <SecretClient>();
            var secretClientFactory = new Mock <ISecretClientFactory>();

            secretClientFactory.Setup(c => c.Create()).Returns(secretClient.Object);
            var options = Options.Create(new LettuceEncryptOptions());

            options.Value.DomainNames = new[] { Domain1, Domain2 };

            var repository = new AzureKeyVaultCertificateRepository(
                Mock.Of <ICertificateClientFactory>(),
                secretClientFactory.Object, options,
                NullLogger <AzureKeyVaultCertificateRepository> .Instance);

            var certificates = await repository.GetCertificatesAsync(CancellationToken.None);

            Assert.Empty(certificates);

            secretClient.Verify(t => t.GetSecretAsync(AzureKeyVaultCertificateRepository.NormalizeHostName(Domain1),
                                                      null, CancellationToken.None));
            secretClient.Verify(t => t.GetSecretAsync(AzureKeyVaultCertificateRepository.NormalizeHostName(Domain2),
                                                      null, CancellationToken.None));
        }
        public async Task ImportCertificateChecksDuplicate()
        {
            const string Domain1 = "github.com";
            const string Domain2 = "azure.com";

            var certClient        = new Mock <CertificateClient>();
            var certClientFactory = new Mock <ICertificateClientFactory>();

            certClientFactory.Setup(c => c.Create()).Returns(certClient.Object);
            var options = Options.Create(new LettuceEncryptOptions());

            options.Value.DomainNames = new[] { Domain1, Domain2 };

            var repository = new AzureKeyVaultCertificateRepository(
                certClientFactory.Object,
                Mock.Of <ISecretClientFactory>(),
                options,
                NullLogger <AzureKeyVaultCertificateRepository> .Instance);

            foreach (var domain in options.Value.DomainNames)
            {
                var certificateToSave = TestUtils.CreateTestCert(domain);
                await repository.SaveAsync(certificateToSave, CancellationToken.None);
            }

            certClient.Verify(t => t.GetCertificateAsync(AzureKeyVaultCertificateRepository.NormalizeHostName(Domain1),
                                                         CancellationToken.None));
            certClient.Verify(t => t.GetCertificateAsync(AzureKeyVaultCertificateRepository.NormalizeHostName(Domain2),
                                                         CancellationToken.None));
        }
示例#3
0
        public async Task GetCertificateLooksForDomainsAsync()
        {
            const string Domain1 = "https://github.com";
            const string Domain2 = "https://azure.com";

            var client  = new Mock <CertificateClient>();
            var logger  = new Mock <ILogger <AzureKeyVaultCertificateRepository> >();
            var options = new Mock <IOptions <LetsEncryptOptions> >();

            options.Setup(o => o.Value).Returns(new LetsEncryptOptions
            {
                DomainNames = new[] { Domain1, Domain2 }
            });

            var repository = new AzureKeyVaultCertificateRepository(client.Object, options.Object, logger.Object);

            var certificates = await repository.GetCertificatesAsync(CancellationToken.None);

            Assert.Empty(certificates);

            client.Verify(t => t.GetCertificateAsync(AzureKeyVaultCertificateRepository.NormalizeHostName(Domain1), CancellationToken.None));
            client.Verify(t => t.GetCertificateAsync(AzureKeyVaultCertificateRepository.NormalizeHostName(Domain2), CancellationToken.None));
        }