public async Task Assertions()
        {
            Assert.Throws <ArgumentNullException>(() => new NoPersistentDynamicManager <FakeSchemeDefinition>(null, null, null));
            var schemeProviderMock = new Mock <IAuthenticationSchemeProvider>().Object;

            Assert.Throws <ArgumentNullException>(() => new NoPersistentDynamicManager <FakeSchemeDefinition>(schemeProviderMock, null, null));
            var serviceProviderMock = new Mock <IServiceProvider>().Object;
            var factory             = new OptionsMonitorCacheWrapperFactory(serviceProviderMock);

            Assert.Throws <ArgumentNullException>(() => new NoPersistentDynamicManager <FakeSchemeDefinition>(schemeProviderMock, factory, null));
            var storeMock = new Mock <IDynamicProviderStore <FakeSchemeDefinition> >().Object;
            var manager   = new PersistentDynamicManager <FakeSchemeDefinition>(schemeProviderMock, factory, storeMock, new List <Type>());
            await Assert.ThrowsAsync <ArgumentNullException>(() => manager.AddAsync(null));

            await Assert.ThrowsAsync <ArgumentNullException>(() => manager.UpdateAsync(null));

            await Assert.ThrowsAsync <ArgumentException>(() => manager.RemoveAsync(null));

            await Assert.ThrowsAsync <ArgumentException>(() => manager.RemoveAsync(""));

            await Assert.ThrowsAsync <ArgumentException>(() => manager.RemoveAsync("  "));

            await Assert.ThrowsAsync <ArgumentException>(() => manager.FindBySchemeAsync(null));

            await Assert.ThrowsAsync <ArgumentException>(() => manager.FindBySchemeAsync(""));

            await Assert.ThrowsAsync <ArgumentException>(() => manager.FindBySchemeAsync("  "));
        }
예제 #2
0
        public async Task <ExternalProvider> UpdateAsync(ExternalProvider entity, CancellationToken cancellationToken = default)
        {
            await _manager.UpdateAsync(CreateSchemeDefinition(entity), cancellationToken).ConfigureAwait(false);

            await _providerClient.ProviderUpdatedAsync(entity.Id, cancellationToken).ConfigureAwait(false);

            return(entity);
        }
예제 #3
0
        public async Task <ExternalProvider> UpdateAsync(ExternalProvider entity, CancellationToken cancellationToken = default)
        {
            var definition = await GetEntity(entity.Id).ConfigureAwait(false);

            var handlerType = _serializer.DeserializeType(entity.SerializedHandlerType);

            definition.DisplayName = entity.DisplayName;
            definition.HandlerType = handlerType;
            definition.Options     = _serializer.DeserializeOptions(entity.SerializedOptions, handlerType.GetAuthenticationSchemeOptionsType());

            SanetizeCallbackPath(entity, definition.Options);

            await _manager.UpdateAsync(definition, cancellationToken).ConfigureAwait(false);

            if (_providerClient != null)
            {
                await _providerClient.ProviderUpdated(entity.Id, cancellationToken).ConfigureAwait(false);
            }
            return(entity);
        }
        public async Task <IActionResult> Update(AuthenticationViewModel model)
        {
            if (ModelState.IsValid)
            {
                var definition = await _manager.FindBySchemeAsync(model.Scheme);

                if (definition == null)
                {
                    return(NotFound());
                }

                if (definition.Options is OAuthOptions oAuthOptions) // GoogleOptions is OAuthOptions
                {
                    oAuthOptions.ClientId     = model.ClientId;
                    oAuthOptions.ClientSecret = model.ClientSecret;
                }

                definition.DisplayName = model.DisplayName;

                await _manager.UpdateAsync(definition);
            }

            return(View(model));
        }