public async Task Callback_Should_Return_ViewResult_When_IsNativeClient_Is_True() { var externalLoginResultOutput = new ExternalLoginResultOutput("https://localhost:500/home", true); var expectedRedirectViewModel = new RedirectViewModel(externalLoginResultOutput.ReturnUrl); _externalLoginInteractorMock.Setup(x => x.ExecuteAsync(It.IsAny <string>())).ReturnsAsync(externalLoginResultOutput); var result = await _controller.Callback(); var viewResult = result.As <ViewResult>(); viewResult.ViewName.Should().Be("Redirect"); viewResult.Model.Should().BeEquivalentTo(expectedRedirectViewModel); }
public async Task Callback_Should_Return_RedirectResult_When_IsNativeClient_Is_False_Or_Null(bool?isNativeClient) { const string returnUrl = "https://localhost:500/home"; var externalLoginResultOutput = new ExternalLoginResultOutput(returnUrl, isNativeClient); _externalLoginInteractorMock.Setup(x => x.ExecuteAsync(It.IsAny <string>())).ReturnsAsync(externalLoginResultOutput); var result = await _controller.Callback(); var redirectResult = result.As <RedirectResult>(); redirectResult.Url.Should().Be(returnUrl); redirectResult.Permanent.Should().BeFalse(); }
public async Task ExecuteAsync_Should_Return_ExternalLoginResultOutput() { const string email = "*****@*****.**"; const string returnUrl = "http://localhost"; var claims = new List <Claim> { new Claim(ClaimTypes.Email, email) }; var claimsIdentities = new List <ClaimsIdentity> { new ClaimsIdentity(claims) }; var cp = new ClaimsPrincipal(claimsIdentities); var authResult = new AuthenticateResult(true, null, cp, new Dictionary <string, string> { { "returnUrl", returnUrl } }); var account = Account.Builder() .SetId(Guid.NewGuid()) .SetEmail(email) .SetConfirmed(true) .SetPasswordHash(string.Empty) .SetSecurityStamp(Guid.NewGuid()) .SetCreated(DateTimeOffset.UtcNow) .SetRoles(new List <Guid> { Guid.NewGuid() }) .Build(); account.AddCreatedEvent(Guid.NewGuid()); var authRequest = new AuthorizationRequest("idP", "clientId", returnUrl); var expectedResult = new ExternalLoginResultOutput(returnUrl, false); _authenticationServiceMock.Setup(x => x.AuthenticateAsync(It.IsAny <string>())) .ReturnsAsync(authResult); _accountProviderServiceMock.Setup(x => x.ProvideAccountForExternalLoginAsync(It.IsAny <string>(), It.IsAny <Guid>())) .ReturnsAsync(account); _integrationEventBusMock.Setup(x => x.PublishIntegrationEventAsync(It.IsAny <IIntegrationEvent>())) .Returns(Task.CompletedTask); _accountClaimsCreatorServiceMock.Setup(x => x.CreateAccountClaimsAsync(It.IsAny <Account>())).ReturnsAsync(claims); _signInServiceMock .Setup(x => x.ExternalSignInAsync(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <IEnumerable <Claim> >())).Returns(Task.CompletedTask); _signOutServiceMock.Setup(x => x.SignOutAsync(It.IsAny <string>())).Returns(Task.CompletedTask); _authorizationServiceMock.Setup(x => x.GetAuthorizationRequestAsync(It.IsAny <string>())) .ReturnsAsync(authRequest); var result = await _externalLoginInteractor.ExecuteAsync("Scheme"); result.Should().BeEquivalentTo(expectedResult); }