def test_exec(self): client = DatabaseClient(connection) run_result = client.runshell(input=b'SELECT * FROM user_tables;', stdout=PIPE, stderr=PIPE) self.assertTrue(run_result.stdout) self.assertFalse(run_result.stderr)
def _run_dbshell(self, rlwrap=False): """Run runshell command and capture its arguments.""" def _mock_subprocess_call(*args): self.subprocess_args = tuple(*args) return 0 client = DatabaseClient(connection) self.subprocess_args = None with mock.patch('subprocess.call', new=_mock_subprocess_call): with mock.patch('shutil.which', return_value='/usr/bin/rlwrap' if rlwrap else None): client.runshell() return self.subprocess_args
def _run_dbshell(self, rlwrap=False): """Run runshell command and capture its arguments.""" def _mock_subprocess_run(*args, **kwargs): self.subprocess_args = list(*args) return CompletedProcess(self.subprocess_args, 0) client = DatabaseClient(connection) self.subprocess_args = None with mock.patch('subprocess.run', new=_mock_subprocess_run): with mock.patch('shutil.which', return_value='/usr/bin/rlwrap' if rlwrap else None): client.runshell() return self.subprocess_args
def settings_to_cmd_args_env(self, settings_dict, parameters=None, rlwrap=False): if parameters is None: parameters = [] with mock.patch( "shutil.which", return_value="/usr/bin/rlwrap" if rlwrap else None ): return DatabaseClient.settings_to_cmd_args_env(settings_dict, parameters)
def __init__(self, *args, **kwargs): super(DatabaseWrapper, self).__init__(*args, **kwargs) self.features = DatabaseFeatures() self.ops = DatabaseOperations() self.client = DatabaseClient(self) self.creation = DatabaseCreation(self) self.introspection = DatabaseIntrospection(self) self.validation = BaseDatabaseValidation(self)
def __init__(self, *args, **kwargs): super(DatabaseWrapper, self).__init__(*args, **kwargs) self.features = DatabaseFeatures(self) use_returning_into = self.settings_dict["OPTIONS"].get('use_returning_into', True) self.features.can_return_id_from_insert = use_returning_into self.ops = DatabaseOperations(self) self.client = DatabaseClient(self) self.creation = DatabaseCreation(self) self.introspection = DatabaseIntrospection(self) self.validation = BaseDatabaseValidation(self)
def test_fail_exec(self): # The sqlplus Oracle client does not fail on invalid SQL queries. Mock login fail instead. client = DatabaseClient(connection) with mock.patch( 'django.db.backends.oracle.base.DatabaseWrapper._connect_string' ) as mock_connect_string: mock_connect_string.return_value = 'invalid' self.assertRaises(CalledProcessError, client.runshell, input=b'SELECT * FROM user_tables;', stdout=PIPE, stderr=PIPE) mock_connect_string.assert_called_once()