예제 #1
0
        public void CreateNotValid()
        {
            var controller = GetController();
            var context    = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
            const string tos      = "blah blah blah";
            var          settings = new Settings {
                TermsOfService = tos
            };

            _settingsManager.Setup(s => s.Current).Returns(settings);
            _userService.Setup(u => u.IsEmailInUse(It.IsAny <string>())).Returns(true);
            _userService.Setup(u => u.IsNameInUse(It.IsAny <string>())).Returns(true);
            var signUp = new SignupData {
                Email = "*****@*****.**", IsCoppa = true, IsDaylightSaving = true, IsSubscribed = true, IsTos = true, Name = "Diana", Password = "******", PasswordRetype = "pwd", TimeZone = -5
            };
            var result = controller.Create(signUp).Result;

            Assert.IsFalse(controller.ModelState.IsValid);
            Assert.IsInstanceOf <ViewResult>(result);
            Assert.IsInstanceOf <String>(controller.ViewData[AccountController.CoppaDateKey]);
            Assert.IsInstanceOf <String>(controller.ViewData[AccountController.TosKey]);
            Assert.AreEqual(tos, controller.ViewData[AccountController.TosKey]);
            _userService.Verify(u => u.CreateUser(It.IsAny <SignupData>(), It.IsAny <string>()), Times.Never());
            _profileService.Verify(p => p.Create(It.IsAny <User>(), It.IsAny <SignupData>()), Times.Never());
            _newAccountMailer.Verify(n => n.Send(It.IsAny <User>(), It.IsAny <string>()), Times.Never());
        }
		private HttpContextHelper GetHelper()
		{
			var helper = new HttpContextHelper();
			helper.MockRequest.Setup(r => r.Cookies).Returns(new HttpCookieCollection());
			helper.MockResponse.Setup(r => r.Cookies).Returns(new HttpCookieCollection());
			return helper;
		}
예제 #3
0
        public void LoginAndAssociateSuccess()
        {
            const string email    = "*****@*****.**";
            const string password = "******";
            var          user     = new User(12, DateTime.MaxValue)
            {
                Email = email
            };
            const bool persist       = true;
            var        controller    = GetController();
            var        contextHelper = new HttpContextHelper();

            contextHelper.MockRequest.Setup(x => x.UserHostAddress).Returns(String.Empty);
            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            _userService.Setup(u => u.Login(email, password, persist, contextHelper.MockContext.Object)).Returns(true);
            _userService.Setup(x => x.GetUserByEmail(email)).Returns(user);
            var authManager = new Mock <IAuthenticationManager>();

            _owinContext.Setup(x => x.Authentication).Returns(authManager.Object);
            var externalAuthResult = new ExternalAuthenticationResult();
            var authResult         = Task.FromResult(externalAuthResult);

            _externalAuth.Setup(x => x.GetAuthenticationResult(authManager.Object)).Returns(authResult);

            var result = controller.LoginAndAssociate(email, password, persist).Result;

            _userAssociation.Verify(x => x.Associate(user, authResult.Result, It.IsAny <string>()));
            _userService.Verify(u => u.Login(email, password, persist, contextHelper.MockContext.Object), Times.Once());
            Assert.IsInstanceOf <JsonResult>(result);
            var resultObject = (BasicJsonMessage)result.Data;

            Assert.IsTrue(resultObject.Result);
        }
예제 #4
0
        public void EmailPostForbiddenWhenNoUser()
        {
            var controller = GetController();
            var context    = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
            controller.EmailUser(654, "blah", "mah message");
            context.MockResponse.VerifySet(r => r.StatusCode = (int)HttpStatusCode.Forbidden);
        }
예제 #5
0
        private void MockUpUrl(AccountController controller)
        {
            var contextHelper = new HttpContextHelper();

            contextHelper.MockRequest.Setup(r => r.Url).Returns(new Uri("http://foo/"));
            contextHelper.MockRequestContext.Setup(r => r.HttpContext).Returns(new Mock <HttpContextBase>().Object);
            contextHelper.MockRequestContext.Setup(r => r.RouteData).Returns(new RouteData());
            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
        }
		public void UserCanSeeSubTopics()
		{
			var controller = GetController();
			var context = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
			var user = new User(2, DateTime.MinValue);
			controller.SetUser(user);
			var result = controller.Topics();
			Assert.IsInstanceOf<PagedTopicContainer>(result.ViewData.Model);
		}
예제 #7
0
        public void ManagePhotosViewNoUser()
        {
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            var result = controller.ManagePhotos();

            Assert.AreEqual("EditAccountNoUser", result.ViewName);
        }
