public void TestLogoffWithCorrectParameters()
        {
            // Arrange

            var requestMock = new Mock <HttpRequestMessage>();

            requestMock.Object.Method = new HttpMethod("POST");
            requestMock.Object.Properties.Add("MS_HttpConfiguration", GetHttpConfiguration());
            requestMock.Object.RequestUri = new Uri(UrlConst);

            SetRequiredUser();

            IUserRepository       userRepository       = GetFakeUserRepository();
            IAuthenticationKeeper authenticationKeeper = GetFakeAuthenticationKeeper();
            IRoleRepository       roleRepository       = GetFakeRoleRepository();

            var usersController = new SessionController(userRepository, roleRepository, authenticationKeeper)
            {
                Request = requestMock.Object
            };

            // Act
            Task <HttpResponseMessage> response = usersController.Delete();

            response.Wait();

            // Assert
            _authenticationKeeperMock.Verify(m => m.Clean(), Times.Once());
            Assert.IsFalse(response.IsFaulted);
            Assert.IsNotNull(response.Result);
            Assert.IsTrue(response.Result.StatusCode == HttpStatusCode.OK);
        }
        public void TestLogonWithCorrectParameters()
        {
            // Arrange
            var requestMock = new Mock <HttpRequestMessage>();

            requestMock.Object.Method = new HttpMethod("POST");
            requestMock.Object.Properties.Add("MS_HttpConfiguration", GetHttpConfiguration());
            requestMock.Object.RequestUri = new Uri(UrlConst);

            SetRequiredUser();

            IUserRepository       userRepository       = GetFakeUserRepository();
            IAuthenticationKeeper authenticationKeeper = GetFakeAuthenticationKeeper();
            IRoleRepository       roleRepository       = GetFakeRoleRepository();

            var usersController = new SessionController(userRepository, roleRepository, authenticationKeeper)
            {
                Request = requestMock.Object
            };

            // Act
            Task <HttpResponseMessage> response = usersController.Post(new SessionLoginModel {
                Email = UserNameConst, Password = PasswordConst
            })
                                                  .ContinueWith(result => result.Result, TaskContinuationOptions.ExecuteSynchronously);

            response.Wait();

            // Assert
            _userRepositoryMock.Verify(m => m.ValidateFormsUserAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Once());
            _authenticationKeeperMock.Verify(m => m.Set(It.IsAny <string>(), It.IsAny <IEnumerable <string> >(), It.IsAny <bool>()), Times.Once());

            Assert.IsFalse(response.IsFaulted);
            Assert.IsNotNull(response.Result);
            Assert.IsTrue(response.Result.StatusCode == HttpStatusCode.OK);
            Assert.AreEqual(_userName, "Email:" + UserNameConst);
            Assert.AreEqual(_password, PasswordConst);
            Assert.AreEqual(_appName, HostConst);

            RevertUser();
        }
        public void TestLogonWithInvalidPassword()
        {
            // Arrange
            const string userNameConst = "";

            var requestMock = new Mock <HttpRequestMessage>();

            requestMock.Object.Method = new HttpMethod("POST");
            requestMock.Object.Properties.Add("MS_HttpConfiguration", GetHttpConfiguration());
            requestMock.Object.RequestUri = new Uri(UrlConst);

            SetRequiredUser();

            IUserRepository       userRepository       = GetFakeUserRepository();
            IAuthenticationKeeper authenticationKeeper = GetFakeAuthenticationKeeper();
            IRoleRepository       roleRepository       = GetFakeRoleRepository();

            var usersController = new SessionController(userRepository, roleRepository, authenticationKeeper)
            {
                Request = requestMock.Object
            };

            // Act
            Task <HttpResponseMessage> response = usersController.Post(new SessionLoginModel {
                Email = userNameConst, Password = PasswordConst
            });

            response.Wait();

            // Assert
            _userRepositoryMock.Verify(m => m.ValidateFormsUserAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Once());
            _authenticationKeeperMock.Verify(m => m.Set(It.IsAny <string>(), It.IsAny <IEnumerable <string> >(), It.IsAny <bool>()), Times.Never());

            Assert.IsFalse(response.IsFaulted);
            Assert.IsNotNull(response.Result);
            Assert.IsTrue(response.Result.StatusCode == HttpStatusCode.BadRequest);

            RevertUser();
        }