public void Login_WhenReturnUrlIsNull_ReturnsViewResultWhereViewNameIsEqualToLogin()
        {
            Controller sut = CreateSut();

            ViewResult result = (ViewResult)sut.Login();

            Assert.That(result.ViewName, Is.EqualTo("Login"));
        }
        public void Login_WhenReturnUrlIsNull_ReturnsViewResult()
        {
            Controller sut = CreateSut();

            IActionResult result = sut.Login();

            Assert.That(result, Is.TypeOf <ViewResult>());
        }
        public void Login_WhenReturnUrlIsNull_AssertContentWasNotCalledOnUrlHelper()
        {
            Controller sut = CreateSut();

            sut.Login();

            _urlHelperMock.Verify(m => m.Content(It.IsAny <string>()), Times.Never);
        }
        public void Login_WhenReturnUrlIsNull_ReturnsViewResultWhereModelIsNull()
        {
            Controller sut = CreateSut();

            ViewResult result = (ViewResult)sut.Login();

            Assert.That(result.Model, Is.Null);
        }
        public void Login_WhenReturnUrlIsEmpty_AssertIsTrustedDomainWasNotCalledOnTrustedDomainHelper()
        {
            Controller sut = CreateSut();

            sut.Login(string.Empty);

            _trustedDomainHelperMock.Verify(m => m.IsTrustedDomain(It.IsAny <Uri>()), Times.Never);
        }
        public void Login_WhenReturnUrlIsTrustedRelativeUrl_ReturnsViewResultWhereModelIsUri()
        {
            Controller sut = CreateSut();

            string     relativeUrl = $"/{_fixture.Create<string>()}/{_fixture.Create<string>()}";
            ViewResult result      = (ViewResult)sut.Login(relativeUrl);

            Assert.That(result.Model, Is.TypeOf <Uri>());
        }
        public void Login_WhenReturnUrlIsTrustedRelativeUrl_ReturnsViewResultWhereViewNameIsEqualToLogin()
        {
            Controller sut = CreateSut();

            string     relativeUrl = $"/{_fixture.Create<string>()}/{_fixture.Create<string>()}";
            ViewResult result      = (ViewResult)sut.Login(relativeUrl);

            Assert.That(result.ViewName, Is.EqualTo("Login"));
        }
        public void Login_WhenReturnUrlIsTrustedAbsoluteUrl_ReturnsViewResultWhereModelIsUriWithAbsoluteUriEqualToInput()
        {
            Controller sut = CreateSut();

            string absoluteUrl = $"http://localhost//{_fixture.Create<string>()}";
            Uri    result      = (Uri)((ViewResult)sut.Login(absoluteUrl)).Model;

            Assert.That(result.AbsoluteUri, Is.EqualTo(absoluteUrl));
        }
        public void Login_WhenReturnUrlIsTrustedAbsoluteUrl_ReturnsViewResultWhereModelIsUri()
        {
            Controller sut = CreateSut();

            string     absoluteUrl = $"http://localhost//{_fixture.Create<string>()}";
            ViewResult result      = (ViewResult)sut.Login(absoluteUrl);

            Assert.That(result.Model, Is.TypeOf <Uri>());
        }
        public void Login_WhenReturnUrlIsTrustedAbsoluteUrl_ReturnsViewResultWhereViewNameIsEqualToLogin()
        {
            Controller sut = CreateSut();

            string     absoluteUrl = $"http://localhost//{_fixture.Create<string>()}";
            ViewResult result      = (ViewResult)sut.Login(absoluteUrl);

            Assert.That(result.ViewName, Is.EqualTo("Login"));
        }
        public void Login_WhenReturnUrlIsTrustedAbsoluteUrl_ReturnsViewResult()
        {
            Controller sut = CreateSut();

            string        absoluteUrl = $"http://localhost//{_fixture.Create<string>()}";
            IActionResult result      = sut.Login(absoluteUrl);

            Assert.That(result, Is.TypeOf <ViewResult>());
        }
        public void Login_WhenReturnUrlIsTrustedRelativeUrl_ReturnsViewResult()
        {
            Controller sut = CreateSut();

            string        relativeUrl = $"/{_fixture.Create<string>()}/{_fixture.Create<string>()}";
            IActionResult result      = sut.Login(relativeUrl);

            Assert.That(result, Is.TypeOf <ViewResult>());
        }
        public void Login_WhenReturnUrlIsAbsoluteUrl_AssertIsTrustedDomainWasCalledOnTrustedDomainHelperWithAbsoluteUrl()
        {
            Controller sut = CreateSut();

            string absoluteUrl = $"http://localhost//{_fixture.Create<string>()}";

            sut.Login(absoluteUrl);

            _trustedDomainHelperMock.Verify(m => m.IsTrustedDomain(It.Is <Uri>(value => value != null && string.CompareOrdinal(value.AbsoluteUri, absoluteUrl) == 0)), Times.Once);
        }
        public void Login_WhenReturnUrlIsRelativeUrlStartingWithTildeAndSlash_AssertContentWasCalledOnUrlHelper()
        {
            Controller sut = CreateSut();

            string relativeUrl = $"~/{_fixture.Create<string>()}/{_fixture.Create<string>()}";

            sut.Login(relativeUrl);

            _urlHelperMock.Verify(m => m.Content(It.Is <string>(value => string.Compare(value, $"{relativeUrl}", StringComparison.Ordinal) == 0)), Times.Once);
        }
        public void Login_WhenReturnUrlIsAbsoluteUrl_AssertContentWasNotCalledOnUrlHelper()
        {
            Controller sut = CreateSut();

            string absoluteUrl = $"http://localhost//{_fixture.Create<string>()}";

            sut.Login(absoluteUrl);

            _urlHelperMock.Verify(m => m.Content(It.IsAny <string>()), Times.Never);
        }
        public void Login_WhenReturnUrlIsTrustedRelativeUrl_ReturnsViewResultWhereModelIsUriWithAbsoluteUriForInput()
        {
            string     absolutePath = $"/{_fixture.Create<string>()}";
            Controller sut          = CreateSut(absolutePath: absolutePath);

            string relativeUrl = $"/{_fixture.Create<string>()}/{_fixture.Create<string>()}";
            Uri    result      = (Uri)((ViewResult)sut.Login(relativeUrl)).Model;

            Assert.That(result.AbsoluteUri.EndsWith(absolutePath), Is.True);
        }
        public void Login_WhenReturnUrlIsRelativeUrl_AssertIsTrustedDomainWasCalledOnTrustedDomainHelperWithAbsoluteUriForRelativeUrl()
        {
            string     absolutePath = $"/{_fixture.Create<string>()}";
            Controller sut          = CreateSut(absolutePath: absolutePath);

            string relativeUrl = $"/{_fixture.Create<string>()}/{_fixture.Create<string>()}";

            sut.Login(relativeUrl);

            _trustedDomainHelperMock.Verify(m => m.IsTrustedDomain(It.Is <Uri>(value => value != null && value.AbsoluteUri.EndsWith(absolutePath))), Times.Once);
        }