public async Task SaveAsync_ExistingItem_UpdatesRevisionDateOnly(SutProvider<SsoConfigService> sutProvider,
            Organization organization)
        {
            var utcNow = DateTime.UtcNow;

            var ssoConfig = new SsoConfig
            {
                Id = 1,
                Data = "{}",
                Enabled = true,
                OrganizationId = organization.Id,
                CreationDate = utcNow.AddDays(-10),
                RevisionDate = utcNow.AddDays(-10),
            };

            sutProvider.GetDependency<ISsoConfigRepository>()
                .UpsertAsync(ssoConfig).Returns(Task.CompletedTask);

            await sutProvider.Sut.SaveAsync(ssoConfig, organization);

            await sutProvider.GetDependency<ISsoConfigRepository>().Received()
                .UpsertAsync(ssoConfig);

            Assert.Equal(utcNow.AddDays(-10), ssoConfig.CreationDate);
            Assert.True(ssoConfig.RevisionDate - utcNow < TimeSpan.FromSeconds(1));
        }
        public SsoConfigEditViewModel(SsoConfig ssoConfig, II18nService i18nService,
                                      GlobalSettings globalSettings)
        {
            if (ssoConfig != null)
            {
                Id      = ssoConfig.Id;
                Enabled = ssoConfig.Enabled;
            }

            SsoConfigurationData configurationData;

            if (!string.IsNullOrWhiteSpace(ssoConfig?.Data))
            {
                var options = new JsonSerializerOptions
                {
                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
                };
                configurationData = JsonSerializer.Deserialize <SsoConfigurationData>(ssoConfig.Data, options);
            }
            else
            {
                configurationData = new SsoConfigurationData();
            }

            Data = new SsoConfigDataViewModel(configurationData, globalSettings);
            BuildLists(i18nService);
        }
Exemple #3
0
        public async Task SaveAsync(SsoConfig config, Organization organization)
        {
            var now = DateTime.UtcNow;

            config.RevisionDate = now;
            if (config.Id == default)
            {
                config.CreationDate = now;
            }

            var useKeyConnector = config.GetData().KeyConnectorEnabled;

            if (useKeyConnector)
            {
                await VerifyDependenciesAsync(config, organization);
            }

            var oldConfig = await _ssoConfigRepository.GetByOrganizationIdAsync(config.OrganizationId);

            var disabledKeyConnector = oldConfig?.GetData()?.KeyConnectorEnabled == true && !useKeyConnector;

            if (disabledKeyConnector && await AnyOrgUserHasKeyConnectorEnabledAsync(config.OrganizationId))
            {
                throw new BadRequestException("Key Connector cannot be disabled at this moment.");
            }

            await LogEventsAsync(config, oldConfig);

            await _ssoConfigRepository.UpsertAsync(config);
        }
Exemple #4
0
 public AuthenticationController(IOptions <SsoConfig> _ssoConfigs, LoginHelper _loginHelper, HttpPostHelper _httpPostHelper, SiteContext _siteContext, ComputeHashHelper _computeHashHelper)
 {
     ssoConfigs        = _ssoConfigs.Value;
     loginHelper       = _loginHelper;
     httpPostHelper    = _httpPostHelper;
     siteContext       = _siteContext;
     computeHashHelper = _computeHashHelper;
 }
        public SsoConfig ToSsoConfig(SsoConfig existingConfig)
        {
            existingConfig.Enabled = Enabled;
            var configurationData = Data.ToConfigurationData();

            existingConfig.SetData(configurationData);
            return(existingConfig);
        }
        public SsoConfig ToSsoConfig(SsoConfig existingConfig)
        {
            existingConfig.Enabled = Enabled;
            var configurationData = Data.ToConfigurationData();

            existingConfig.Data = JsonSerializer.Serialize(configurationData, new JsonSerializerOptions
            {
                PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
            });
            return(existingConfig);
        }
        public OrganizationSsoResponseModel(Organization organization, GlobalSettings globalSettings,
                                            SsoConfig config = null) : base("organizationSso")
        {
            if (config != null)
            {
                Enabled = config.Enabled;
                Data    = config.GetData();
            }

            Urls = new SsoUrls(organization.Id.ToString(), globalSettings);
        }
