public async Task SignInUserPartiallyAsync_GivenValidUserProfileAndNoReturnUrl_ExpectIdentityToBeSetWithPartialSchemaAndNoUserData() { var userId = Guid.NewGuid(); var authServiceMock = new Mock <IAuthenticationService>(); var serviceProviderMock = new Mock <IServiceProvider>(); serviceProviderMock .Setup(_ => _.GetService(typeof(IAuthenticationService))) .Returns(authServiceMock.Object); var httpContext = new DefaultHttpContext { RequestServices = serviceProviderMock.Object, }; var httpContextAccessor = new Mock <IHttpContextAccessor>(); httpContextAccessor.Setup(x => x.HttpContext).Returns(httpContext); var userQueries = new Mock <IUserQueries>(); var authenticationService = new AuthenticationService( httpContextAccessor.Object, userQueries.Object); await authenticationService.SignInUserPartiallyAsync(userId, MfaProvider.App); authServiceMock.Verify( x => x.SignInAsync( It.IsAny <HttpContext>(), "login-partial", It.Is <ClaimsPrincipal>(x => x.HasClaim(c => c.Type == ClaimTypes.Anonymous) && !x.HasClaim(c => c.Type == ClaimTypes.UserData)), It.IsAny <AuthenticationProperties>()), Times.Once); }
public async Task SignInUserAsync_GivenUserDoesNotExist_ExpectException() { var httpContextAccessor = new Mock <IHttpContextAccessor>(); var userQueries = new Mock <IUserQueries>(); userQueries.Setup(x => x.GetSystemProfileByUserId(It.IsAny <Guid>())) .ReturnsAsync(() => Maybe <SystemProfileModel> .Nothing); var authenticationService = new AuthenticationService( httpContextAccessor.Object, userQueries.Object); await Assert.ThrowsAsync <InvalidOperationException>(() => authenticationService.SignInUserAsync(Guid.Empty)); }
public async Task SignInUserAsync_GivenUserExists_ExpectIdentityToBeSet() { var userId = Guid.NewGuid(); var authServiceMock = new Mock <IAuthenticationService>(); var serviceProviderMock = new Mock <IServiceProvider>(); serviceProviderMock .Setup(_ => _.GetService(typeof(IAuthenticationService))) .Returns(authServiceMock.Object); var httpContext = new DefaultHttpContext { RequestServices = serviceProviderMock.Object, }; var httpContextAccessor = new Mock <IHttpContextAccessor>(); httpContextAccessor.Setup(x => x.HttpContext).Returns(httpContext); var userQueries = new Mock <IUserQueries>(); userQueries.Setup(x => x.GetSystemProfileByUserId(It.IsAny <Guid>())) .ReturnsAsync( () => Maybe.From(new SystemProfileModel( new string('*', 5), new string('*', 5), new string('*', 5), true, new List <string>()))); var authenticationService = new AuthenticationService( httpContextAccessor.Object, userQueries.Object); await authenticationService.SignInUserAsync(userId); authServiceMock.Verify( x => x.SignInAsync( It.IsAny <HttpContext>(), CookieAuthenticationDefaults.AuthenticationScheme, It.Is <ClaimsPrincipal>(x => x.HasClaim(c => c.Type == ClaimTypes.Upn && c.Value == userId.ToString()) && x.HasClaim(c => c.Type == ClaimTypes.UserData)), It.IsAny <AuthenticationProperties>()), Times.Once); }