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