예제 #8
0
        public void ChangeEmailNoUser()
        {
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            var result = controller.ChangeEmail(new UserEditSecurity());

            Assert.AreEqual("EditAccountNoUser", result.ViewName);
        }
		private UserSessionService GetService()
		{
			_mockSettingsManager = new Mock<ISettingsManager>();
			_mockUserRepo = new Mock<IUserRepository>();
			_mockUserSessionRepo = new Mock<IUserSessionRepository>();
			_mockSecurityLogService = new Mock<ISecurityLogService>();
			_contextHelper = new HttpContextHelper();
			var service = new UserSessionService(_mockSettingsManager.Object, _mockUserRepo.Object, _mockUserSessionRepo.Object, _mockSecurityLogService.Object);
			return service;
		}
예제 #10
0
		public void NotFoundActionResult()
		{
			var controller = new TestController();
			var contextHelper = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			var guid = Guid.NewGuid();
			var result = controller.NotFound("blah", guid);
			Assert.IsInstanceOf<ViewResult>(result);
			Assert.AreEqual("blah", result.ViewName);
			Assert.AreEqual(guid, result.ViewData.Model);
			contextHelper.MockResponse.VerifySet(r => r.StatusCode = (int)HttpStatusCode.NotFound);
		}
예제 #11
0
        public void VerifyNoUser()
        {
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            contextHelper.MockRequest.Setup(r => r.UserHostAddress).Returns("123");
            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            _userService.Setup(u => u.VerifyAuthorizationCode(It.IsAny <Guid>(), It.IsAny <string>())).Returns((User)null);
            var result = controller.Verify(Guid.NewGuid().ToString());

            Assert.AreEqual("VerifyFail", result.ViewName);
        }
예제 #12
0
        public void ViewProfile404ForNoUser()
        {
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            _userService.Setup(x => x.GetUser(It.IsAny <int>())).Returns((User)null);
            var result = controller.ViewProfile(123);

            Assert.AreEqual("NotFound", result.ViewName);
            contextHelper.MockResponse.VerifySet(r => r.StatusCode = (int)HttpStatusCode.NotFound);
        }
        public void DeleteRole()
        {
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            contextHelper.MockRequest.Setup(r => r.UserHostAddress).Returns("123");
            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            var result = controller.DeleteRole("blah");

            _userService.Verify(u => u.DeleteRole("blah", It.IsAny <User>(), It.IsAny <string>()), Times.Once());
            Assert.IsInstanceOf <RedirectToRouteResult>(result);
        }
		public void LogoutAsync()
		{
			var controller = GetController();
			var contextHelper = new HttpContextHelper();
			contextHelper.MockRequest.Setup(r => r.UserHostAddress).Returns("123");
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);

			var result = controller.LogoutAsync();

			_userService.Verify(u => u.Logout(It.IsAny<User>(), It.IsAny<string>()), Times.Once());
			var resultObject = (BasicJsonMessage)result.Data;
			Assert.IsTrue(resultObject.Result);
		}
예제 #15
0
        public void ManagePhotosNoUser()
        {
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            var result = controller.ManagePhotos(new UserEditPhoto {
                DeleteAvatar = true, DeleteImage = true
            });

            _userService.Verify(u => u.EditUserProfileImages(It.IsAny <User>(), It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <HttpPostedFileBase>(), It.IsAny <HttpPostedFileBase>()), Times.Never());
            Assert.AreEqual("EditAccountNoUser", ((ViewResult)result).ViewName);
        }
예제 #16
0
        public void EmailPostNotFoundWhenUserDoesntExist()
        {
            var controller = GetController();
            var context    = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
            var user = UserTest.GetTestUser();

            controller.SetUser(user);
            _userService.Setup(u => u.GetUser(It.IsAny <int>())).Returns((User)null);
            controller.EmailUser(987, "blah", "mah message");
            context.MockResponse.VerifySet(r => r.StatusCode = (int)HttpStatusCode.NotFound);
        }
        public void UserCanSeeSubTopics()
        {
            var controller = GetController();
            var context    = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
            var user = new User(2, DateTime.MinValue);

            controller.SetUser(user);
            var result = controller.Topics();

            Assert.IsInstanceOf <PagedTopicContainer>(result.ViewData.Model);
        }
        public void DeleteAndBanUser()
        {
            var controller = GetController();
            var context    = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
            var targetUser = new User(1, DateTime.MinValue);
            var user       = new User(2, DateTime.MinValue);

            _userService.Setup(u => u.GetUser(1)).Returns(targetUser);
            controller.SetUser(user);
            controller.DeleteAndBanUser(1);
            _userService.Verify(u => u.DeleteUser(targetUser, user, It.IsAny <string>(), true));
        }
