Ejemplo n.º 1
0
        public async Task CacheDurationFromOptionsIsUsed()
        {
            _options.PdpCacheDuration = 60;
            var cacheEntry  = new TestCacheEntry();
            var mockedCache = CreateEmptyMockedCache();

            mockedCache.Setup(c => c.CreateEntry(BuildCacheKey(_userId)))
            .Returns(cacheEntry);

            var pdpResponse = new PdpResponse
            {
                applicationId = _application,
                userId        = _userId,
                permissions   = new List <String>(new string[] { _requestedresource })
            };
            var mockHandler = new MockMessageHandler <PdpResponse>(HttpStatusCode.OK, pdpResponse);
            var client      = new HttpClient(mockHandler);
            var uri         = _options.PdpUrl.EndsWith("/") ? _options.PdpUrl : $"{_options.PdpUrl}/";

            client.BaseAddress = new Uri(uri);
            var provider = new PolicyDecisionProvider(client, mockedCache.Object, Options.Create(_options), _logger);

            var result = await provider.GetPermissionsAsync(_userId, _application);

            Assert.True(cacheEntry.AbsoluteExpirationRelativeToNow.Value == new TimeSpan(0, _options.PdpCacheDuration, 0));
        }
Ejemplo n.º 2
0
        public async Task ShouldCacheResponseWithoutPermissions()
        {
            _options.PdpCacheDuration = 60;
            var cacheEntry  = new TestCacheEntry();
            var mockedCache = CreateEmptyMockedCache();

            mockedCache.Setup(c => c.CreateEntry(BuildCacheKey(_userId)))
            .Returns(cacheEntry);

            var pdpResponse = new PdpResponse
            {
                applicationId = _application,
                userId        = _userId,
                permissions   = new List <String>(new string[] { })
            };

            var mockHandler = new MockMessageHandler <PdpResponse>(HttpStatusCode.OK, pdpResponse);
            var client      = new HttpClient(mockHandler);
            var uri         = _options.PdpUrl.EndsWith("/") ? _options.PdpUrl : $"{_options.PdpUrl}/";

            client.BaseAddress = new Uri(uri);
            var provider = new PolicyDecisionProvider(client, mockedCache.Object, Options.Create(_options), _logger);

            var result = await provider.GetPermissionsAsync(_userId, _application);

            mockedCache.Verify(c => c.CreateEntry(It.IsAny <object>()), Times.Once);
            Assert.NotNull(cacheEntry.Value);
            Assert.Equal(new List <string>(), ((PdpResponse)cacheEntry.Value).permissions);
        }
Ejemplo n.º 3
0
        public async Task ReturnsNullIfUserUnknown()
        {
            var mockedCache = CreateEmptyMockedCache();
            var mockHandler = new MockMessageHandler <PdpResponse>(HttpStatusCode.NotFound, null);
            var client      = new HttpClient(mockHandler);
            var uri         = _options.PdpUrl.EndsWith("/") ? _options.PdpUrl : $"{_options.PdpUrl}/";

            client.BaseAddress = new Uri(uri);
            var provider = new PolicyDecisionProvider(client, mockedCache.Object, Options.Create(_options), _logger);
            var result   = await provider.GetPermissionsAsync("otherUser", _application);

            Assert.Null(result);
            Assert.NotEmpty(_logger.LoggedMessages);
        }
Ejemplo n.º 4
0
        public async Task GetCachedPdpResponse()
        {
            _options.PdpCacheDuration = 60;
            var pdpResponse = new PdpResponse
            {
                applicationId = _application,
                userId        = _userId,
                permissions   = new List <String>(new string[] { _requestedresource })
            };

            var mockedCache = CreateMockedCache(BuildCacheKey(_userId), pdpResponse);
            var provider    = new PolicyDecisionProvider(Mock.Of <HttpClient>(), mockedCache.Object, Options.Create(_options), _logger);

            var result = await provider.GetPermissionsAsync(_userId, _application);

            Assert.Equal(pdpResponse, result);
        }
Ejemplo n.º 5
0
        public async Task GetResponse()
        {
            var mockedCache = CreateEmptyMockedCache();

            var pdpResponse = new PdpResponse
            {
                applicationId = _application,
                userId        = _userId,
                permissions   = new List <String>(new string[] { _requestedresource })
            };

            var mockHandler = new MockMessageHandler <PdpResponse>(HttpStatusCode.OK, pdpResponse);
            var client      = new HttpClient(mockHandler);
            var uri         = _options.PdpUrl.EndsWith("/") ? _options.PdpUrl : $"{_options.PdpUrl}/";

            client.BaseAddress = new Uri(uri);
            var provider = new PolicyDecisionProvider(client, mockedCache.Object, Options.Create(_options), _logger);
            var result   = await provider.GetPermissionsAsync(_userId, _application);

            Assert.Equal(pdpResponse.applicationId, result.applicationId);
            Assert.Equal(pdpResponse.userId, result.userId);
            Assert.Equal(pdpResponse.permissions, result.permissions);
        }
Ejemplo n.º 6
0
        public async Task ApiKeyIsSetInHeader()
        {
            var mockedCache = CreateEmptyMockedCache();

            var pdpResponse = new PdpResponse
            {
                applicationId = _application,
                userId        = _userId,
                permissions   = new List <String>(new string[] { requestedresource })
            };

            var mockHandler = new MockMessageHandler <PdpResponse>(HttpStatusCode.OK, pdpResponse);
            var httpClient  = new HttpClient(mockHandler);

            httpClient.DefaultRequestHeaders.TryAddWithoutValidation(HeaderKeys.Apikey, _options.PdpApiKey);
            var uri = _options.PdpUrl.EndsWith("/") ? _options.PdpUrl : $"{_options.PdpUrl}/";

            httpClient.BaseAddress = new Uri(uri);
            var provider = new PolicyDecisionProvider(httpClient, mockedCache.Object, Options.Create(_options), _logger);
            var result   = await provider.GetPermissionsAsync(_userId, _application);

            Assert.Equal(_apiKey, httpClient.DefaultRequestHeaders.GetValues(HeaderKeys.Apikey).FirstOrDefault());
        }