コード例 #1
0
        public CertificateProvider(
            LetsEncryptOptions options,
            ICertificateValidator certificateValidator,
            IPersistenceService persistenceService,
            ILetsEncryptClientFactory clientFactory,
            ILogger <CertificateProvider> logger)
        {
            var domains = options.Domains?.Distinct().ToArray();

            if (domains == null || domains.Length == 0)
            {
                throw new ArgumentException("Domains configuration invalid");
            }

            _domains              = domains;
            _persistenceService   = persistenceService;
            _clientFactory        = clientFactory;
            _certificateValidator = certificateValidator;
            _logger = logger;
        }
        public void Initialize()
        {
            var persistenceService = Substitute.For <IPersistenceService>();

            var options = new LetsEncryptOptions
            {
                Domains      = new[] { "test.com" },
                Email        = "*****@*****.**",
                KeyAlgorithm = KeyAlgorithm.ES512,
                UseStaging   = true,
            };

            var certificateValidator = Substitute.For <ICertificateValidator>();

            certificateValidator.IsCertificateValid(null).Returns(false);
            certificateValidator.IsCertificateValid(RefEq(InvalidCert)).Returns(false);
            certificateValidator.IsCertificateValid(RefEq(ValidCert)).Returns(true);

            var client  = Substitute.For <ILetsEncryptClient>();
            var factory = Substitute.For <ILetsEncryptClientFactory>();

            factory.GetClient().Returns(Task.FromResult(client));

            var sut = new CertificateProvider(
                options,
                certificateValidator,
                persistenceService,
                factory,
                NullLogger <CertificateProvider> .Instance);

            PersistenceService       = persistenceService;
            CertificateValidator     = certificateValidator;
            LetsEncryptClientFactory = factory;
            LetsEncryptClient        = client;

            Sut = sut;
        }