예제 #19
0
        public void LogoutAsync()
        {
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            contextHelper.MockRequest.Setup(r => r.UserHostAddress).Returns("123");
            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);

            var result = controller.LogoutAsync();

            _userService.Verify(u => u.Logout(It.IsAny <User>(), It.IsAny <string>()), Times.Once());
            var resultObject = (BasicJsonMessage)result.Data;

            Assert.IsTrue(resultObject.Result);
        }
예제 #20
0
        public void ClientSettingsFromMapperWithUser()
        {
            var controller = GetController();
            var context    = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
            var user = UserTest.GetTestUser();

            controller.SetUser(user);
            var profile = new Profile();

            _profileService.Setup(p => p.GetProfile(user)).Returns(profile);
            controller.ClientSettings();
            _clientSettingsMapper.Verify(c => c.GetClientSettings(profile), Times.Exactly(1));
        }
예제 #21
0
        public void EditProfile()
        {
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            var user = UserTest.GetTestUser();

            controller.SetUser(user);
            var userEdit = new UserEditProfile();
            var result   = controller.EditProfile(userEdit);

            _userService.Verify(u => u.EditUserProfile(user, userEdit), Times.Once());
            Assert.IsNotNullOrEmpty(result.ViewData["Result"].ToString());
        }
예제 #22
0
        public void EmailPostForbiddenWhenUserHidesDetails()
        {
            var controller = GetController();
            var context    = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
            var user = UserTest.GetTestUser();

            controller.SetUser(user);
            var toUser = new User(124, DateTime.MinValue);

            _userService.Setup(u => u.GetUser(toUser.UserID)).Returns(toUser);
            _userEmailer.Setup(u => u.IsUserEmailable(toUser)).Returns(false);
            controller.EmailUser(toUser.UserID, "blah", "mah message");
            context.MockResponse.VerifySet(r => r.StatusCode = (int)HttpStatusCode.Forbidden);
        }
예제 #23
0
        public void Verify()
        {
            var user = UserTest.GetTestUser();

            user.AuthorizationKey = Guid.NewGuid();
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            contextHelper.MockRequest.Setup(r => r.UserHostAddress).Returns("123");
            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            _userService.Setup(u => u.VerifyAuthorizationCode(user.AuthorizationKey, It.IsAny <string>())).Returns(user);
            var result = controller.Verify(user.AuthorizationKey.ToString());

            Assert.IsNotNullOrEmpty(result.ViewData["Result"].ToString());
            Assert.AreEqual(String.Empty, result.ViewName);
        }
예제 #24
0
        public void EmailPostCallsMailer()
        {
            var controller = GetController();
            var context    = new HttpContextHelper();

            context.MockRequest.Setup(r => r.UserHostAddress).Returns("1.1.1.1");
            controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
            var user = UserTest.GetTestUser();

            controller.SetUser(user);
            var toUser = new User(124, DateTime.MinValue);

            _userService.Setup(u => u.GetUser(toUser.UserID)).Returns(toUser);
            _userEmailer.Setup(u => u.IsUserEmailable(toUser)).Returns(true);
            controller.EmailUser(toUser.UserID, "blah", "mah message");
            _userEmailer.Verify(u => u.ComposeAndQueue(toUser, user, "1.1.1.1", "blah", "mah message"), Times.Exactly(1));
        }
예제 #25
0
        public void EditSecurityView()
        {
            var controller = GetController();
            var settings   = new Mock <Settings>();

            settings.Setup(x => x.IsNewUserApproved).Returns(true);
            _settingsManager.Setup(x => x.Current).Returns(settings.Object);
            var contextHelper = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            var user = UserTest.GetTestUser();

            controller.SetUser(user);
            var result = controller.Security();

            Assert.IsInstanceOf <UserEditSecurity>(result.ViewData.Model);
            Assert.AreNotEqual("EditAccountNoUser", result.ViewName);
        }
예제 #26
0
        public void ChangeEmailMatchNoApproval()
        {
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            var user = UserTest.GetTestUser();

            controller.SetUser(user);
            _settingsManager.Setup(s => s.Current.IsNewUserApproved).Returns(true);
            var result = controller.ChangeEmail(new UserEditSecurity {
                NewEmail = "*****@*****.**", NewEmailRetype = "*****@*****.**"
            });

            Assert.IsNotNullOrEmpty(result.ViewData["EmailResult"].ToString());
            _userService.Verify(u => u.ChangeEmail(user, It.IsAny <string>(), It.IsAny <User>(), It.IsAny <string>()), Times.Once());
            _newAccountMailer.Verify(n => n.Send(user, It.IsAny <string>()), Times.Never());
        }
