private IInstanceSecurityRepositoryCache MockInstanceSecurityRepositoryCallsAndInitializeCache(ISecurityContextFactory securityContextFactory) { InstanceSecurityRepositoryCacheObject values = new InstanceSecurityRepositoryCacheObject ( new Application { ApplicationId = 20, ApplicationName = "Ed-Fi ODS API" }, null, null, null, null, null, null ); var memoryCacheOption = A.Fake <IOptions <MemoryCacheOptions> >(); MemoryCache memoryCache = new MemoryCache(memoryCacheOption); CacheProvider = new MemoryCacheProvider(memoryCache); CacheProvider.SetCachedObject(TestInstanceId, values); CacheProvider.SetCachedObject(GetLastSynchedKey(TestInstanceId), SystemClock.Now()); CacheProvider.SetCachedObject(GetCurrentCacheInitializedKey(TestInstanceId), true); InstanceSecurityRepositoryCache = new InstanceSecurityRepositoryCache(securityContextFactory, CacheProvider); return(InstanceSecurityRepositoryCache); }
private bool TryGetCachedRepo(string lookupKey, out InstanceSecurityRepositoryCacheObject securityRepositoryCacheObject) { _cacheLock.EnterReadLock(); try { return(CacheProviderExtensions.TryGetCachedObject(_cacheProvider, lookupKey, out securityRepositoryCacheObject)); } finally { _cacheLock.ExitReadLock(); } }
private void LoadSecurityConfigurationFromDatabaseAndAddToCache(string instanceId) { using (var context = _securityContextFactory.CreateContext()) { var application = context.Applications.First( app => app.ApplicationName.Equals(EdFiOdsApi, StringComparison.InvariantCultureIgnoreCase)); var actions = context.Actions.ToList(); var claimSets = context.ClaimSets .Include(cs => cs.Application) .ToList(); var resourceClaims = context.ResourceClaims .Include(rc => rc.Application) .Include(rc => rc.ParentResourceClaim) .Where(rc => rc.Application.ApplicationId.Equals(application.ApplicationId)) .ToList(); var authorizationStrategies = context.AuthorizationStrategies .Include(auth => auth.Application) .Where(auth => auth.Application.ApplicationId.Equals(application.ApplicationId)) .ToList(); var claimSetResourceClaims = context.ClaimSetResourceClaimActions .Include(csrc => csrc.Action) .Include(csrc => csrc.ClaimSet) .Include(csrc => csrc.ResourceClaim) .Include(csrc => csrc.AuthorizationStrategyOverrides) .Where(csrc => csrc.ResourceClaim.Application.ApplicationId.Equals(application.ApplicationId)) .ToList(); var resourceClaimAuthorizationMetadata = context.ResourceClaimActions .Include(rca => rca.Action) .Include(rca => rca.AuthorizationStrategies) .Include(rca => rca.ResourceClaim) .Where(rca => rca.ResourceClaim.Application.ApplicationId.Equals(application.ApplicationId)) .ToList(); var repo = new InstanceSecurityRepositoryCacheObject( application, actions, claimSets, resourceClaims, authorizationStrategies, claimSetResourceClaims, resourceClaimAuthorizationMetadata); _cacheProvider.SetCachedObject(instanceId, repo); } }