public SaveResultModel <User> RemoveFriend(string username, string friendUsername) { var user = GetUserByUsername(username); var result = new SaveResultModel <User> { Model = user }; var friend = GetUserByUsername(friendUsername); if (user.Friends != null) { if (friend == null) { result.ErrorMessages = new List <string> { "The person you are trying to remove is not a valid user." }; } else if (user.Friends.Contains(friend)) { user.Friends.Remove(friend); this._userRepository.Update(user); _unitOfWork.Commit(); result.Success = true; } else { result.ErrorMessages = new List <string> { "The person you are trying to remove is not your friend." }; } } return(result); }
public dynamic Save() { ProjectAggregateViewModel viewModel = this.Bind <ProjectAggregateViewModel>(); ProjectRequestAggregateModel model = new ProjectRequestAggregateModel(); model.ProjectId = viewModel.ProjectId; model.AggregateTarget = viewModel.AggregateTarget; model.RegularExpression = viewModel.RegularExpression; SaveResultModel result = null; _dbContext.BeginTransaction(); try { _createProjectRequestAggregateCommand.Execute(model); _dbContext.Commit(); result = new SaveResultModel(model.Id.ToString(), true, Enumerable.Empty <string>().ToArray()); } catch (ValidationException vex) { result = new SaveResultModel(String.Empty, false, vex.ValidationErrors); _dbContext.Rollback(); } return(this.Response.AsJson(result)); }
public void CreateUser_UserIsCreated() { string originalPwd = "somePwd"; User userToSave = new User(); userToSave.Id = 1; userToSave.Username = "******"; userToSave.Email = "*****@*****.**"; userToSave.Password = originalPwd; userToSave.Currency = Models.Enums.Currency.CAD; userToSave.PhoneNumber = "51878928"; List <User> userTable = new List <User>(); SetupMocks(new List <User>()); SaveResultModel <User> result = _userService.CreateUser(userToSave); User createdUser = _userService.GetUser(userToSave.Id); _dataMock.Verify(m => m.Add(It.IsAny <User>()), Times.Once); Assert.IsTrue(result.Success); Assert.IsNotNull(createdUser); Assert.AreEqual(createdUser.Username, userToSave.Username); Assert.IsTrue(SecurePasswordHasher.Verify(originalPwd, createdUser.Password)); Assert.AreEqual(createdUser.Currency, userToSave.Currency); Assert.AreEqual(createdUser.PhoneNumber, userToSave.PhoneNumber); }
public void PostGroup_CorrectGroup_ReturnsOk() { var fakeGroup = new Group { Name = "MyGroup", Category = GroupCategory.Friends, Users = new List <User>() { new User { Username = "******" } }, CurrentBalance = 0 }; var fakeSaveResult = new SaveResultModel <Group> { Model = fakeGroup, Success = true }; var groupServiceMock = new Mock <IGroupService>(); groupServiceMock.Setup(m => m.CreateGroup(It.IsAny <Group>())).Returns(fakeSaveResult); controller = new GroupsController(groupServiceMock.Object, null); var result = controller.Post(fakeGroup); Assert.IsTrue(result != null); Assert.IsInstanceOfType(result, typeof(OkNegotiatedContentResult <Group>)); }
public void RemoveFriend_Validate_CannotEliminateLinkOfInexistentUsername() { User userPrincipal = new User(); userPrincipal.Id = 1; userPrincipal.Username = "******"; userPrincipal.Email = "*****@*****.**"; userPrincipal.PhoneNumber = "514111111"; User friendOfUser = new User(); friendOfUser.Id = 2; friendOfUser.Username = "******"; friendOfUser.Email = "*****@*****.**"; friendOfUser.PhoneNumber = "514111111"; userPrincipal.Friends = new List <User>(); userPrincipal.Friends.Add(friendOfUser); string usernameInExistent = "usernameInExistent"; SetupMocks(new List <User> { userPrincipal, friendOfUser }); SaveResultModel <User> result = _userService.RemoveFriend(userPrincipal.Username, usernameInExistent); User UserModified = _userService.GetUser(userPrincipal.Id); Assert.IsFalse(result.Success); Assert.IsTrue(UserModified.Friends.Count == 1); }
public void RemoveFriend_EliminateLinkBetweenUserAndFriend() { User userPrincipal = new User(); userPrincipal.Id = 1; userPrincipal.Username = "******"; userPrincipal.Email = "*****@*****.**"; userPrincipal.PhoneNumber = "514111111"; User friendOfUser = new User(); friendOfUser.Id = 2; friendOfUser.Username = "******"; friendOfUser.Email = "*****@*****.**"; friendOfUser.PhoneNumber = "514111111"; userPrincipal.Friends = new List <User>(); userPrincipal.Friends.Add(friendOfUser); SetupMocks(new List <User> { userPrincipal, friendOfUser }); SaveResultModel <User> result = _userService.RemoveFriend(userPrincipal.Username, friendOfUser.Username); User UserModified = _userService.GetUser(userPrincipal.Id); Assert.IsTrue(result.Success); Assert.IsTrue(UserModified.Friends.Count == 0); }
public void PutExpense_CorrectExpense_ReturnOk() { var fakeExpense = new Expense { Description = "tmp", Type = ExpenseType.Entertainment, Date = DateTime.Now, Currency = Currency.CAD, IsTaxIncluded = true, CurrentAmount = 1, InitialAmount = 1, Payer = new User() }; var fakeSaveResult = new SaveResultModel <Expense> { Model = fakeExpense, Success = true }; var expenseServiceMock = new Mock <IExpenseService>(); var groupServiceMock = new Mock <IGroupService>(); groupServiceMock.Setup(m => m.GetGroup(It.IsAny <int>())).Returns(new Group()); expenseServiceMock.Setup(m => m.UpdateExpense(It.IsAny <Expense>())).Returns(fakeSaveResult); controller = new GroupsController(groupServiceMock.Object, expenseServiceMock.Object); var result = controller.PutExpense(10, 5, new Expense()); Assert.IsTrue(result != null); Assert.IsInstanceOfType(result, typeof(OkNegotiatedContentResult <Expense>)); }
public void AddFriend_CreateLinkBetweenUserAndFriend() { User userPrincipal = new User(); userPrincipal.Id = 1; userPrincipal.Username = "******"; userPrincipal.Email = "*****@*****.**"; userPrincipal.PhoneNumber = "514111111"; User friendToAdd = new User(); friendToAdd.Id = 2; friendToAdd.Username = "******"; friendToAdd.Email = "*****@*****.**"; friendToAdd.PhoneNumber = "514111111"; SetupMocks(new List <User> { userPrincipal, friendToAdd }); SaveResultModel <User> result = _userService.AddFriend(userPrincipal.Username, friendToAdd.Username); User UserModified = _userService.GetUser(userPrincipal.Id); Assert.IsTrue(result.Success); Assert.IsTrue(UserModified.Friends.Count == 1); }
private TransactionResponseModel HandleSaving(SaveResultModel saveResult, TransactionResponseModel result, IUnitOfWork unit, string accountNumber) { if (saveResult.IsSuccessful) { var account = unit.Repository <Account>().Get().SingleOrDefault(a => a.AccountNumber == accountNumber); if (account != null) { return(new TransactionResponseModel { IsSuccessful = saveResult.IsSuccessful, Message = saveResult.Message, CurrentBalance = result.CurrentBalance, RowVersion = Convert.ToBase64String(account.RowVersion) }); } return(new TransactionResponseModel { IsSuccessful = false, Message = Message.AccountNotFound }); } return(new TransactionResponseModel { IsSuccessful = saveResult.IsSuccessful, Message = saveResult.Message, RowVersion = result.RowVersion }); }
public SaveResultModel <User> CreateUser(User userToSave) { var result = new SaveResultModel <User> { Model = userToSave }; IList <string> errorMessages = new List <string>(); if (!_userValidator.Validate(userToSave, out errorMessages)) { result.Success = false; result.ErrorMessages = errorMessages; return(result); } var nameAlreadyExists = _userRepository.Get(g => g.Username == userToSave.Username) != null; if (nameAlreadyExists) { result.Success = false; result.ErrorMessages = new List <string> { "Username already exists." }; return(result); } userToSave.Password = SecurePasswordHasher.Hash(userToSave.Password); this._userRepository.Add(userToSave); _unitOfWork.Commit(); result.Success = true; return(result); }
public void CreateUser_Validate_ShouldDetectInvalidInput() { SetupMocks(new List <User>()); User userToSave = new User(); SaveResultModel <User> result = _userService.CreateUser(userToSave); Assert.IsFalse(result.Success); }
private SaveResultModel <User> ReturnSimpleErrorResult(string message) { var result = new SaveResultModel <User> { ErrorMessages = new List <string>() }; result.Success = false; result.ErrorMessages.Add(message); return(result); }
public async Task <IActionResult> SaveResult(string tournamentName, SaveResultModel saveResultModel) { var request = new CreateGameResultRequest(tournamentName, saveResultModel.GuestTeamName, saveResultModel.GuestTeamResult, saveResultModel.HomeTeamName, saveResultModel.HomeTeamResult); await _mediator.Send(request); return(Ok()); }
public void Save_ValidProject_Saves() { // setup ProjectModel project = DataHelper.CreateProjectModel(); project.Name = "TestProject"; var currentUser = new UserIdentity() { Id = Guid.NewGuid(), UserName = "******" }; currentUser.Claims = new string[] { Claims.ProjectEdit }; var browser = new Browser((bootstrapper) => bootstrapper.Module(new ProjectModule(_dbContext, _projectValidator, _createProjectCommand, _deleteProjectCommand, _projectRepo, _logFileRepo, _requestRepo, _projectRequestAggregateRepo)) .RequestStartup((container, pipelines, context) => { context.CurrentUser = currentUser; }) ); _createProjectCommand.Execute(Arg.Any <ProjectModel>()).Returns(project); _projectValidator.Validate(Arg.Any <ProjectModel>()).Returns(new ValidationResult()); // execute var response = browser.Post(Actions.Project.Save, (with) => { with.HttpRequest(); with.FormsAuth(currentUser.Id, new Nancy.Authentication.Forms.FormsAuthenticationConfiguration()); with.FormValue("Name", project.Name); }); // assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); // check the result SaveResultModel result = JsonConvert.DeserializeObject <SaveResultModel>(response.Body.AsString()); Assert.IsTrue(result.Success); Assert.AreEqual(project.Id.ToString(), result.Id); Assert.AreEqual(0, result.Messages.Length); // the project should have been added _createProjectCommand.Received(1).Execute(Arg.Any <ProjectModel>()); _dbContext.Received(1).BeginTransaction(); _dbContext.Received(1).Commit(); }
public dynamic ProjectSave() { ProjectFormViewModel model = this.Bind <ProjectFormViewModel>(); ProjectModel project = Mapper.Map <ProjectFormViewModel, ProjectModel>(model); ValidationResult validationResult = _projectValidator.Validate(project); if (validationResult.Success) { _dbContext.BeginTransaction(); project = _createProjectCommand.Execute(project); _dbContext.Commit(); } SaveResultModel result = new SaveResultModel(project.Id.ToString(), validationResult.Success, validationResult.Messages.ToArray()); return(this.Response.AsJson(result)); }
public void ModifyGroup_InvalidGroup_ReturnsBadRequest() { var fakeSaveResult = new SaveResultModel <Group> { Model = null, Success = false }; var groupServiceMock = new Mock <IGroupService>(); groupServiceMock.Setup(m => m.ModifyGroup(It.IsAny <Group>())).Returns(fakeSaveResult); controller = new GroupsController(groupServiceMock.Object, Mock.Of <IExpenseService>()); var result = controller.Put(null); Assert.IsTrue(result != null); Assert.IsInstanceOfType(result, typeof(BadRequestResult)); }
public void ModifyGroup_ValidGroup_ReturnsOk() { var fakeSaveResult = new SaveResultModel <Group> { Model = null, Success = true }; var groupServiceMock = new Mock <IGroupService>(); groupServiceMock.Setup(m => m.ModifyGroup(It.IsAny <Group>())).Returns(fakeSaveResult); controller = new GroupsController(groupServiceMock.Object, Mock.Of <IExpenseService>()); var result = controller.Put(new Group { Name = "Group" }); Assert.IsTrue(result != null); Assert.IsInstanceOfType(result, typeof(OkNegotiatedContentResult <Group>)); }
public void Save_InvalidProject_ReturnsFailure() { // setup var currentUser = new UserIdentity() { Id = Guid.NewGuid(), UserName = "******" }; currentUser.Claims = new string[] { Claims.ProjectEdit }; var browser = new Browser((bootstrapper) => bootstrapper.Module(new ProjectModule(_dbContext, _projectValidator, _createProjectCommand, _deleteProjectCommand, _projectRepo, _logFileRepo, _requestRepo, _projectRequestAggregateRepo)) .RequestStartup((container, pipelines, context) => { context.CurrentUser = currentUser; }) ); _projectValidator.Validate(Arg.Any <ProjectModel>()).Returns(new ValidationResult("error")); // execute var response = browser.Post(Actions.Project.Save, (with) => { with.HttpRequest(); with.FormsAuth(currentUser.Id, new Nancy.Authentication.Forms.FormsAuthenticationConfiguration()); with.FormValue("Name", "password"); }); // assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); // check the result SaveResultModel result = JsonConvert.DeserializeObject <SaveResultModel>(response.Body.AsString()); Assert.AreEqual("0", result.Id); Assert.IsFalse(result.Success); Assert.AreEqual(1, result.Messages.Length); // the project should not have been added _createProjectCommand.DidNotReceive().Execute(Arg.Any <ProjectModel>()); }
public void RemoveFriend_Validate_IfEliminateFriendNotExitingAsFriend() { User userPrincipal = new User(); userPrincipal.Id = 1; userPrincipal.Username = "******"; userPrincipal.Email = "*****@*****.**"; userPrincipal.PhoneNumber = "514111111"; User friendOfUser = new User(); friendOfUser.Id = 2; friendOfUser.Username = "******"; friendOfUser.Email = "*****@*****.**"; friendOfUser.PhoneNumber = "514111111"; User notFriendOfUser = new User(); notFriendOfUser.Id = 2; notFriendOfUser.Username = "******"; notFriendOfUser.Email = "*****@*****.**"; notFriendOfUser.PhoneNumber = "514111112"; userPrincipal.Friends = new List <User>(); userPrincipal.Friends.Add(friendOfUser); SetupMocks(new List <User> { userPrincipal, friendOfUser, notFriendOfUser }); SaveResultModel <User> result = _userService.RemoveFriend(userPrincipal.Username, notFriendOfUser.Username); User UserModified = _userService.GetUser(userPrincipal.Id); Assert.IsFalse(result.Success); Assert.IsTrue(UserModified.Friends.Count == 1); }
public void PutExpense_ErrorUpdateExpense_ReturnBadRequest() { var fakeSaveResult = new SaveResultModel <Expense> { Model = null, Success = false, ErrorMessages = new List <string> { "error." } }; var expenseServiceMock = new Mock <IExpenseService>(); var groupServiceMock = new Mock <IGroupService>(); groupServiceMock.Setup(m => m.GetGroup(It.IsAny <int>())).Returns(new Group()); expenseServiceMock.Setup(m => m.UpdateExpense(It.IsAny <Expense>())).Returns(fakeSaveResult); controller = new GroupsController(groupServiceMock.Object, expenseServiceMock.Object); var result = controller.PutExpense(10, 5, new Expense()); Assert.IsTrue(result != null); Assert.IsInstanceOfType(result, typeof(BadRequestErrorMessageResult)); }
public void CreateUser_Validate_ShouldDetectExistingUser() { SetupMocks(new List <User> { new User() { Id = 101, Username = "******", Password = "******", Currency = Models.Enums.Currency.CAD, PhoneNumber = "51878928" } }); User userToSave = new User(); userToSave.Id = 1; userToSave.Username = "******"; userToSave.Password = "******"; userToSave.Currency = Models.Enums.Currency.CAD; userToSave.PhoneNumber = "51878928"; SaveResultModel <User> result = _userService.CreateUser(userToSave); Assert.IsFalse(result.Success); }
public void Save_OnSaveValidationError_ErrorReturnedInResponse() { int projectId = new Random().Next(1, 100); string exceptionMessage = Guid.NewGuid().ToString(); // setup var currentUser = new UserIdentity() { Id = Guid.NewGuid(), UserName = "******" }; currentUser.Claims = new string[] { Claims.ProjectEdit }; _createProjectRequestAggregateCommand.When(x => x.Execute(Arg.Any <ProjectRequestAggregateModel>())) .Do((c) => { throw new ValidationException(exceptionMessage); }); var browser = new Browser((bootstrapper) => bootstrapper.Module(new ProjectRequestAggregateModule(_dbContext, _createProjectRequestAggregateCommand, _deleteProjectRequestAggregateCommand)) .RequestStartup((container, pipelines, context) => { context.CurrentUser = currentUser; }) ); // execute var url = Actions.ProjectRequestAggregate.Save(); var response = browser.Post(url, (with) => { with.HttpRequest(); with.FormsAuth(currentUser.Id, new Nancy.Authentication.Forms.FormsAuthenticationConfiguration()); with.FormValue("projectId", projectId.ToString()); }); // assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); SaveResultModel result = JsonConvert.DeserializeObject <SaveResultModel>(response.Body.AsString()); Assert.IsFalse(result.Success); _createProjectRequestAggregateCommand.Received(1).Execute(Arg.Any <ProjectRequestAggregateModel>()); _dbContext.Received(1).Rollback(); }
public ActionResult Save(FormCollection formCollection) { string id = formCollection["Id"]; bool enableCaptcha = Convert.ToBoolean(formCollection["EnableCaptcha"]); string thankYouMessage = formCollection["ThankYouMessage"]; string redirectUrl = formCollection["RedirectUrl"]; string emailAddress = formCollection["EmailAddress"]; string contentBlockTitle = formCollection["ContentBlockTitle"]; string formUrl = formCollection["FormUrl"]; #region Validate Captcha if (enableCaptcha) { var recaptchaVerificationHelper = this.GetRecaptchaVerificationHelper(captchaSettings.Value.PrivateKey); if (string.IsNullOrEmpty(recaptchaVerificationHelper.Response)) { var result = new SaveResultModel { Success = false, Message = T(KoreCmsLocalizableStrings.ContentBlocks.FormBlock.PleaseEnterCaptcha).Text, RedirectUrl = Request.UrlReferrer != null?Request.UrlReferrer.ToString() : Url.Content("~/") }; if (Request.IsAjaxRequest()) { return(Json(result)); } return(View("Kore.Web.ContentManagement.Areas.Admin.ContentBlocks.Views.FormBlock.SaveResult", result)); } var recaptchaVerificationResult = recaptchaVerificationHelper.VerifyRecaptchaResponse(); if (recaptchaVerificationResult != RecaptchaVerificationResult.Success) { var result = new SaveResultModel { Success = false, Message = T(KoreCmsLocalizableStrings.ContentBlocks.FormBlock.PleaseEnterCorrectCaptcha).Text, RedirectUrl = Request.UrlReferrer != null?Request.UrlReferrer.ToString() : Url.Content("~/") }; if (Request.IsAjaxRequest()) { return(Json(result)); } return(View("Kore.Web.ContentManagement.Areas.Admin.ContentBlocks.Views.FormBlock.SaveResult", result)); } } #endregion Validate Captcha var values = Request.Form.AllKeys.ToDictionary(key => key, key => (object)formCollection[key]); // Remove some items values.Remove("Id"); values.Remove("EnableCaptcha"); values.Remove("captcha_challenge"); values.Remove("captcha_response"); values.Remove("ThankYouMessage"); values.Remove("RedirectUrl"); values.Remove("EmailAddress"); values.Remove("ContentBlockTitle"); values.Remove("X-Requested-With"); values.Remove("__RequestVerificationToken"); var subject = contentBlockTitle; #region Render Email Body string body = string.Empty; var viewEngineResult = ViewEngines.Engines.FindView(ControllerContext, "MessageTemplate", null); // If someone has provided a custom template (see LocationFormatProvider) if (viewEngineResult.View != null) { body = RenderRazorPartialViewToString("MessageTemplate", values); } else { body = RenderRazorPartialViewToString( "Kore.Web.ContentManagement.Areas.Admin.ContentBlocks.Views.FormBlock.MessageTemplate", values); } #endregion Render Email Body #region Create Mail Message var mailMessage = new MailMessage { Subject = subject, SubjectEncoding = Encoding.UTF8, Body = body, BodyEncoding = Encoding.UTF8, IsBodyHtml = true }; //mailMessage.To.Add(emailAddress); if (Request.Files.Count > 0) { foreach (var fileName in Request.Files.AllKeys) { var file = Request.Files[fileName]; if (file != null && file.ContentLength > 0) { mailMessage.Attachments.Add(new Attachment(file.InputStream, file.FileName)); } } } #endregion Create Mail Message #region Custom Form Processing try { foreach (var processor in processors) { processor.Process(formCollection, mailMessage); } } catch (Exception x) { Logger.Error("Error while trying to process form block.", x); } #endregion Custom Form Processing if (!string.IsNullOrWhiteSpace(formUrl)) { #region Custom Form URL var content = new FormUrlEncodedContent( formCollection.AllKeys.ToDictionary(k => k, v => formCollection[v])); HttpResponseMessage httpResponseMessage; using (var client = new HttpClient()) { httpResponseMessage = client.PostAsync(formUrl, content).Result; } bool success = httpResponseMessage.IsSuccessStatusCode; var result = new SaveResultModel { Success = success, Message = success ? thankYouMessage : string.Format("{0}: {1}", (int)httpResponseMessage.StatusCode, httpResponseMessage.ReasonPhrase), RedirectUrl = !string.IsNullOrWhiteSpace(redirectUrl) ? redirectUrl : Url.Content("~/") }; if (Request.IsAjaxRequest()) { return(Json(result)); } return(View("Kore.Web.ContentManagement.Areas.Admin.ContentBlocks.Views.FormBlock.SaveResult", result)); #endregion Custom Form URL } else { #region Default Behaviour (Email) try { // Clear the Recipients list in case it's been set by an IFormBlockProcessor mailMessage.To.Clear(); mailMessage.To.Add(emailAddress); emailSender.Send(mailMessage); var result = new SaveResultModel { Success = true, Message = thankYouMessage, RedirectUrl = !string.IsNullOrWhiteSpace(redirectUrl) ? redirectUrl : Url.Content("~/") }; if (Request.IsAjaxRequest()) { return(Json(result)); } return(View("Kore.Web.ContentManagement.Areas.Admin.ContentBlocks.Views.FormBlock.SaveResult", result)); } catch (Exception x) { Logger.Error(x.Message, x); var result = new SaveResultModel { Success = false, Message = x.GetBaseException().Message, RedirectUrl = Request.UrlReferrer != null?Request.UrlReferrer.ToString() : Url.Content("~/") }; if (Request.IsAjaxRequest()) { return(Json(result)); } return(View("Kore.Web.ContentManagement.Areas.Admin.ContentBlocks.Views.FormBlock.SaveResult", result)); } #endregion Default Behaviour (Email) } }