예제 #27
0
        public void ManagePhotosView()
        {
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            var user = UserTest.GetTestUser();

            controller.SetUser(user);
            var profile = new Profile(user.UserID);

            _profileService.Setup(p => p.GetProfile(user)).Returns(profile);
            var result = controller.ManagePhotos();

            Assert.IsInstanceOf <UserEditPhoto>(result.ViewData.Model);
            Assert.AreNotEqual("EditAccountNoUser", result.ViewName);
            _profileService.Verify(p => p.GetProfile(user), Times.Once());
        }
예제 #28
0
        public void ChangePasswordNoMatch()
        {
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            var user = UserTest.GetTestUser();

            controller.SetUser(user);
            _userService.Setup(u => u.VerifyPassword(user, It.IsAny <string>())).Returns(true);
            var result = controller.ChangePassword(new UserEditSecurity {
                NewPassword = "******", NewPasswordRetype = "blah2"
            });

            Assert.IsNotNullOrEmpty(result.ViewData["PasswordResult"].ToString());
            Assert.AreNotEqual("EditAccountNoUser", result.ViewName);
            _userService.Verify(u => u.SetPassword(It.IsAny <User>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <User>()), Times.Never());
        }
예제 #29
0
        public void ChangePasswordBadOldPassword()
        {
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            var user = UserTest.GetTestUser();

            controller.SetUser(user);
            _userService.Setup(u => u.VerifyPassword(user, It.IsAny <string>())).Returns(false);
            _settingsManager.Setup(x => x.Current.IsNewUserApproved).Returns(true);
            var result = controller.ChangePassword(new UserEditSecurity {
                OldPassword = "******"
            });

            Assert.IsNotNullOrEmpty(result.ViewData["PasswordResult"].ToString());
            Assert.AreNotEqual("EditAccountNoUser", result.ViewName);
            _userService.Verify(u => u.SetPassword(It.IsAny <User>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <User>()), Times.Never());
        }
예제 #30
0
        public void ManagePhotos()
        {
            var controller         = GetController();
            var context            = new HttpContextHelper();
            var mockFileCollection = new Mock <HttpFileCollectionBase>();
            var avatar             = new Mock <HttpPostedFileBase>();
            var photo = new Mock <HttpPostedFileBase>();

            mockFileCollection.Setup(f => f["avatarFile"]).Returns(avatar.Object);
            mockFileCollection.Setup(f => f["photoFile"]).Returns(photo.Object);
            context.MockRequest.Setup(r => r.Files).Returns(mockFileCollection.Object);
            controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
            var user = UserTest.GetTestUser();

            controller.SetUser(user);
            controller.ManagePhotos(new UserEditPhoto {
                DeleteAvatar = true, DeleteImage = true
            });
            _userService.Verify(u => u.EditUserProfileImages(user, true, true, avatar.Object, photo.Object), Times.Once());
        }
예제 #31
0
        public void ChangePasswordMatchAndValid()
        {
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            var user = UserTest.GetTestUser();

            controller.SetUser(user);
            _userService.Setup(u => u.VerifyPassword(user, It.IsAny <string>())).Returns(true);
            _userService.Setup(u => u.IsPasswordValid(It.IsAny <string>(), It.IsAny <ModelStateDictionary>())).Returns(true);
            var password = "******";
            var result   = controller.ChangePassword(new UserEditSecurity {
                NewPassword = password, NewPasswordRetype = password
            });

            Assert.IsNotNullOrEmpty(result.ViewData["PasswordResult"].ToString());
            Assert.AreNotEqual("EditAccountNoUser", result.ViewName);
            _userService.Verify(u => u.SetPassword(user, password, It.IsAny <string>(), user), Times.Once());
            _userService.Verify(u => u.IsPasswordValid(password, It.IsAny <ModelStateDictionary>()), Times.Once());
        }