Exemple #8
0
        public async Task SaveAsync(SsoConfig config)
        {
            var now = DateTime.UtcNow;

            config.RevisionDate = now;
            if (config.Id == default)
            {
                config.CreationDate = now;
            }
            await _ssoConfigRepository.UpsertAsync(config);
        }
Exemple #9
0
        private async Task VerifyDependenciesAsync(SsoConfig config, Organization organization)
        {
            if (!organization.UseKeyConnector)
            {
                throw new BadRequestException("Organization cannot use Key Connector.");
            }

            var singleOrgPolicy = await _policyRepository.GetByOrganizationIdTypeAsync(config.OrganizationId, PolicyType.SingleOrg);

            if (singleOrgPolicy is not {
                Enabled : true
            })
Exemple #10
0
        public async void ReplaceAsync_Works_DataMatches(SsoConfig postSsoConfig, SsoConfig replaceSsoConfig,
                                                         Organization org, SsoConfigCompare equalityComparer, List <EfRepo.SsoConfigRepository> suts,
                                                         List <EfRepo.OrganizationRepository> efOrgRepos, SqlRepo.SsoConfigRepository sqlSsoConfigRepo,
                                                         SqlRepo.OrganizationRepository sqlOrganizationRepo)
        {
            var savedSsoConfigs = new List <SsoConfig>();

            foreach (var sut in suts)
            {
                var i = suts.IndexOf(sut);

                var savedEfOrg = await efOrgRepos[i].CreateAsync(org);
                sut.ClearChangeTracking();

                postSsoConfig.OrganizationId = replaceSsoConfig.OrganizationId = savedEfOrg.Id;
                var postEfSsoConfig = await sut.CreateAsync(postSsoConfig);

                sut.ClearChangeTracking();

                replaceSsoConfig.Id = postEfSsoConfig.Id;
                savedSsoConfigs.Add(postEfSsoConfig);
                await sut.ReplaceAsync(replaceSsoConfig);

                sut.ClearChangeTracking();

                var replacedSsoConfig = await sut.GetByIdAsync(replaceSsoConfig.Id);

                Assert.True(replacedSsoConfig != null);
                savedSsoConfigs.Add(replacedSsoConfig);
            }

            var sqlOrganization = await sqlOrganizationRepo.CreateAsync(org);

            postSsoConfig.OrganizationId = sqlOrganization.Id;

            var postSqlSsoConfig = await sqlSsoConfigRepo.CreateAsync(postSsoConfig);

            replaceSsoConfig.Id = postSqlSsoConfig.Id;
            savedSsoConfigs.Add(postSqlSsoConfig);

            await sqlSsoConfigRepo.ReplaceAsync(replaceSsoConfig);

            var replacedSqlSsoConfig = await sqlSsoConfigRepo.GetByIdAsync(replaceSsoConfig.Id);

            Assert.True(replacedSqlSsoConfig != null);
            savedSsoConfigs.Add(replacedSqlSsoConfig);

            var distinctItems = savedSsoConfigs.Distinct(equalityComparer);

            Assert.True(!distinctItems.Skip(2).Any());
        }
Exemple #11
0
        public async void DeleteAsync_Works_DataMatches(SsoConfig ssoConfig, Organization org,
                                                        SsoConfigCompare equalityComparer, List <EfRepo.SsoConfigRepository> suts,
                                                        List <EfRepo.OrganizationRepository> efOrgRepos, SqlRepo.SsoConfigRepository sqlSsoConfigRepo,
                                                        SqlRepo.OrganizationRepository sqlOrganizationRepo)
        {
            foreach (var sut in suts)
            {
                var i = suts.IndexOf(sut);

                var savedEfOrg = await efOrgRepos[i].CreateAsync(org);
                sut.ClearChangeTracking();

                ssoConfig.OrganizationId = savedEfOrg.Id;
                var postEfSsoConfig = await sut.CreateAsync(ssoConfig);

                sut.ClearChangeTracking();

                var savedEfSsoConfig = await sut.GetByIdAsync(postEfSsoConfig.Id);

                Assert.True(savedEfSsoConfig != null);
                sut.ClearChangeTracking();

                await sut.DeleteAsync(savedEfSsoConfig);

                var deletedEfSsoConfig = await sut.GetByIdAsync(savedEfSsoConfig.Id);

                Assert.True(deletedEfSsoConfig == null);
            }

            var sqlOrganization = await sqlOrganizationRepo.CreateAsync(org);

            ssoConfig.OrganizationId = sqlOrganization.Id;

            var postSqlSsoConfig = await sqlSsoConfigRepo.CreateAsync(ssoConfig);

            var savedSqlSsoConfig = await sqlSsoConfigRepo.GetByIdAsync(postSqlSsoConfig.Id);

            Assert.True(savedSqlSsoConfig != null);

            await sqlSsoConfigRepo.DeleteAsync(savedSqlSsoConfig);

            savedSqlSsoConfig = await sqlSsoConfigRepo.GetByIdAsync(postSqlSsoConfig.Id);

            Assert.True(savedSqlSsoConfig == null);
        }
Exemple #12
0
        public OrganizationSsoResponseModel(Organization organization, GlobalSettings globalSettings,
                                            SsoConfig config = null) : base("organizationSso")
        {
            if (config != null)
            {
                Enabled = config.Enabled;
                Data    = JsonSerializer.Deserialize <SsoConfigurationData>(config.Data, new JsonSerializerOptions
                {
                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
                });
            }
            else
            {
                Data = new SsoConfigurationData();
            }

            Urls = new SsoUrls(organization.Id.ToString(), Data, globalSettings);
        }
Exemple #13
0
        public async void GetManyByRevisionNotBeforeDate_Works(SsoConfig ssoConfig, DateTime notBeforeDate,
                                                               Organization org, SsoConfigCompare equalityComparer, List <EfRepo.SsoConfigRepository> suts,
                                                               List <EfRepo.OrganizationRepository> efOrgRepos)
        {
            foreach (var sut in suts)
            {
                var i = suts.IndexOf(sut);

                var savedEfOrg = await efOrgRepos[i].CreateAsync(org);
                sut.ClearChangeTracking();

                ssoConfig.OrganizationId = savedEfOrg.Id;
                await sut.CreateAsync(ssoConfig);

                sut.ClearChangeTracking();

                var returnedEfSsoConfigs = await sut.GetManyByRevisionNotBeforeDate(notBeforeDate);

                Assert.True(returnedEfSsoConfigs.All(sc => sc.RevisionDate >= notBeforeDate));
            }
        }
Exemple #14
0
        public async void GetByIdentifierAsync_Works_DataMatches(SsoConfig ssoConfig, Organization org,
                                                                 SsoConfigCompare equalityComparer, List <EfRepo.SsoConfigRepository> suts,
                                                                 List <EfRepo.OrganizationRepository> efOrgRepos, SqlRepo.SsoConfigRepository sqlSsoConfigRepo,
                                                                 SqlRepo.OrganizationRepository sqlOrgRepo)
        {
            var returnedList = new List <SsoConfig>();

            foreach (var sut in suts)
            {
                var i = suts.IndexOf(sut);

                var savedEfOrg = await efOrgRepos[i].CreateAsync(org);
                sut.ClearChangeTracking();

                ssoConfig.OrganizationId = savedEfOrg.Id;
                await sut.CreateAsync(ssoConfig);

                sut.ClearChangeTracking();

                var savedEfSsoConfig = await sut.GetByIdentifierAsync(org.Identifier);

                Assert.True(savedEfSsoConfig != null);
                returnedList.Add(savedEfSsoConfig);
            }

            var savedSqlOrg = await sqlOrgRepo.CreateAsync(org);

            ssoConfig.OrganizationId = savedSqlOrg.Id;

            var postSqlSsoConfig = await sqlSsoConfigRepo.CreateAsync(ssoConfig);

            var savedSqlSsoConfig = await sqlSsoConfigRepo.GetByIdentifierAsync(org.Identifier);

            Assert.True(savedSqlSsoConfig != null);
            returnedList.Add(savedSqlSsoConfig);

            var distinctItems = returnedList.Distinct(equalityComparer);

            Assert.True(!distinctItems.Skip(1).Any());
        }
Exemple #15
0
 public HttpPostHelper(IOptions <SsoConfig> _ssoConfigs, ComputeHashHelper _computeHashHelper)
 {
     ssoConfigs        = _ssoConfigs.Value;
     computeHashHelper = _computeHashHelper;
 }
Exemple #16
0
 public HttpPostHelper(IOptions <SsoConfig> _ssoConfigs)
 {
     ssoConfigs = _ssoConfigs.Value;
 }