test_upload.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #!/usr/bin/env python3
  2. # -*- coding: UTF-8 -*-
  3. import warnings
  4. from unittest import mock
  5. from tests.test_main import TestWithUserLogin, setUpModule as init, testdir
  6. def setUpModule():
  7. init()
  8. class TestUpload(TestWithUserLogin):
  9. @mock.patch("webserver.handlers.book.BookUpload.get_upload_file")
  10. def test_upload_bad_filename(self, m1):
  11. name = "索恩·德国史"
  12. path = testdir + "/cases/old.epub"
  13. with open(path, "rb") as f:
  14. data = f.read()
  15. m1.return_value = (name, data)
  16. d = self.json("/api/book/upload", method="POST", body="k=1")
  17. self.assertEqual(d["err"], "params.filename")
  18. @mock.patch("webserver.handlers.book.BookUpload.get_upload_file")
  19. def test_upload_old_file_zh(self, m1):
  20. name = "索恩·德国史.epub"
  21. path = testdir + "/cases/old.epub"
  22. with open(path, "rb") as f:
  23. data = f.read()
  24. m1.return_value = (name, data)
  25. d = self.json("/api/book/upload", method="POST", body="k=1")
  26. self.assertEqual(d["err"], "samebook")
  27. @mock.patch("webserver.handlers.book.BookUpload.get_upload_file")
  28. def test_upload_old_file(self, m1):
  29. name = "abc.epub"
  30. path = testdir + "/cases/old.epub"
  31. with open(path, "rb") as f:
  32. data = f.read()
  33. m1.return_value = (name, data)
  34. d = self.json("/api/book/upload", method="POST", body="k=1")
  35. self.assertEqual(d["err"], "samebook")
  36. @mock.patch("webserver.handlers.book.BookUpload.get_upload_file")
  37. @mock.patch("webserver.handlers.base.BaseHandler.user_history")
  38. @mock.patch("webserver.handlers.base.BaseHandler.add_msg")
  39. @mock.patch("webserver.models.Item.save")
  40. @mock.patch("calibre.db.legacy.LibraryDatabase.import_book")
  41. def test_upload_new_file(self, m5, m4, m3, m2, m1):
  42. warnings.simplefilter('ignore', ResourceWarning)
  43. name = "new.epub"
  44. path = testdir + "/cases/new.epub"
  45. with open(path, "rb") as f:
  46. data = f.read()
  47. m1.return_value = (name, data)
  48. m2.return_value = True
  49. m3.return_value = True
  50. m4.return_value = True
  51. m5.return_value = 1008610086
  52. d = self.json("/api/book/upload", method="POST", body="k=1", request_timeout=30)
  53. self.assertEqual(d["err"], "ok")