예제 #32
0
        public void ChangePasswordFailsRules()
        {
            var controller    = GetController();
            var contextHelper = new HttpContextHelper();

            controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
            var user = UserTest.GetTestUser();

            controller.SetUser(user);
            _userService.Setup(u => u.VerifyPassword(user, It.IsAny <string>())).Returns(true);
            _userService.Setup(u => u.IsPasswordValid(It.IsAny <string>(), It.IsAny <ModelStateDictionary>())).Returns(false).Callback <string, ModelStateDictionary>((p, m) => m.AddModelError("Password", "whatever"));
            var password = "******";

            _settingsManager.Setup(x => x.Current.IsNewUserApproved).Returns(true);
            var result = controller.ChangePassword(new UserEditSecurity {
                NewPassword = password, NewPasswordRetype = password
            });

            Assert.IsNotNullOrEmpty(result.ViewData["PasswordResult"].ToString());
            Assert.AreNotEqual("EditAccountNoUser", result.ViewName);
            _userService.Verify(u => u.SetPassword(user, password, It.IsAny <string>(), It.IsAny <User>()), Times.Never());
            _userService.Verify(u => u.IsPasswordValid(password, It.IsAny <ModelStateDictionary>()), Times.Once());
        }
        public void EditUser()
        {
            var controller         = GetController();
            var context            = new HttpContextHelper();
            var mockFileCollection = new Mock <HttpFileCollectionBase>();
            var avatar             = new Mock <HttpPostedFileBase>();
            var photo = new Mock <HttpPostedFileBase>();

            mockFileCollection.Setup(f => f["avatarFile"]).Returns(avatar.Object);
            mockFileCollection.Setup(f => f["photoFile"]).Returns(photo.Object);
            context.MockRequest.Setup(r => r.Files).Returns(mockFileCollection.Object);
            controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
            var targetUser = new User(1, DateTime.MinValue);
            var user       = new User(2, DateTime.MinValue);
            var userEdit   = new UserEdit {
                DeleteAvatar = true, DeleteImage = true
            };

            _userService.Setup(u => u.GetUser(1)).Returns(targetUser);
            controller.SetUser(user);
            controller.EditUser(1, userEdit);
            _userService.Verify(u => u.EditUser(targetUser, userEdit, true, true, avatar.Object, photo.Object, It.IsAny <string>(), user), Times.Once());
        }
예제 #34
0
		public void CreateNotValid()
		{
			var controller = GetController();
			var context = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
			const string tos = "blah blah blah";
			var settings = new Settings {TermsOfService = tos};
			_settingsManager.Setup(s => s.Current).Returns(settings);
			_userService.Setup(u => u.IsEmailInUse(It.IsAny<string>())).Returns(true);
			_userService.Setup(u => u.IsNameInUse(It.IsAny<string>())).Returns(true);
			var signUp = new SignupData {Email = "*****@*****.**", IsCoppa = true, IsDaylightSaving = true, IsSubscribed = true, IsTos = true, Name = "Diana", Password = "******", PasswordRetype = "pwd", TimeZone = -5};
			var result = controller.Create(signUp).Result;
			Assert.IsFalse(controller.ModelState.IsValid);
			Assert.IsInstanceOf<ViewResult>(result);
			Assert.IsInstanceOf<String>(controller.ViewData[AccountController.CoppaDateKey]);
			Assert.IsInstanceOf<String>(controller.ViewData[AccountController.TosKey]);
			Assert.AreEqual(tos, controller.ViewData[AccountController.TosKey]);
			_userService.Verify(u => u.CreateUser(It.IsAny<SignupData>(), It.IsAny<string>()), Times.Never());
			_profileService.Verify(p => p.Create(It.IsAny<User>(), It.IsAny<SignupData>()), Times.Never());
			_newAccountMailer.Verify(n => n.Send(It.IsAny<User>(), It.IsAny<string>()), Times.Never());
		}
예제 #35
0
		public void ManagePhotos()
		{
			var controller = GetController();
			var context = new HttpContextHelper();
			var mockFileCollection = new Mock<HttpFileCollectionBase>();
			var avatar = new Mock<HttpPostedFileBase>();
			var photo = new Mock<HttpPostedFileBase>();
			mockFileCollection.Setup(f => f["avatarFile"]).Returns(avatar.Object);
			mockFileCollection.Setup(f => f["photoFile"]).Returns(photo.Object);
			context.MockRequest.Setup(r => r.Files).Returns(mockFileCollection.Object);
			controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
			var user = UserTest.GetTestUser();
			controller.SetUser(user);
			controller.ManagePhotos(new UserEditPhoto{ DeleteAvatar = true, DeleteImage = true });
			_userService.Verify(u => u.EditUserProfileImages(user, true, true, avatar.Object, photo.Object), Times.Once());
		}
