コード例 #1
0
        public void CreateProblem()
        {
            var problemService    = A.Fake <IProblemService>();
            var problemRepository = A.Fake <IProblemRepository>();
            var memberRepository  = A.Fake <IMemberRepository>();
            var problemController = ControllerLocator.GetProblemController(memberRepository, problemService, problemRepository);

            var problem = _session.Single <Problem>().Get();
            var member  = _session.Single <Member>().Get();

            var problemModel = new ProblemModel {
                Title = problem.Title, Text = problem.Text
            };

            A.CallTo(() => memberRepository.Get(member.OpenId)).Returns(member);
            A.CallTo(() => problemService.CreateProblem(problem.Title, problem.Text.TransformLine(), member))
            .WithAnyArguments()
            .Returns(problem);

            var redirect = problemController.Create(problemModel) as RedirectToRouteResult;

            Assert.That(redirect, Is.Not.Null);
            Assert.That(redirect.RouteValues["action"], Is.EqualTo("Details"));
            Assert.That(redirect.RouteValues["id"], Is.EqualTo(problem.Id.ToString()));
        }
コード例 #2
0
        public void LoadMemberProfileWithNote()
        {
            var member = new Member
            {
                Email    = "*****@*****.**",
                OpenId   = ConnectionHelper.OpenId,
                UserName = "******",
                Note     = 2345
            };

            var memberRepository  = A.Fake <IMemberRepository>();
            var accountController = ControllerLocator.GetAccountControllerForConnectedUser(memberRepository);

            A.CallTo(() => memberRepository.Get(member.OpenId)).Returns(member);

            var result       = accountController.Profile() as ViewResult;
            var memberResult = result.ViewData.Model as ProfileModel;

            Assert.That(result, Is.Not.Null);
            Assert.That(memberResult.Email, Is.EqualTo(member.Email));
            Assert.That(memberResult.UserName, Is.EqualTo(member.UserName));
            Assert.That(memberResult.Note, Is.EqualTo(new NoteModel(member.Note)));

            A.CallTo(() => memberRepository.Get(member.OpenId)).MustHaveHappened();
        }
コード例 #3
0
        public void Test_Locate_Delete_User()
        {
            ControllerStateCollection strategies = new ControllerStateCollection();

            strategies.Add(new ControllerInfo(typeof(CreateController)));
            strategies.Add(new ControllerInfo(typeof(MockController)));

            ControllerLocator locator = new ControllerLocator(strategies);

            ControllerInfo controller = (ControllerInfo)locator.Locate("Mock", "TestUser");

            Assert.IsNotNull(controller, "No controller found.");
        }
コード例 #4
0
        public void LogUserOut()
        {
            var relyingParty = A.Fake <IAccountRelyingParty>();

            var accountController = ControllerLocator.GetAccountControllerForLoginTest(relyingParty);

            A.CallTo(() => relyingParty.LogOut());

            var result = accountController.LogOut();

            Assert.That(result, Is.Not.Null);

            A.CallTo(() => relyingParty.LogOut()).MustHaveHappened();
        }
コード例 #5
0
        /// <summary>
        /// Tests the LocateFromInterfaces method where the matching interface is implemented by a base type.
        /// </summary>
        public void Test_LocateFromInterfaces_Heirarchy()
        {
            Type   type   = typeof(User);
            string action = "Delete";

            ControllerStateCollection strategies = new ControllerStateCollection();

            strategies.Add(new ControllerInfo(typeof(CreateController)));
            strategies.Add(new ControllerInfo(typeof(DeleteController)));

            ControllerLocator locator = new ControllerLocator(strategies);

            ControllerInfo info = locator.LocateFromInterfaces(action, type);

            Assert.IsNotNull(info, "No controller info found.");
        }
コード例 #6
0
        public void LogInFailedWhenMemberFailRelyingPartyAuthentication()
        {
            var failedResponse = A.Fake <IAuthenticationResponse>();
            var relyingParty   = A.Fake <IAccountRelyingParty>();

            var accountController = ControllerLocator.GetAccountControllerForLoginTest(relyingParty);

            A.CallTo(() => failedResponse.Status).Returns(AuthenticationStatus.Failed);
            A.CallTo(() => relyingParty.GetResponse()).Returns(failedResponse);

            var result = accountController.LogIn() as ViewResult;

            Assert.That(result, Is.Not.Null);
            Assert.That(result.Error(), Is.Not.Null.And.Not.EqualTo(string.Empty));
            Assert.That(result.Error(), Is.EqualTo(Resources.Errors.Account.LogInFailedWithProvidedIdentifier));

            A.CallTo(() => relyingParty.GetResponse()).MustHaveHappened();
            A.CallTo(() => failedResponse.Status).MustHaveHappened();
        }
