Exemplo n.º 1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SchemeChangeSubscriber{TSchemeDefinition}"/> class.
 /// </summary>
 /// <param name="factory">The factory.</param>
 /// <param name="manager">The manager.</param>
 /// <param name="store">The store.</param>
 /// <exception cref="ArgumentNullException">
 /// factory
 /// or
 /// manager
 /// or
 /// manager
 /// </exception>
 public SchemeChangeSubscriber(HubConnectionFactory factory,
                               NoPersistentDynamicManager <TSchemeDefinition> manager,
                               IDynamicProviderStore <TSchemeDefinition> store)
 {
     _factory = factory ?? throw new ArgumentNullException(nameof(factory));
     _manager = manager ?? throw new ArgumentNullException(nameof(manager));
     _store   = store ?? throw new ArgumentNullException(nameof(manager));
 }
Exemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SchemeChangeSubscriber{TSchemeDefinition}" /> class.
 /// </summary>
 /// <param name="factory">The factory.</param>
 /// <param name="manager">The manager.</param>
 /// <param name="store">The store.</param>
 /// <param name="dataProtectionKeyManagerWrapper">The data protection key manager wrapper.</param>
 /// <param name="signingKeyManagerWrapper">The signing key manager wrapper.</param>
 /// <param name="logger">The logger.</param>
 /// <exception cref="ArgumentNullException">factory
 /// or
 /// manager
 /// or
 /// manager</exception>
 public SchemeChangeSubscriber(HubConnectionFactory factory,
                               NoPersistentDynamicManager <TSchemeDefinition> manager,
                               IDynamicProviderStore <TSchemeDefinition> store,
                               KeyManagerWrapper <IAuthenticatedEncryptorDescriptor> dataProtectionKeyManagerWrapper,
                               KeyManagerWrapper <RsaEncryptorDescriptor> signingKeyManagerWrapper,
                               ILogger <SchemeChangeSubscriber <TSchemeDefinition> > logger)
 {
     _factory = factory ?? throw new ArgumentNullException(nameof(factory));
     _manager = manager ?? throw new ArgumentNullException(nameof(manager));
     _store   = store ?? throw new ArgumentNullException(nameof(manager));
     _dataProtectionKeyManagerWrapper = dataProtectionKeyManagerWrapper ?? throw new ArgumentNullException(nameof(dataProtectionKeyManagerWrapper));
     _signingKeyManagerWrapper        = signingKeyManagerWrapper ?? throw new ArgumentNullException(nameof(signingKeyManagerWrapper));
     _logger = logger ?? throw new ArgumentNullException(nameof(logger));
 }
        public async Task Subscribe_should_subcribe_to_hub_events()
        {
            using var waitHandle = new ManualResetEvent(false);

            var configuration = new Dictionary <string, string>
            {
                ["ConnectionStrings:DefaultConnection"] = Guid.NewGuid().ToString(),
                ["ApiAuthentication:Authority"]         = "http://localhost",
                ["SignalR:HubUrl"]         = "http://localhost/providerhub",
                ["SignalR:UseMessagePack"] = "false",
                ["Seed"] = "true"
            };

            TestServer server = null;

            server = TestUtils.CreateTestServer(services =>
            {
                services.RemoveAll <HubHttpMessageHandlerAccessor>();
                services.AddTransient(p => new HubHttpMessageHandlerAccessor {
                    Handler = new MockHttpMessageHandler(waitHandle, server.CreateHandler())
                });
                services.RemoveAll <HttpClient>();
                services.AddTransient(p => server.CreateClient());
                services.RemoveAll <HttpClientHandler>();
                services.AddTransient <HttpClientHandler>(p => new MockHttpClientHandler(p.GetRequiredService <HttpClient>()));
            }, configuration, (endpoints, isProxy) =>
            {
                endpoints.MapRazorPages();
                endpoints.MapDefaultControllerRoute();
                if (!isProxy)
                {
                    endpoints.MapHub <ProviderHub>("/providerhub");
                }
            });
            using (server)
            {
                server.CreateWebSocketClient();

                var provider   = server.Host.Services;
                var store      = provider.GetRequiredService <IAdminStore <ExternalProvider> >();
                var serializer = provider.GetRequiredService <IAuthenticationSchemeOptionsSerializer>();

                var manager              = new NoPersistentDynamicManager <SchemeDefinition>(new Mock <IAuthenticationSchemeProvider>().Object, new OptionsMonitorCacheWrapperFactory(new Mock <IServiceProvider>().Object), Array.Empty <Type>());
                var wrapper1             = new KeyManagerWrapper <Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.IAuthenticatedEncryptorDescriptor>(new Mock <IKeyManager>().Object, new Mock <IDefaultKeyResolver>().Object, new Mock <IProviderClient>().Object);
                var wrapper2             = new KeyManagerWrapper <IdentityServer.KeysRotation.RsaEncryptorDescriptor>(new Mock <IKeyManager>().Object, new Mock <IDefaultKeyResolver>().Object, new Mock <IProviderClient>().Object);
                var hubConnectionFactory = new HubConnectionFactory(provider.GetRequiredService <IConfiguration>(), provider, new NullLogger <HubConnectionFactory>());

                var connection = hubConnectionFactory.GetConnection(default);
        public void Constructor_should_throw_on_args_null()
        {
            Assert.Throws <ArgumentNullException>(() => new SchemeChangeSubscriber <SchemeDefinition>(null, null, null, null, null, null));
            var hubConnectionFactory = new HubConnectionFactory(new Mock <IConfiguration>().Object, new Mock <IServiceProvider>().Object, new NullLogger <HubConnectionFactory>());

            Assert.Throws <ArgumentNullException>(() => new SchemeChangeSubscriber <SchemeDefinition>(hubConnectionFactory, null, null, null, null, null));
            var manager = new NoPersistentDynamicManager <SchemeDefinition>(new Mock <IAuthenticationSchemeProvider>().Object, new OptionsMonitorCacheWrapperFactory(new Mock <IServiceProvider>().Object), Array.Empty <Type>());

            Assert.Throws <ArgumentNullException>(() => new SchemeChangeSubscriber <SchemeDefinition>(hubConnectionFactory, manager, null, null, null, null));
            Assert.Throws <ArgumentNullException>(() => new SchemeChangeSubscriber <SchemeDefinition>(hubConnectionFactory, manager, new Mock <IDynamicProviderStore <SchemeDefinition> >().Object, null, null, null));
            var wrapper1 = new KeyManagerWrapper <Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.IAuthenticatedEncryptorDescriptor>(new Mock <IKeyManager>().Object, new Mock <IDefaultKeyResolver>().Object, new Mock <IProviderClient>().Object);

            Assert.Throws <ArgumentNullException>(() => new SchemeChangeSubscriber <SchemeDefinition>(hubConnectionFactory, manager, new Mock <IDynamicProviderStore <SchemeDefinition> >().Object, wrapper1, null, null));
            var wrapper2 = new KeyManagerWrapper <IdentityServer.KeysRotation.RsaEncryptorDescriptor>(new Mock <IKeyManager>().Object, new Mock <IDefaultKeyResolver>().Object, new Mock <IProviderClient>().Object);

            Assert.Throws <ArgumentNullException>(() => new SchemeChangeSubscriber <SchemeDefinition>(hubConnectionFactory, manager, new Mock <IDynamicProviderStore <SchemeDefinition> >().Object, wrapper1, wrapper2, null));
        }
 public SchemeChangeSubscriber(NoPersistentDynamicManager <SchemeDefinition> manager, IDynamicProviderStore <SchemeDefinition> store)
 {
     _manager = manager;
     _store   = store;
 }