예제 #36
0
		public void ClientSettingsFromMapperWithUser()
		{
			var controller = GetController();
			var context = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
			var user = UserTest.GetTestUser();
			controller.SetUser(user);
			var profile = new Profile();
			_profileService.Setup(p => p.GetProfile(user)).Returns(profile);
			controller.ClientSettings();
			_clientSettingsMapper.Verify(c => c.GetClientSettings(profile), Times.Exactly(1));
		}
예제 #37
0
		public void EmailPostForbiddenWhenUserHidesDetails()
		{
			var controller = GetController();
			var context = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
			var user = UserTest.GetTestUser();
			controller.SetUser(user);
			var toUser = new User(124, DateTime.MinValue);
			_userService.Setup(u => u.GetUser(toUser.UserID)).Returns(toUser);
			_userEmailer.Setup(u => u.IsUserEmailable(toUser)).Returns(false);
			controller.EmailUser(toUser.UserID, "blah", "mah message");
			context.MockResponse.VerifySet(r => r.StatusCode = (int)HttpStatusCode.Forbidden);
		}
예제 #38
0
		public void ChangePasswordMatchAndValid()
		{
			var controller = GetController();
			var contextHelper = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			var user = UserTest.GetTestUser();
			controller.SetUser(user);
			_userService.Setup(u => u.VerifyPassword(user, It.IsAny<string>())).Returns(true);
			_userService.Setup(u => u.IsPasswordValid(It.IsAny<string>(), It.IsAny<ModelStateDictionary>())).Returns(true);
			var password = "******";
			_settingsManager.Setup(x => x.Current.IsNewUserApproved).Returns(true);
			var result = controller.ChangePassword(new UserEditSecurity { NewPassword = password, NewPasswordRetype = password });
			Assert.IsNotNullOrEmpty(result.ViewData["PasswordResult"].ToString());
			Assert.AreNotEqual("EditAccountNoUser", result.ViewName);
			_userService.Verify(u => u.SetPassword(user, password, It.IsAny<string>(), user), Times.Once());
			_userService.Verify(u => u.IsPasswordValid(password, It.IsAny<ModelStateDictionary>()), Times.Once());
		}
예제 #39
0
		public void ManagePhotosView()
		{
			var controller = GetController();
			var contextHelper = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			var user = UserTest.GetTestUser();
			controller.SetUser(user);
			var profile = new Profile(user.UserID);
			_profileService.Setup(p => p.GetProfile(user)).Returns(profile);
			var result = controller.ManagePhotos();
			Assert.IsInstanceOf<UserEditPhoto>(result.ViewData.Model);
			Assert.AreNotEqual("EditAccountNoUser", result.ViewName);
			_profileService.Verify(p => p.GetProfile(user), Times.Once());
		}
예제 #40
0
		public void EmailPostForbiddenWhenNoUser()
		{
			var controller = GetController();
			var context = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
			controller.EmailUser(654, "blah", "mah message");
			context.MockResponse.VerifySet(r => r.StatusCode = (int)HttpStatusCode.Forbidden);
		}
예제 #41
0
		public void EditUser()
		{
			var controller = GetController();
			var context = new HttpContextHelper();
			var mockFileCollection = new Mock<HttpFileCollectionBase>();
			var avatar = new Mock<HttpPostedFileBase>();
			var photo = new Mock<HttpPostedFileBase>();
			mockFileCollection.Setup(f => f["avatarFile"]).Returns(avatar.Object);
			mockFileCollection.Setup(f => f["photoFile"]).Returns(photo.Object);
			context.MockRequest.Setup(r => r.Files).Returns(mockFileCollection.Object);
			controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
			var targetUser = new User(1, DateTime.MinValue);
			var user = new User(2, DateTime.MinValue);
			var userEdit = new UserEdit {DeleteAvatar = true, DeleteImage = true};
			_userService.Setup(u => u.GetUser(1)).Returns(targetUser);
			controller.SetUser(user);
			controller.EditUser(1, userEdit);
			_userService.Verify(u => u.EditUser(targetUser, userEdit, true, true, avatar.Object, photo.Object, It.IsAny<string>(), user), Times.Once());
		}
예제 #42
0
		public void DeleteRole()
		{
			var controller = GetController();
			var contextHelper = new HttpContextHelper();
			contextHelper.MockRequest.Setup(r => r.UserHostAddress).Returns("123");
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			var result = controller.DeleteRole("blah");
			_userService.Verify(u => u.DeleteRole("blah", It.IsAny<User>(), It.IsAny<string>()), Times.Once());
			Assert.IsInstanceOf<RedirectToRouteResult>(result);
		}