コード例 #7
0
        public void LogInFailWithInvalidIndentifier()
        {
            var loginModel = new LogInModel {
                OpenId = ConnectionHelper.OpenId
            };
            var relyingParty = A.Fake <IAccountRelyingParty>();

            var accountController = ControllerLocator.GetAccountControllerForLoginTest(relyingParty);

            A.CallTo(() => relyingParty.IsValidIdentifier(ConnectionHelper.OpenId)).Returns(false);

            var result = accountController.LogIn(loginModel) as ViewResult;

            Assert.That(result, Is.Not.Null);
            Assert.That(result.Error("loginIdentifier"), Is.Not.Null);
            Assert.That(result.Error("loginIdentifier"), Is.EqualTo(Resources.Errors.Account.InvalidIndentifier));

            A.CallTo(() => relyingParty.IsValidIdentifier(ConnectionHelper.OpenId)).MustHaveHappened();
        }
コード例 #8
0
        public void LogInMemberWhenRelyingPartyAuthenticationIsSuccessfull()
        {
            var successResponse = A.Fake <IAuthenticationResponse>();
            var relyingParty    = A.Fake <IAccountRelyingParty>();

            var accountController = ControllerLocator.GetAccountControllerForLoginTest(relyingParty);

            A.CallTo(() => successResponse.Status).Returns(AuthenticationStatus.Authenticated);
            A.CallTo(() => relyingParty.GetResponse()).Returns(successResponse);

            var result = accountController.LogIn() as RedirectToRouteResult;

            Assert.That(result, Is.Not.Null);
            Assert.That(result.RouteValues["action"], Is.EqualTo("Index"));
            Assert.That(result.RouteValues["controller"], Is.EqualTo("Home"));

            A.CallTo(() => relyingParty.GetResponse()).MustHaveHappened();
            A.CallTo(() => successResponse.Status).MustHaveHappened();
            A.CallTo(() => relyingParty.LogInMember(successResponse)).MustHaveHappened();
        }
コード例 #9
0
        public void TryLogInByRedirectingUserToRelyingParty()
        {
            var loginModel = new LogInModel {
                OpenId = ConnectionHelper.OpenId
            };
            // We don't care what the result is. We just want to check we get back the same object
            var redirectResult = new EmptyResult();
            var relyingParty   = A.Fake <IAccountRelyingParty>();

            var accountController = ControllerLocator.GetAccountControllerForLoginTest(relyingParty);

            A.CallTo(() => relyingParty.IsValidIdentifier(ConnectionHelper.OpenId)).Returns(true);
            A.CallTo(() => relyingParty.CreateRequest(ConnectionHelper.OpenId)).Returns(redirectResult);

            var result = accountController.LogIn(loginModel);

            Assert.That(result, Is.Not.Null);
            Assert.That(result, Is.SameAs(redirectResult));

            A.CallTo(() => relyingParty.IsValidIdentifier(ConnectionHelper.OpenId)).MustHaveHappened();
            A.CallTo(() => relyingParty.CreateRequest(ConnectionHelper.OpenId)).MustHaveHappened();
        }
コード例 #10
0
        public void LoadMemberProfileWithNoteWithoutEmail()
        {
            var member = new Member
            {
                Email    = null, // No email was given by member
                OpenId   = ConnectionHelper.OpenId,
                UserName = "******",
                Note     = 2345
            };

            var memberRepository  = A.Fake <IMemberRepository>();
            var accountController = ControllerLocator.GetAccountControllerForConnectedUser(memberRepository);

            A.CallTo(() => memberRepository.Get(member.OpenId)).Returns(member);

            var result       = accountController.Profile() as ViewResult;
            var memberResult = result.ViewData.Model as ProfileModel;

            Assert.That(result, Is.Not.Null);
            Assert.That(memberResult.Email, Is.EqualTo(string.Empty));

            A.CallTo(() => memberRepository.Get(member.OpenId)).MustHaveHappened();
        }