Beispiel #1
0
        public async Task ExecuteAsync_Should_Return_LoggedOutOutput_When_Account_Is_Not_Authenticated()
        {
            const string logoutId       = "logoutId";
            var          cp             = new ClaimsPrincipal();
            var          logoutRequest  = new LogoutRequest(true, string.Empty, string.Empty, Guid.NewGuid(), Guid.NewGuid());
            var          expectedResult = new LoggedOutOutput(logoutId, logoutRequest.PostLogoutRedirectUri,
                                                              logoutRequest.SignOutIFrameUrl, logoutRequest.ClientId, null);

            _logoutServiceMock.Setup(x => x.GetLogoutRequestAsync(It.IsAny <string>()))
            .ReturnsAsync(logoutRequest);
            _claimsPrincipalServiceMock.Setup(x => x.GetClaimsPrincipal()).Returns(cp);

            var result = await _interactor.ExecuteAsync(logoutId);

            result.Should().BeEquivalentTo(expectedResult);
        }
Beispiel #2
0
        public async Task <IActionResult> Logout(string logoutId, string processLogout)
        {
            if (string.Equals(processLogout, bool.TrueString, StringComparison.InvariantCultureIgnoreCase))
            {
                var loggedOutOutput = await _loggedOutInteractor.ExecuteAsync(logoutId);

                var loggedOutViewModel = _mapper.Map <LoggedOutOutput, LoggedOutViewModel>(loggedOutOutput);
                if (loggedOutViewModel.TriggerExternalSignOut)
                {
                    var url = Url.Action("Logout", new { logoutId = loggedOutViewModel.LogoutId });
                    return(SignOut(new AuthenticationProperties {
                        RedirectUri = url
                    }, loggedOutViewModel.ExternalAuthenticationScheme));
                }
                return(View("LoggedOut", loggedOutViewModel));
            }

            return(RedirectToAction("Index", "Home"));
        }