예제 #43
0
		public void ChangeEmailNoUser()
		{
			var controller = GetController();
			var contextHelper = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			var result = controller.ChangeEmail(new UserEditSecurity());
			Assert.AreEqual("EditAccountNoUser", result.ViewName);
		}
예제 #44
0
		public void ViewProfile404ForNoUser()
		{
			var controller = GetController();
			var contextHelper = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			_userService.Setup(x => x.GetUser(It.IsAny<int>())).Returns((User) null);
			var result = controller.ViewProfile(123);
			Assert.AreEqual("NotFound", result.ViewName);
			contextHelper.MockResponse.VerifySet(r => r.StatusCode = (int)HttpStatusCode.NotFound);
		}
예제 #45
0
		public void EditSecurityView()
		{
			var controller = GetController();
			var settings = new Mock<Settings>();
			settings.Setup(x => x.IsNewUserApproved).Returns(true);
			_settingsManager.Setup(x => x.Current).Returns(settings.Object);
			var contextHelper = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			var user = UserTest.GetTestUser();
			controller.SetUser(user);
			var result = controller.Security();
			Assert.IsInstanceOf<UserEditSecurity>(result.ViewData.Model);
			Assert.AreNotEqual("EditAccountNoUser", result.ViewName);
		}
예제 #46
0
		private void MockUpUrl(AccountController controller)
		{
			var contextHelper = new HttpContextHelper();
			contextHelper.MockRequest.Setup(r => r.Url).Returns(new Uri("http://foo/"));
			contextHelper.MockRequestContext.Setup(r => r.HttpContext).Returns(new Mock<HttpContextBase>().Object);
			contextHelper.MockRequestContext.Setup(r => r.RouteData).Returns(new RouteData());
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
		}
예제 #47
0
		public void EmailPostNotFoundWhenUserDoesntExist()
		{
			var controller = GetController();
			var context = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
			var user = UserTest.GetTestUser();
			controller.SetUser(user);
			_userService.Setup(u => u.GetUser(It.IsAny<int>())).Returns((User)null);
			controller.EmailUser(987, "blah", "mah message");
			context.MockResponse.VerifySet(r => r.StatusCode = (int)HttpStatusCode.NotFound);
		}
예제 #48
0
		public void ManagePhotosNoUser()
		{
			var controller = GetController();
			var contextHelper = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			var result = controller.ManagePhotos(new UserEditPhoto { DeleteAvatar = true, DeleteImage = true });
			_userService.Verify(u => u.EditUserProfileImages(It.IsAny<User>(), It.IsAny<bool>(), It.IsAny<bool>(), It.IsAny<HttpPostedFileBase>(), It.IsAny<HttpPostedFileBase>()), Times.Never());
			Assert.AreEqual("EditAccountNoUser", ((ViewResult)result).ViewName);
		}
예제 #49
0
		public void VerifyNoUser()
		{
			var controller = GetController();
			var contextHelper = new HttpContextHelper();
			contextHelper.MockRequest.Setup(r => r.UserHostAddress).Returns("123");
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			_userService.Setup(u => u.VerifyAuthorizationCode(It.IsAny<Guid>(), It.IsAny<string>())).Returns((User)null);
			var result = controller.Verify(Guid.NewGuid().ToString());
			Assert.AreEqual("VerifyFail", result.ViewName);
		}
예제 #50
0
		public void ManagePhotosViewNoUser()
		{
			var controller = GetController();
			var contextHelper = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			var result = controller.ManagePhotos();
			Assert.AreEqual("EditAccountNoUser", result.ViewName);
		}
예제 #51
0
		public void Verify()
		{
			var user = UserTest.GetTestUser();
			user.AuthorizationKey = Guid.NewGuid();
			var controller = GetController();
			var contextHelper = new HttpContextHelper();
			contextHelper.MockRequest.Setup(r => r.UserHostAddress).Returns("123");
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			_userService.Setup(u => u.VerifyAuthorizationCode(user.AuthorizationKey, It.IsAny<string>())).Returns(user);
			var result = controller.Verify(user.AuthorizationKey.ToString());
			Assert.IsNotNullOrEmpty(result.ViewData["Result"].ToString());
			Assert.AreEqual(String.Empty, result.ViewName);
		}
예제 #52
0
		public void DeleteAndBanUser()
		{
			var controller = GetController();
			var context = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
			var targetUser = new User(1, DateTime.MinValue);
			var user = new User(2, DateTime.MinValue);
			_userService.Setup(u => u.GetUser(1)).Returns(targetUser);
			controller.SetUser(user);
			controller.DeleteAndBanUser(1);
			_userService.Verify(u => u.DeleteUser(targetUser, user, It.IsAny<string>(), true));
		}
