public async Task AddClaimsAsync_WithoutAuthenticatedUser_ReturnsTrue() { var handler = new GraphApiClaimsHandler(_tokenAcquisition.Object, _graphApiClient.Object, _memoryCache, _options.Object); var result = await handler.AddClaimsAsync(_anonHttpContext, CancellationToken.None); result.Should().BeTrue(); }
public async Task AddClaimsAsync_WithoutHttpContext_ThrowsException() { var handler = new GraphApiClaimsHandler(_tokenAcquisition.Object, _graphApiClient.Object, _memoryCache, _options.Object); Func <Task> task = async() => await handler.AddClaimsAsync(null, CancellationToken.None); await task.Should().ThrowAsync <ArgumentNullException>(); }
public async Task AddClaimsAsync_AddsEntriesToCache() { var handler = new GraphApiClaimsHandler(_tokenAcquisition.Object, _graphApiClient.Object, _memoryCache, _options.Object); await handler.AddClaimsAsync(_httpContext, CancellationToken.None); _memoryCache.TryGetValue($"{UserOid1}:{_options.Object.Value.GroupsClaimType}", out _).Should().BeTrue(); }
public async Task AddClaimsAsync_WithValidAccessToken_AddsGroupsClaims() { _httpContext.User = new ClaimsPrincipal(new ClaimsIdentity("test")); var handler = new GraphApiClaimsHandler(_tokenAcquisition.Object, _graphApiClient.Object, _memoryCache, _options.Object); await handler.AddClaimsAsync(_httpContext, CancellationToken.None); _httpContext.User.HasClaim(_options.Object.Value.GroupsClaimType, GroupId1).Should().BeTrue(); _httpContext.User.HasClaim(_options.Object.Value.GroupsClaimType, GroupId2).Should().BeTrue(); }
public async Task AddClaimsAsync_WithInvalidAccessToken_ReturnsFalse() { _httpContext.User = new ClaimsPrincipal(new ClaimsIdentity("test")); _tokenAcquisition.Setup(x => x.GetAccessTokenOnBehalfOfUserAsync(It.IsAny <IEnumerable <string> >(), null)) .ThrowsAsync(new MsalUiRequiredException("test", "test")); var handler = new GraphApiClaimsHandler(_tokenAcquisition.Object, _graphApiClient.Object, _memoryCache, _options.Object); var result = await handler.AddClaimsAsync(_httpContext, CancellationToken.None); result.Should().BeFalse(); }
public async Task AddClaimsAsync_WithCachedEntries_DoesNotCallGraphApi() { IEnumerable <string> groupIds = new[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() }; _memoryCache.Set($"{UserOid1}:{_options.Object.Value.GroupsClaimType}", groupIds); var handler = new GraphApiClaimsHandler(_tokenAcquisition.Object, _graphApiClient.Object, _memoryCache, _options.Object); await handler.AddClaimsAsync(_httpContext, CancellationToken.None); _graphApiClient.Verify(x => x.GetMemberGroupsAsync(It.IsAny <string>(), It.IsAny <GetMemberGroupsRequest>(), It.IsAny <CancellationToken>()), Times.Never()); }
public async Task AddClaimsAsync_WithCachedEntries_ReturnsCachedEntries() { IEnumerable <string> groupIds = new[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() }; _memoryCache.Set($"{UserOid1}:{_options.Object.Value.GroupsClaimType}", groupIds); var handler = new GraphApiClaimsHandler(_tokenAcquisition.Object, _graphApiClient.Object, _memoryCache, _options.Object); await handler.AddClaimsAsync(_httpContext, CancellationToken.None); _httpContext.User.FindAll(_options.Object.Value.GroupsClaimType).Select(x => x.Value) .Should().BeEquivalentTo(groupIds); }