예제 #1
0
        public void GetPermissionNameFormCacheKeyOrNull()
        {
            var key = PermissionGrantCacheItem.CalculateCacheKey("aaa", "bbb", "ccc");

            PermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(key).ShouldBe("aaa");
            PermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull("aaabbbccc").ShouldBeNull();
        }
예제 #2
0
        public async Task PermissionStore_IsGrantedAsync_Should_Cache_PermissionGrant()
        {
            (await _cache.GetAsync(PermissionGrantCacheItem.CalculateCacheKey("MyPermission1",
                                                                              UserPermissionValueProvider.ProviderName,
                                                                              PermissionTestDataBuilder.User1Id.ToString())).ConfigureAwait(false)).ShouldBeNull();


            await _permissionStore.IsGrantedAsync("MyPermission1",
                                                  UserPermissionValueProvider.ProviderName,
                                                  PermissionTestDataBuilder.User1Id.ToString()).ConfigureAwait(false);


            (await _cache.GetAsync(PermissionGrantCacheItem.CalculateCacheKey("MyPermission1",
                                                                              UserPermissionValueProvider.ProviderName,
                                                                              PermissionTestDataBuilder.User1Id.ToString())).ConfigureAwait(false)).ShouldNotBeNull();
        }
예제 #3
0
        public virtual async Task <PermissionGrant> UpdateProviderKeyAsync(PermissionGrant permissionGrant, string providerKey)
        {
            using (CurrentTenant.Change(permissionGrant.TenantId))
            {
                //Invalidating the cache for the old key
                await Cache.RemoveAsync(
                    PermissionGrantCacheItem.CalculateCacheKey(
                        permissionGrant.Name,
                        permissionGrant.ProviderName,
                        permissionGrant.ProviderKey
                        )
                    );
            }

            permissionGrant.ProviderKey = providerKey;
            return(await PermissionGrantRepository.UpdateAsync(permissionGrant));
        }
예제 #4
0
        public async Task Cache_Should_Invalidator_WhenPermissionGrantChanged()
        {
            // IsGrantedAsync will cache PermissionGrant
            await _permissionStore.IsGrantedAsync("MyPermission1",
                                                  UserPermissionValueProvider.ProviderName,
                                                  PermissionTestDataBuilder.User1Id.ToString()).ConfigureAwait(false);

            var permissionGrant = await _permissionGrantRepository.FindAsync("MyPermission1",
                                                                             UserPermissionValueProvider.ProviderName,
                                                                             PermissionTestDataBuilder.User1Id.ToString()).ConfigureAwait(false);

            permissionGrant.ShouldNotBeNull();
            await _permissionGrantRepository.DeleteAsync(permissionGrant).ConfigureAwait(false);

            (await _cache.GetAsync(PermissionGrantCacheItem.CalculateCacheKey("MyPermission1",
                                                                              UserPermissionValueProvider.ProviderName,
                                                                              PermissionTestDataBuilder.User1Id.ToString())).ConfigureAwait(false)).ShouldBeNull();
        }
예제 #5
0
 protected virtual string CalculateCacheKey(string name, string providerName, string providerKey)
 {
     return(PermissionGrantCacheItem.CalculateCacheKey(name, providerName, providerKey));
 }