예제 #53
0
		public void ChangePasswordNoMatch()
		{
			var controller = GetController();
			var contextHelper = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			var user = UserTest.GetTestUser();
			controller.SetUser(user);
			_userService.Setup(u => u.VerifyPassword(user, It.IsAny<string>())).Returns(true);
			_settingsManager.Setup(x => x.Current.IsNewUserApproved).Returns(true);
			var result = controller.ChangePassword(new UserEditSecurity{ NewPassword = "******", NewPasswordRetype = "blah2"});
			Assert.IsNotNullOrEmpty(result.ViewData["PasswordResult"].ToString());
			Assert.AreNotEqual("EditAccountNoUser", result.ViewName);
			_userService.Verify(u => u.SetPassword(It.IsAny<User>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<User>()), Times.Never());
		}
		public void LoginAndAssociateSuccess()
		{
			const string email = "*****@*****.**";
			const string password = "******";
			var user = new User(12, DateTime.MaxValue) {Email = email};
			const bool persist = true;
			var controller = GetController();
			var contextHelper = new HttpContextHelper();
			contextHelper.MockRequest.Setup(x => x.UserHostAddress).Returns(String.Empty);
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			_userService.Setup(u => u.Login(email, password, persist, contextHelper.MockContext.Object)).Returns(true);
			_userService.Setup(x => x.GetUserByEmail(email)).Returns(user);
			var authManager = new Mock<IAuthenticationManager>();
			_owinContext.Setup(x => x.Authentication).Returns(authManager.Object);
			var externalAuthResult = new ExternalAuthenticationResult();
			var authResult = Task.FromResult(externalAuthResult);
			_externalAuth.Setup(x => x.GetAuthenticationResult(authManager.Object)).Returns(authResult);

			var result = controller.LoginAndAssociate(email, password, persist).Result;

			_userAssociation.Verify(x => x.Associate(user, authResult.Result, It.IsAny<string>()));
			_userService.Verify(u => u.Login(email, password, persist, contextHelper.MockContext.Object), Times.Once());
			Assert.IsInstanceOf<JsonResult>(result);
			var resultObject = (BasicJsonMessage)result.Data;
			Assert.IsTrue(resultObject.Result);
		}
예제 #55
0
		public void EditProfile()
		{
			var controller = GetController();
			var contextHelper = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			var user = UserTest.GetTestUser();
			controller.SetUser(user);
			var userEdit = new UserEditProfile();
			var result = controller.EditProfile(userEdit);
			_userService.Verify(u => u.EditUserProfile(user, userEdit), Times.Once());
			Assert.IsNotNullOrEmpty(result.ViewData["Result"].ToString());
		}
예제 #56
0
		public void EmailPostCallsMailer()
		{
			var controller = GetController();
			var context = new HttpContextHelper();
			context.MockRequest.Setup(r => r.UserHostAddress).Returns("1.1.1.1");
			controller.ControllerContext = new ControllerContext(context.MockContext.Object, new RouteData(), controller);
			var user = UserTest.GetTestUser();
			controller.SetUser(user);
			var toUser = new User(124, DateTime.MinValue);
			_userService.Setup(u => u.GetUser(toUser.UserID)).Returns(toUser);
			_userEmailer.Setup(u => u.IsUserEmailable(toUser)).Returns(true);
			controller.EmailUser(toUser.UserID, "blah", "mah message");
			_userEmailer.Verify(u => u.ComposeAndQueue(toUser, user, "1.1.1.1", "blah", "mah message"), Times.Exactly(1));
		}
예제 #57
0
		public void ChangeEmailMatchNoApproval()
		{
			var controller = GetController();
			var contextHelper = new HttpContextHelper();
			controller.ControllerContext = new ControllerContext(contextHelper.MockContext.Object, new RouteData(), controller);
			var user = UserTest.GetTestUser();
			controller.SetUser(user);
			_settingsManager.Setup(s => s.Current.IsNewUserApproved).Returns(true);
			var result = controller.ChangeEmail(new UserEditSecurity { NewEmail = "*****@*****.**", NewEmailRetype = "*****@*****.**" });
			Assert.IsNotNullOrEmpty(result.ViewData["EmailResult"].ToString());
			_userService.Verify(u => u.ChangeEmail(user, It.IsAny<string>(), It.IsAny<User>(), It.IsAny<string>()), Times.Once());
			_newAccountMailer.Verify(n => n.Send(user, It.IsAny<string>()), Times.Never());
		}