test_oracle.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from unittest import mock, skipUnless
  2. from django.db import connection
  3. from django.db.backends.oracle.client import DatabaseClient
  4. from django.test import SimpleTestCase
  5. @skipUnless(connection.vendor == "oracle", "Requires oracledb to be installed")
  6. class OracleDbshellTests(SimpleTestCase):
  7. def settings_to_cmd_args_env(self, settings_dict, parameters=None, rlwrap=False):
  8. if parameters is None:
  9. parameters = []
  10. with mock.patch(
  11. "shutil.which", return_value="/usr/bin/rlwrap" if rlwrap else None
  12. ):
  13. return DatabaseClient.settings_to_cmd_args_env(settings_dict, parameters)
  14. def test_without_rlwrap(self):
  15. expected_args = [
  16. "sqlplus",
  17. "-L",
  18. connection.client.connect_string(connection.settings_dict),
  19. ]
  20. self.assertEqual(
  21. self.settings_to_cmd_args_env(connection.settings_dict, rlwrap=False),
  22. (expected_args, None),
  23. )
  24. def test_with_rlwrap(self):
  25. expected_args = [
  26. "/usr/bin/rlwrap",
  27. "sqlplus",
  28. "-L",
  29. connection.client.connect_string(connection.settings_dict),
  30. ]
  31. self.assertEqual(
  32. self.settings_to_cmd_args_env(connection.settings_dict, rlwrap=True),
  33. (expected_args, None),
  34. )
  35. def test_parameters(self):
  36. expected_args = [
  37. "sqlplus",
  38. "-L",
  39. connection.client.connect_string(connection.settings_dict),
  40. "-HELP",
  41. ]
  42. self.assertEqual(
  43. self.settings_to_cmd_args_env(
  44. connection.settings_dict,
  45. parameters=["-HELP"],
  46. ),
  47. (expected_args, None),
  48. )