public void SetUp()
        {
            ServiceLocatorInitializer.Init();
            controller = new MembershipController();

            mockedMembershipProvider = MockRepository.GenerateMock<IMembershipProvider>();
            mockedAuthenticationProvider = MockRepository.GenerateMock<IAuthenticationProvider>();
            mockedAuthorizationProvider = MockRepository.GenerateMock<IAuthorizationProvider>();
        }
        public void CanAuthenticate()
        {
            //arrange
            var membershipController = new MembershipController(mockedAuthenticationProvider, mockedAuthorizationProvider,mockedMembershipProvider);
            string validationMessage = "User is authenticated";

            mockedMembershipProvider.Expect(x => x.ValidateUser(null, null, out validationMessage)).IgnoreArguments().Return(true);
            mockedMembershipProvider.Expect(x => x.AuthorizeUser(null, out validationMessage)).IgnoreArguments().Return(true);
            mockedAuthenticationProvider.Expect(x => x.SetAuthCookie(null,true)).IgnoreArguments();

            //act, assert
            RedirectResult  redirectResult = membershipController.Authenticate(null, null, "rememberme", "/").AssertHttpRedirect();
            mockedMembershipProvider.VerifyAllExpectations();
            mockedAuthenticationProvider.VerifyAllExpectations();
        }
        public void CanRedirectToLoginWhenNotAuthenticated()
        {
            //arrange
            var membershipController = new MembershipController(mockedAuthenticationProvider, mockedAuthorizationProvider,mockedMembershipProvider);
            string validationMessage = "Not Authenticated";

            //when validate user returns false
            mockedMembershipProvider.Expect(x => x.ValidateUser("", "", out validationMessage)).IgnoreArguments().Return(false);

            //act, assert
            ViewResult viewResult = membershipController.Authenticate("username", "password", "rememberme", "/").AssertViewRendered();
            Assert.IsNotNull(membershipController.ViewData["ErrorMessage"]);

            mockedAuthenticationProvider.AssertWasNotCalled(x => x.SetAuthCookie("username", true));
            mockedMembershipProvider.VerifyAllExpectations();
        }