public void AddJwtAuthentication_registers_options(IServiceCollection services, JwtOptions options)
        {
            var values = new Dictionary <string, string>
            {
                ["JWT:SecretKey"]              = options.SecretKey,
                ["JWT:IssuerOptions:Issuer"]   = options.IssuerOptions.Issuer,
                ["JWT:IssuerOptions:Audience"] = options.IssuerOptions.Audience
            };

            var configurationBuilder = new ConfigurationBuilder().AddInMemoryCollection(values);
            var configuration        = configurationBuilder.Build();

            var result = BuilderExtensions.AddJwtAuthentication(services, configuration);

            Mock.Get(services).Verify(p => p.Add(It.Is <ServiceDescriptor>(sd => sd.ServiceType == typeof(JwtOptions) && sd.ImplementationInstance != null)));
        }
        public void AddJwtAuthentication_adds_support_for_JWT_bearer(IServiceCollection services, JwtOptions options)
        {
            var values = new Dictionary <string, string>
            {
                ["JWT:SecretKey"]              = options.SecretKey,
                ["JWT:IssuerOptions:Issuer"]   = options.IssuerOptions.Issuer,
                ["JWT:IssuerOptions:Audience"] = options.IssuerOptions.Audience
            };

            var configurationBuilder = new ConfigurationBuilder().AddInMemoryCollection(values);
            var configuration        = configurationBuilder.Build();

            var result = BuilderExtensions.AddJwtAuthentication(services, configuration);

            Mock.Get(services).Verify(p => p.Add(It.Is <ServiceDescriptor>(sd => sd.ImplementationType == typeof(JwtBearerHandler))));
        }
        public void AddJwtAuthentication_returns_JwtBuilder(IServiceCollection services, JwtOptions options)
        {
            var values = new Dictionary <string, string>
            {
                ["JWT:SecretKey"]              = options.SecretKey,
                ["JWT:IssuerOptions:Issuer"]   = options.IssuerOptions.Issuer,
                ["JWT:IssuerOptions:Audience"] = options.IssuerOptions.Audience
            };

            var configurationBuilder = new ConfigurationBuilder().AddInMemoryCollection(values);
            var configuration        = configurationBuilder.Build();

            var result = BuilderExtensions.AddJwtAuthentication(services, configuration);

            Assert.That(result, Is.InstanceOf <JwtBuilder>());
            Assert.That(result.Configuration, Is.SameAs(configuration));
            Assert.That(result.Services, Is.SameAs(services));
        }