/// <summary> /// Deletes user account from the database taking as parameter <see cref="UserToDelete"/>. /// </summary> /// <param name="user">User for log in</param> /// <exception cref="ArgumentNullException"></exception> /// <exception cref="InvalidOperationException"></exception> public void DeleteAccount(UserToDelete user) { if (user == null) { throw new ArgumentNullException(nameof(user), "User can not be null."); } if (!IsPasswordConfirmed(user.Username, user.Password)) { throw new InvalidOperationException("Wrong password."); } var query = @"DELETE FROM [User] WHERE [Username] = @name"; using (SqlConnection connection = new SqlConnection(_connectionString)) { connection.QueryFirstOrDefault <UserToDelete>(query, new { name = user.Username }); } }
public void DeleteAccount_InternalServerError_Test() { var accountServiceMock = new Mock <IAccountService>(); var user = new UserToDelete(); accountServiceMock.Setup(x => x.DeleteAccount(user)).Throws <Exception>(); var controller = new AccountController(accountServiceMock.Object); var actualResult = controller.DeleteAccount(user); var result = (ObjectResult)actualResult; var asJson = JsonConvert.SerializeObject(result.Value); var deserialized = JsonConvert.DeserializeObject <Dictionary <string, object> >(asJson); Assert.IsTrue((bool)deserialized["Success"] == false); accountServiceMock.VerifyAll(); }
public void DeleteAccount_Successfully_Test() { var accountServiceMock = new Mock <IAccountService>(); var user = new UserToDelete(); accountServiceMock.Setup(x => x.DeleteAccount(user)); var controller = new AccountController(accountServiceMock.Object); var actualResult = controller.DeleteAccount(user); var okResult = (OkObjectResult)actualResult; var asJson = JsonConvert.SerializeObject(okResult.Value); var deserialized = JsonConvert.DeserializeObject <Dictionary <string, object> >(asJson); Assert.IsTrue((bool)deserialized["Success"]); accountServiceMock.VerifyAll(); }
public void DeleteAccount_WrongPassword_Test() { var accountServiceMock = new Mock <IAccountService>(); var user = new UserToDelete(); accountServiceMock.Setup(x => x.DeleteAccount(user)) .Throws(new InvalidOperationException("Wrong password.")); var controller = new AccountController(accountServiceMock.Object); var actualResult = controller.DeleteAccount(user); var badRequestResult = (BadRequestObjectResult)actualResult; var asJson = JsonConvert.SerializeObject(badRequestResult.Value); var deserialized = JsonConvert.DeserializeObject <Dictionary <string, object> >(asJson); Assert.AreEqual("Wrong password.", deserialized["Error"]); accountServiceMock.VerifyAll(); }
public IActionResult DeleteAccount(UserToDelete user) { try { _accountService.DeleteAccount(user); return(Ok(new { Success = true, Message = "Successfully deleted account." })); } catch (InvalidOperationException invalidOperationException) { return(BadRequest(new { Success = false, Error = invalidOperationException.Message })); } catch (ArgumentNullException argumentNullException) { return(BadRequest(new { Success = false, Error = argumentNullException.Message })); } catch (Exception exception) { return(new ObjectResult(new { Success = false, Error = exception.Message }) { StatusCode = StatusCodes.Status500InternalServerError }); } }