public void GetProfileDataAsync_UserFound_NoClaimsRequested_NoIssuedClaims() { // Arrange var userId = Guid.NewGuid(); var options = new MembershipOptions(); var membershipService = A.Fake <IMembershipService>(); var roleService = A.Fake <IRoleService>(); var user = new MembershipUser(); A.CallTo(() => membershipService.GetUserAsync(userId)).Returns(Task.FromResult(user)); var context = new ProfileDataRequestContext { Subject = new ClaimsPrincipal(new ClaimsIdentity(new List <Claim> { new Claim(Constants.ClaimTypes.Subject, userId.ToString("N")) })), AllClaimsRequested = false, RequestedClaimTypes = new List <string>() }; var service = new MembershipUserService(options, membershipService, roleService); // Act service.GetProfileDataAsync(context).Wait(); // Assert context.IssuedClaims.Should().BeNullOrEmpty(); A.CallTo(() => membershipService.GetUserAsync(userId)); }
public void GetProfileDataAsync_UserNotFound_ThrowsArgumentException() { // Arrange var userId = Guid.NewGuid(); var options = new MembershipOptions(); var membershipService = A.Fake <IMembershipService>(); var roleService = A.Fake <IRoleService>(); A.CallTo(() => membershipService.GetUserAsync(userId)).Returns(Task.FromResult((MembershipUser)null)); var context = new ProfileDataRequestContext { Subject = new ClaimsPrincipal(new ClaimsIdentity(new List <Claim> { new Claim(Constants.ClaimTypes.Subject, userId.ToString("N")) })) }; var service = new MembershipUserService(options, membershipService, roleService); Action getProfileDataAsync = () => service.GetProfileDataAsync(context).Wait(); // Act getProfileDataAsync.Should().Throw <ArgumentException>().WithMessage("Invalid subject identifier"); // Assert A.CallTo(() => membershipService.GetUserAsync(userId)).MustHaveHappened(); }
public void GetProfileDataAsync_UserFound_AllClaimsRequested_RolesIncluded_NoIssuedClaims() { // Arrange var userId = Guid.NewGuid(); var options = new MembershipOptions { UseRoleProviderSource = true, IdentityProvider = "idsvr" }; var membershipService = A.Fake <IMembershipService>(); var roleService = A.Fake <IRoleService>(); var user = new MembershipUser { UserId = userId, UserName = "******", Email = "*****@*****.**", IsLockedOut = false }; A.CallTo(() => membershipService.GetUserAsync(userId)) .Returns(Task.FromResult(user)); A.CallTo(() => roleService.GetRolesForUser("*****@*****.**")) .Returns(Task.FromResult(new[] { "role1", "role2", "role3" })); var context = new ProfileDataRequestContext { Subject = new ClaimsPrincipal(new ClaimsIdentity(new List <Claim> { new Claim(Constants.ClaimTypes.Subject, userId.ToString("N")) })), AllClaimsRequested = true, RequestedClaimTypes = new List <string>() }; var service = new MembershipUserService(options, membershipService, roleService); // Act service.GetProfileDataAsync(context).Wait(); // Assert var issuedClaims = context.IssuedClaims.ToList(); issuedClaims.Should().HaveCount(11); issuedClaims.ShouldContain(JwtClaimTypes.Subject, userId.ToString("N")); issuedClaims.ShouldContain(JwtClaimTypes.PreferredUserName, "*****@*****.**"); issuedClaims.ShouldContain(JwtClaimTypes.Email, "*****@*****.**"); issuedClaims.ShouldContain(JwtClaimTypes.IdentityProvider, "idsvr"); issuedClaims.ShouldContain(JwtClaimTypes.Role, "role1"); issuedClaims.ShouldContain(JwtClaimTypes.Role, "role2"); issuedClaims.ShouldContain(JwtClaimTypes.Role, "role3"); A.CallTo(() => membershipService.GetUserAsync(userId)); }
public void GetProfileDataAsync_SubjectClaimMissing_ThrowsInvalidOperationException() { // Arrange var options = new MembershipOptions(); var membershipService = A.Fake <IMembershipService>(); var roleService = A.Fake <IRoleService>(); var context = new ProfileDataRequestContext { Subject = new ClaimsPrincipal(new ClaimsIdentity(new List <Claim>())) }; var service = new MembershipUserService(options, membershipService, roleService); Action getProfileDataAsync = () => service.GetProfileDataAsync(context).Wait(); // Act + Assert getProfileDataAsync.Should().Throw <InvalidOperationException>(); }
public void GetProfileDataAsync_SubjectNull_ThrowsArgumentNullException() { // Arrange var options = new MembershipOptions(); var membershipService = A.Fake <IMembershipService>(); var roleService = A.Fake <IRoleService>(); var context = new ProfileDataRequestContext { Subject = null }; var service = new MembershipUserService(options, membershipService, roleService); Action getProfileDataAsync = () => service.GetProfileDataAsync(context).Wait(); // Act + Assert getProfileDataAsync.Should().Throw <ArgumentNullException>() .And.ParamName.Should().Be("subject"); }
public void GetProfileDataAsync_SubjectClaimInvalid_ThrowsArgumentException(string subjectId) { // Arrange var options = new MembershipOptions(); var membershipService = A.Fake <IMembershipService>(); var roleService = A.Fake <IRoleService>(); var context = new ProfileDataRequestContext { Subject = new ClaimsPrincipal(new ClaimsIdentity(new List <Claim> { new Claim(Constants.ClaimTypes.Subject, subjectId) })) }; var service = new MembershipUserService(options, membershipService, roleService); Action getProfileDataAsync = () => service.GetProfileDataAsync(context).Wait(); // Act + Assert getProfileDataAsync.Should().Throw <ArgumentException>().WithMessage("Invalid subject identifier"); }