public void AddServer_CanBeSafelyInvokedMultipleTimes()
        {
            // Arrange
            var services = new ServiceCollection();
            var builder  = new OpenIddictBuilder(services);

            // Act and assert
            builder.AddServer();
            builder.AddServer();
            builder.AddServer();
        }
        public void AddServer_ThrowsAnExceptionWhenSchemeIsAlreadyRegisteredWithDifferentHandlerType()
        {
            // Arrange
            var services = new ServiceCollection();

            services.AddAuthentication()
            .AddOpenIdConnectServer();

            var builder = new OpenIddictBuilder(services);

            // Act
            builder.AddServer();

            // Assert
            var provider  = services.BuildServiceProvider();
            var exception = Assert.Throws <InvalidOperationException>(delegate
            {
                return(provider.GetRequiredService <IOptions <AuthenticationOptions> >().Value);
            });

            Assert.Equal(new StringBuilder()
                         .AppendLine("The OpenIddict server handler cannot be registered as an authentication scheme.")
                         .AppendLine("This may indicate that an instance of the OpenID Connect server was registered.")
                         .Append("Make sure that 'services.AddAuthentication().AddOpenIdConnectServer()' is not used.")
                         .ToString(), exception.Message);
        }
        public void AddServer_ThrowsAnExceptionForNullConfiguration()
        {
            // Arrange
            var services = new ServiceCollection();
            var builder  = new OpenIddictBuilder(services);

            // Act and assert
            var exception = Assert.Throws <ArgumentNullException>(() => builder.AddServer(configuration: null));

            Assert.Equal("configuration", exception.ParamName);
        }
        public void AddServer_RegistersOptionsServices()
        {
            // Arrange
            var services = new ServiceCollection();
            var builder  = new OpenIddictBuilder(services);

            // Act
            builder.AddServer();

            // Assert
            Assert.Contains(services, service => service.ServiceType == typeof(IOptions <>));
        }
        public void AddServer_RegistersCachingServices()
        {
            // Arrange
            var services = new ServiceCollection();
            var builder  = new OpenIddictBuilder(services);

            // Act
            builder.AddServer();

            // Assert
            Assert.Contains(services, service => service.ServiceType == typeof(IDistributedCache));
            Assert.Contains(services, service => service.ServiceType == typeof(IMemoryCache));
        }
        public void AddServer_RegistersInitializers(Type serviceType, Type implementationType)
        {
            // Arrange
            var services = new ServiceCollection();
            var builder  = new OpenIddictBuilder(services);

            // Act
            builder.AddServer();

            // Assert
            Assert.Contains(services, service => service.ServiceType == serviceType &&
                            service.ImplementationType == implementationType);
        }
        public void AddServer_RegistersProvider()
        {
            // Arrange
            var services = new ServiceCollection();
            var builder  = new OpenIddictBuilder(services);

            // Act
            builder.AddServer();

            // Assert
            Assert.Contains(services, service => service.Lifetime == ServiceLifetime.Scoped &&
                            service.ServiceType == typeof(OpenIddictServerProvider) &&
                            service.ImplementationFactory != null);
        }
Example #8
0
        public void AddServer_RegistersRequiredSingletons(Type type)
        {
            // Arrange
            var services = new ServiceCollection();
            var builder  = new OpenIddictBuilder(services);

            // Act
            builder.AddServer();

            // Assert
            Assert.Contains(services, service => service.ServiceType == type &&
                            service.ImplementationType == type &&
                            service.Lifetime == ServiceLifetime.Singleton);
        }
Example #9
0
        public void AddServer_RegistersDefaultHandler(OpenIddictServerHandlerDescriptor descriptor)
        {
            // Arrange
            var services = new ServiceCollection();
            var builder  = new OpenIddictBuilder(services);

            // Act
            builder.AddServer();

            // Assert
            Assert.Contains(services, service => service.Lifetime == descriptor.ServiceDescriptor.Lifetime &&
                            service.ServiceType == descriptor.ServiceDescriptor.ServiceType &&
                            service.ImplementationType == descriptor.ServiceDescriptor.ImplementationType);
        }
        public void AddServer_RegistersEventService()
        {
            // Arrange
            var services = new ServiceCollection();
            var builder  = new OpenIddictBuilder(services);

            // Act
            builder.AddServer();

            // Assert
            Assert.Contains(services, service => service.Lifetime == ServiceLifetime.Scoped &&
                            service.ServiceType == typeof(IOpenIddictServerEventDispatcher) &&
                            service.ImplementationType == typeof(OpenIddictServerEventDispatcher));
        }
        public void AddServer_RegistersAuthenticationScheme()
        {
            // Arrange
            var services = new ServiceCollection();
            var builder  = new OpenIddictBuilder(services);

            // Act
            builder.AddServer();

            // Assert
            var provider = services.BuildServiceProvider();
            var options  = provider.GetRequiredService <IOptions <AuthenticationOptions> >().Value;

            Assert.Contains(options.Schemes, scheme => scheme.Name == OpenIddictServerDefaults.AuthenticationScheme &&
                            scheme.HandlerType == typeof(OpenIddictServerHandler));
        }
Example #12
0
        public void AddServer_ResolvingProviderThrowsAnExceptionWhenCoreServicesAreNotRegistered()
        {
            // Arrange
            var services = new ServiceCollection();
            var builder  = new OpenIddictBuilder(services);

            // Act
            builder.AddServer();

            // Assert
            var provider = services.BuildServiceProvider();

            var exception = Assert.Throws <InvalidOperationException>(() => provider.GetRequiredService <OpenIddictServerConfiguration>());

            Assert.NotNull(exception);
        }
        public void AddServer_ResolvingProviderThrowsAnExceptionWhenCoreServicesAreNotRegistered()
        {
            // Arrange
            var services = new ServiceCollection();
            var builder  = new OpenIddictBuilder(services);

            // Act
            builder.AddServer();

            // Assert
            var provider = services.BuildServiceProvider();

            var exception = Assert.Throws <InvalidOperationException>(() => provider.GetRequiredService <OpenIddictServerProvider>());

            Assert.Equal(new StringBuilder()
                         .AppendLine("The core services must be registered when enabling the server handler.")
                         .Append("To register the OpenIddict core services, use 'services.AddOpenIddict().AddCore()'.")
                         .ToString(), exception.Message);
        }