test_PDFCompare.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. import pytest
  2. from os import getcwd
  3. from pathlib import Path
  4. from baangt.base.PDFCompare import PDFCompare, PDFCompareDetails
  5. import socket
  6. """
  7. #####################
  8. ### Attention #######
  9. #####################
  10. # Before you run these tests, you'll have to run **flask run** in PDF-Comparison service on local host, or most of these
  11. # Tests will be skipped.
  12. # To do so (first start)
  13. git clone https://gogs.earthsquad.global/athos/baangt-PDFComparison
  14. cd baangt-PDFComparison
  15. virtualenv venv
  16. source venv/bin/activate
  17. pip install -r pdf_comaprison_flask_api/requirements.txt
  18. # Everytime:
  19. cd pdf_comaprison_flask_api
  20. export FLASK_APP=app.py
  21. flask run
  22. """
  23. newOriginalFile1_UUID = None # UUID of new example file 1
  24. def __checkSocketOpen() -> bool:
  25. aSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  26. result = aSocket.connect_ex(("127.0.0.1", 5000))
  27. aSocket.close()
  28. if result == 0:
  29. return True
  30. else:
  31. return False
  32. lPortOpen = __checkSocketOpen()
  33. def __getDictStructure():
  34. return {"referenceID": "",
  35. "BLOB": "",
  36. "Status": "",
  37. "StatusText": "",
  38. "BLOB_OUT": "",
  39. "ResultText": ""}
  40. def __uploadNewFiles():
  41. global newOriginalFile2_UUID
  42. global newOriginalFile1_UUID
  43. newOriginalFile1_UUID = __uploadNewFile(Path(getcwd()).joinpath("tests").joinpath("pdfs").joinpath("sample.pdf"))
  44. def __uploadNewFile(fileNameAndPath):
  45. lFileDetails = PDFCompareDetails()
  46. lFileDetails.fileName = str(fileNameAndPath)
  47. lPDFCompare = PDFCompare()
  48. lFileDetails = lPDFCompare.uploadNewReferenceFile(lFileDetails)
  49. assert lFileDetails.Status == "OK"
  50. return lFileDetails.newUUID
  51. @pytest.mark.skipif(lPortOpen==False, reason="PDF-Comparison service not available")
  52. def test_UploadNewFilesForTests():
  53. __uploadNewFiles()
  54. assert newOriginalFile1_UUID
  55. def test_PDFCompare_wrongInput():
  56. pdfCompare = PDFCompare()
  57. lDict = {"1234": __getDictStructure()}
  58. # Remove ReferenceID - should give an error during call
  59. lDict["1234"].pop("referenceID")
  60. pdfCompare.compare_multiple(lDict)
  61. assert lDict["1234"].get("Status", None) == "NOK"
  62. def test_PDFCompare_withWrongFile():
  63. pdfCompare = PDFCompare()
  64. lDict = {"pdfThatdoesntExist.pdf": __getDictStructure()}
  65. pdfCompare.compare_multiple(lDict)
  66. assert lDict["pdfThatdoesntExist.pdf"]["Status"] == 'NOK'
  67. @pytest.mark.skipif(lPortOpen==False, reason="PDF-Comparison service not available")
  68. def test_PDFCompare_withFileLoadOK():
  69. pdfCompare = PDFCompare()
  70. lFile = Path(getcwd()).joinpath("tests").joinpath("pdfs").joinpath("sample.pdf")
  71. lDict = {lFile: __getDictStructure()}
  72. lDict[lFile]["referenceID"] = newOriginalFile1_UUID
  73. pdfCompare.compare_multiple(lDict)
  74. assert len(lDict[lFile]["newUUID"]) > 0
  75. assert lDict[lFile]["Status"] == "OK"
  76. @pytest.mark.skipif(lPortOpen==False, reason="PDF-Comparison service not available")
  77. def test_PDFCompare_withFileLoadNOK():
  78. pdfCompare = PDFCompare()
  79. lFile = Path(getcwd()).joinpath("tests").joinpath("pdfs").joinpath("sample2.pdf")
  80. lDict = {lFile: __getDictStructure()}
  81. lDict[lFile]["referenceID"] = newOriginalFile1_UUID
  82. pdfCompare.compare_multiple(lDict)
  83. assert len(lDict[lFile]["newUUID"]) > 0
  84. assert lDict[lFile]["Status"] == "NOK"
  85. def test_PDFCompare_withDataClass():
  86. pdfCompare = PDFCompare()
  87. pdfDataClass = PDFCompareDetails()
  88. pdfDataClass.fileName = Path(getcwd()).joinpath("tests").joinpath("pdfs").joinpath("sample.pdf")
  89. pdfDataClass.referenceID = "12345"
  90. lDict = {pdfDataClass.fileName: pdfDataClass}
  91. pdfCompare.compare_multiple(lDict)
  92. assert lDict[pdfDataClass.fileName].Status == "NOK"
  93. assert "Config wrong?" in lDict[pdfDataClass.fileName].StatusText
  94. def test_PDFCompare_withWrongURL():
  95. pdfCompare = PDFCompare(baseURL="http://franzi.fritzi:4711")
  96. lFile = Path(getcwd()).joinpath("tests").joinpath("pdfs").joinpath("sample.pdf")
  97. lDict = {lFile: __getDictStructure()}
  98. pdfCompare.compare_multiple(lDict)
  99. assert lDict[lFile]["Status"] == "NOK"
  100. assert "Config wrong?" in lDict[lFile]["StatusText"]