Exemplo n.º 1
0
        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.");
        }
Exemplo n.º 2
0
        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.");
        }
Exemplo n.º 3
0
        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.");
            }
        }