public void Get_GivenExistingSession_ReturnSecureCookie()
        {
            var extension = Make_SecureCookie();
            var expected  = new SecureCookie();
            var userGuid  = new Guid("10000000-0000-0000-0000-000000000001");
            PortalRequest.SetupGet(p => p.User).Returns(new UserInfo{Guid = userGuid});
            AuthenticationRepository.Setup(m => m.SecureCookieGet(null, userGuid, null)).Returns(new[] { expected });

            var result = extension.Get().First();

            Assert.That(result, Is.EqualTo(expected));
        }
        public void Create_IsAuthenticated_CreateAndReturnSecureCookie()
        {
            var extension   = Make_SecureCookie();
            var expected    = new SecureCookie();
            var userGuid    = new Guid("10000000-0000-0000-0000-000000000001");
            var sessionGuid = new Guid("12000000-0000-0000-0000-000000000021");
            PortalRequest.SetupGet(p => p.User).Returns(new UserInfo { Guid = userGuid });
            PortalRequest.SetupGet(p => p.Session).Returns(new Session(){ Guid = sessionGuid });
            AuthenticationRepository.Setup(m => m.SecureCookieGet(It.IsAny<Guid>(), userGuid, It.IsAny<Guid>())).Returns(new[] { expected });

            var result = extension.Create();

            Assert.That(result, Is.EqualTo(expected));
            AuthenticationRepository.Verify(m => m.SecureCookieCreate(It.IsAny<Guid>(), userGuid, It.IsAny<Guid>(), sessionGuid));
        }
        public void Login_GivenExistingCookie_UseCookieAndCreateANewOneAndAuthenticateSession()
        {
            var extension        = Make_SecureCookie();
            var userGuid         = new Guid("10000000-0000-0000-0000-000000000001");
            var secureCookieGuid = new Guid("12000000-0000-0000-0000-000000000021");
            var passwordGuid     = new Guid("12300000-0000-0000-0000-000000000321");
            var sessionGuid      = new Guid("12340000-0000-0000-0000-000000004321");
            var expected         = new SecureCookie { Guid = secureCookieGuid, UserGuid = userGuid };
            PortalRequest.SetupGet(p => p.User).Returns(new UserInfo { Guid = userGuid });
            PortalRequest.SetupGet(p => p.Session).Returns(new Session() { Guid = sessionGuid });
            AuthenticationRepository.Setup(m => m.SecureCookieGet(secureCookieGuid, userGuid, It.Is<Guid>(item => item != passwordGuid))).Returns(new[] { expected });
            AuthenticationRepository.Setup(m => m.SecureCookieGet(secureCookieGuid, null, passwordGuid)).Returns(new[] { expected });

            var result = extension.Login(secureCookieGuid, passwordGuid);

            Assert.That(result.Guid, Is.EqualTo(secureCookieGuid));
            Assert.That(result.UserGuid, Is.EqualTo(userGuid));
            Assert.That(result.PasswordGuid, Is.Not.EqualTo(passwordGuid));
            PortalRepository.Verify(m => m.SessionUpdate(sessionGuid, userGuid));
            AuthenticationRepository.Verify(m => m.SecureCookieCreate(secureCookieGuid, userGuid, It.IsAny<Guid>(), sessionGuid));
        }