test_data_delete.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from sqlalchemy import select, func
  2. from flexmeasures.cli.tests.utils import check_command_ran_without_error, to_flags
  3. from flexmeasures.data.models.audit_log import AuditLog
  4. from flexmeasures.data.models.user import Account, User
  5. from flexmeasures.data.services.users import find_user_by_email
  6. def test_delete_account(
  7. fresh_db, setup_roles_users_fresh_db, setup_assets_fresh_db, app
  8. ):
  9. """Check account is deleted + old audit log entries get affected_account_id set to None."""
  10. from flexmeasures.cli.data_delete import delete_account
  11. prosumer: User = find_user_by_email("test_prosumer_user@seita.nl")
  12. prosumer_account_id = prosumer.account_id
  13. num_accounts = fresh_db.session.scalar(select(func.count()).select_from(Account))
  14. # Add creation audit log record
  15. user_creation_audit_log = AuditLog(
  16. event="User Test Prosumer User created test",
  17. affected_user_id=prosumer.id,
  18. affected_account_id=prosumer_account_id,
  19. )
  20. fresh_db.session.add(user_creation_audit_log)
  21. # Delete an account
  22. cli_input = {
  23. "id": prosumer_account_id,
  24. }
  25. runner = app.test_cli_runner()
  26. result = runner.invoke(delete_account, to_flags(cli_input), input="y\n")
  27. check_command_ran_without_error(result)
  28. assert (
  29. "Account Test Prosumer Account has been deleted" in result.output
  30. ), result.exception
  31. assert (
  32. fresh_db.session.scalar(select(func.count()).select_from(Account))
  33. == num_accounts - 1
  34. )
  35. user_creation_audit_log = (
  36. fresh_db.session.query(AuditLog)
  37. .filter_by(event="User Test Prosumer User created test")
  38. .one_or_none()
  39. )
  40. assert user_creation_audit_log.affected_account_id is None