public async Task GetProfileDataAsync_WithProfileNameSpecified_ClaimsMapForUserProfileGenerated() { // Assert var identityWithAdditionalClaimsProfileService = new IdentityWithAdditionalClaimsProfileService(fakeUserManager, mockUserClaimsPrincipalFactory, mockLogger, mockProfileRepository, mockApplicationDataPolicyRepository, mockPermissionRepository, mockTeamRepository); fakeUserManager.SetUserModel(userModel); mockUserClaimsPrincipalFactory.CreateAsync(userModel).Returns(profileDataRequestContext.Subject); mockPermissionRepository.GetListAsync(Arg.Any <Guid>()).Returns(new List <PermissionModel>() { new PermissionModel() { Name = "Permission 1" }, new PermissionModel() { Name = "Permission 2" } }); mockApplicationDataPolicyRepository.GetListAsync(Arg.Any <Guid>()).Returns(new List <ApplicationDataPolicyModel>() { new ApplicationDataPolicyModel() { Name = "DP 1" } }); mockTeamRepository.GetListAsync(Arg.Any <Guid>()).Returns(new List <TeamModel>() { new TeamModel() { Name = "Name 1" }, new TeamModel() { Name = "Name 2" } }); mockProfileRepository.GetByNameAsync(Arg.Any <Guid>(), Arg.Any <string>(), Arg.Any <bool>()).Returns(new ProfileModel() { Id = Guid.NewGuid(), Name = "mock_profile" }); profileDataRequestContext.ValidatedRequest = new IdentityServer4.Validation.ValidatedRequest() { Raw = new System.Collections.Specialized.NameValueCollection() }; profileDataRequestContext.ValidatedRequest.Raw.Add("profile_name", "mock_profile"); // Act await identityWithAdditionalClaimsProfileService.GetProfileDataAsync(profileDataRequestContext); // Assert Assert.True(profileDataRequestContext.IssuedClaims.Count > 0, "Issued claims must be greater than 0."); Assert.True(profileDataRequestContext.IssuedClaims.Exists(x => x.Type == "permission" && x.Value == "Permission 1"), "Permission 1 claim must be present and correct."); Assert.True(profileDataRequestContext.IssuedClaims.Exists(x => x.Type == "permission" && x.Value == "Permission 2"), "Permission 2 claim must be present and correct."); Assert.True(profileDataRequestContext.IssuedClaims.Exists(x => x.Type == IdentityServerConstants.StandardScopes.Email && x.Value == userModel.Email), "Email claim must be present and correct."); Assert.True(profileDataRequestContext.IssuedClaims.Exists(x => x.Type == "username" && x.Value == userModel.UserName), "Username claim must be present and correct."); Assert.True(profileDataRequestContext.IssuedClaims.Exists(x => x.Type == "given_name" && x.Value == userModel.FirstName), "Given Name claim must be present and correct."); Assert.True(profileDataRequestContext.IssuedClaims.Exists(x => x.Type == "family_name" && x.Value == userModel.Surname), "Family Name claim must be present and correct."); }
public async Task IsActiveAsync_WithoutUser_IsNotActive() { // Assert var identityWithAdditionalClaimsProfileService = new IdentityWithAdditionalClaimsProfileService(fakeUserManager, mockUserClaimsPrincipalFactory, mockLogger, mockProfileRepository, mockApplicationDataPolicyRepository, mockPermissionRepository, mockTeamRepository); // Act await identityWithAdditionalClaimsProfileService.IsActiveAsync(isActiveContext); // Assert Assert.False(isActiveContext.IsActive, "Context must be inactive."); }
public async Task GetProfileDataAsync_NoProfileNameSpecifiedAndNoSubject_ExceptionThrown() { // Assert var identityWithAdditionalClaimsProfileService = new IdentityWithAdditionalClaimsProfileService(fakeUserManager, mockUserClaimsPrincipalFactory, mockLogger, mockProfileRepository, mockApplicationDataPolicyRepository, mockPermissionRepository, mockTeamRepository); mockUserClaimsPrincipalFactory.CreateAsync(userModel).Returns(profileDataRequestContext.Subject); mockPermissionRepository.GetListAsync(Arg.Any <Guid>()).Returns(new List <PermissionModel>() { new PermissionModel() { Name = "Permission 1" }, new PermissionModel() { Name = "Permission 2" } }); mockApplicationDataPolicyRepository.GetListAsync(Arg.Any <Guid>()).Returns(new List <ApplicationDataPolicyModel>() { new ApplicationDataPolicyModel() { Name = "DP 1" } }); mockTeamRepository.GetListAsync(Arg.Any <Guid>()).Returns(new List <TeamModel>() { new TeamModel() { Name = "Name 1" }, new TeamModel() { Name = "Name 2" } }); profileDataRequestContext.Subject = null; // Act try { await identityWithAdditionalClaimsProfileService.GetProfileDataAsync(profileDataRequestContext); Assert.True(false, "No subject specified MUST throw exception."); } catch { Assert.True(true, "No subject specified MUST throw exception."); } }