Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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);
        }