test04_rest_api.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import json
  2. from os import environ, unlink
  3. from unittest import TestCase
  4. from scriptshifter.rest_api import app
  5. from scriptshifter.tables import init_db
  6. EP = "http://localhost:8000"
  7. def setUpModule():
  8. init_db()
  9. def tearDownModule():
  10. unlink(environ["TXL_DB_PATH"])
  11. class TestRestAPI(TestCase):
  12. """ Test REST API interaction. """
  13. # def setUp(self):
  14. # # Start webapp.
  15. # app.testing = True
  16. def test_health(self):
  17. with app.test_client() as c:
  18. rsp = c.get("/health")
  19. self.assertEqual(rsp.status_code, 200)
  20. def test_language_list(self):
  21. with app.test_client() as c:
  22. rsp = c.get("/languages")
  23. self.assertEqual(rsp.status_code, 200)
  24. data = json.loads(rsp.get_data(as_text=True))
  25. self.assertIn("inherited", data)
  26. self.assertIn("label", data["inherited"])
  27. self.assertNotIn("_base1", data)
  28. self.assertNotIn("_base2", data)
  29. self.assertNotIn("_base3", data)
  30. def test_lang_table(self):
  31. with app.test_client() as c:
  32. rsp = c.get("/table/ordering")
  33. self.assertEqual(rsp.status_code, 200)
  34. data = json.loads(rsp.get_data(as_text=True))
  35. self.assertIn("case_sensitive", data)
  36. self.assertIn("description", data)
  37. self.assertIn("roman_to_script", data)
  38. self.assertIn("map", data["roman_to_script"])
  39. self.assertEqual(data["has_r2s"], True)
  40. self.assertEqual(data["has_s2r"], False)
  41. self.assertEqual(data["roman_to_script"]["map"][0], ["ABCD", ""])
  42. def test_trans_api_s2r(self):
  43. with app.test_client() as c:
  44. rsp = c.post("/trans", json={"lang": "rot3", "text": "defg"})
  45. self.assertEqual(rsp.status_code, 200)
  46. data = json.loads(rsp.get_data(as_text=True))
  47. self.assertEqual(data["output"], "abcd")
  48. def test_trans_api_r2s(self):
  49. with app.test_client() as c:
  50. rsp = c.post(
  51. "/trans", json={
  52. "lang": "rot3",
  53. "text": "abcd",
  54. "t_dir": "r2s"
  55. }
  56. )
  57. self.assertEqual(rsp.status_code, 200)
  58. data = json.loads(rsp.get_data(as_text=True))
  59. self.assertEqual(data["output"], "defg")
  60. def test_trans_api_capitalize(self):
  61. with app.test_client() as c:
  62. rsp = c.post(
  63. "/trans",
  64. json={
  65. "lang": "rot3",
  66. "capitalize": "first",
  67. "text": "bcde",
  68. "t_dir": "r2s"
  69. }
  70. )
  71. self.assertEqual(rsp.status_code, 200)
  72. data = json.loads(rsp.get_data(as_text=True))
  73. self.assertEqual(data["output"], "Efgh")