test_integration.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import pytest
  2. import os
  3. import glob
  4. import yaml
  5. import subprocess
  6. project_root_path = os.path.realpath(os.path.join(__file__, '..', '..'))
  7. script_path = os.path.join(project_root_path, 'scripts', 'order-confirmation-mail-parser')
  8. test_data_path = os.path.join(project_root_path, 'tests', 'data')
  9. def test_integration_stdin():
  10. for mail_path in glob.glob(os.path.join(test_data_path, '*', 'mail_*.eml')):
  11. with open(mail_path, 'r') as mail_file:
  12. process = subprocess.Popen([script_path], stdin = subprocess.PIPE, stdout = subprocess.PIPE)
  13. script_stdout, script_stderr = process.communicate(input = mail_file.read())
  14. result = yaml.load(script_stdout)
  15. with open(mail_path.replace('.eml', '.yml'), 'r') as expected_result_file:
  16. expected_result = yaml.load(expected_result_file.read())
  17. assert result == expected_result, 'unexpected result for ' + os.path.basename(mail_path)
  18. def test_ingegration_path():
  19. result = yaml.load(subprocess.check_output([
  20. script_path,
  21. os.path.join(test_data_path, 'amazon', 'mail_1.eml'),
  22. os.path.join(test_data_path, 'oebb', 'mail_1.eml'),
  23. os.path.join(test_data_path, 'oebb', 'mail_2.eml'),
  24. ]))
  25. expected_result = []
  26. for result_path in [
  27. os.path.join(test_data_path, 'amazon', 'mail_1.yml'),
  28. os.path.join(test_data_path, 'oebb', 'mail_1.yml'),
  29. os.path.join(test_data_path, 'oebb', 'mail_2.yml'),
  30. ]:
  31. with open(result_path) as yaml_file:
  32. expected_result += yaml.load(yaml_file.read())
  33. assert result == expected_result