public void SetLoginTokenForSessionAsync_ShouldFindTheSessionAndSetTheToken()
        {
            //Arrange
            var loginToken = Guid.NewGuid().ToString();

            var existingSession = new LoginSessionBuilder().Build();

            _loginSessionRepositoryMock
            .Setup(repo => repo.GetSingleAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync(existingSession);

            //Act
            _service.SetLoginTokenForSessionAsync(existingSession.PublicIdentifier, loginToken).Wait();

            //Assert
            Assert.That(existingSession.LoginToken, Is.EqualTo(loginToken));

            _loginSessionRepositoryMock.Verify(repo => repo.GetSingleAsync(existingSession.PublicIdentifier, null, null), Times.Once);
            _loginSessionRepositoryMock.Verify(repo => repo.UpdateAsync(existingSession), Times.Once);
        }
        public void CancelSessionAsync_ShouldFindTheSessionAndMarkItAsCancelled()
        {
            //Arrange
            var ipAddress        = "111.210.100.1";
            var publicIdentifier = Guid.NewGuid().ToString();

            var existingSession = new LoginSessionBuilder().WithIsCancelled(false).Build();

            _loginSessionRepositoryMock
            .Setup(repo => repo.GetSingleAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync(existingSession);

            //Act
            _service.CancelSessionAsync(publicIdentifier, ipAddress).Wait();

            //Assert
            Assert.That(existingSession.IsCancelled, Is.True);

            _loginSessionRepositoryMock.Verify(repo => repo.GetSingleAsync(publicIdentifier, ipAddress, null), Times.Once);
            _loginSessionRepositoryMock.Verify(repo => repo.UpdateAsync(existingSession), Times.Once);
        }
        public void GetSessionAsync_ShouldUseRepo()
        {
            //Arrange
            var ipAddress        = "111.210.100.1";
            var publicIdentifier = Guid.NewGuid().ToString();
            var sessionToken     = Guid.NewGuid().ToString();

            var existingSession = new LoginSessionBuilder().Build();

            _loginSessionRepositoryMock
            .Setup(repo => repo.GetSingleAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync(existingSession);

            //Act
            var retrievedLoginSession = _service.GetSessionAsync(publicIdentifier, ipAddress, sessionToken).Result;

            //Assert
            Assert.That(retrievedLoginSession, Is.Not.Null);
            Assert.That(retrievedLoginSession, Is.EqualTo(existingSession));

            _loginSessionRepositoryMock.Verify(repo => repo.GetSingleAsync(publicIdentifier, ipAddress, sessionToken), Times.Once);
        }