def test_run_command_with_password(self, mock_popen): connector = PgDumpConnector() connector.settings['PASSWORD'] = '******' connector.create_dump() self.assertEqual(mock_popen.call_args[0][0][0], 'pg_dump') self.assertIn('PGPASSWORD', mock_popen.call_args[1]['env']) self.assertEqual('foo', mock_popen.call_args[1]['env']['PGPASSWORD'])
def test_create_dump(self, mock_dump_cmd): connector = PgDumpConnector() dump = connector.create_dump() # Test dump dump_content = dump.read() self.assertTrue(dump_content) self.assertEqual(dump_content, b'foo') # Test cmd self.assertTrue(mock_dump_cmd.called)
def test_run_command_with_password_and_other(self, mock_popen): connector = PgDumpConnector(env={'foo': 'bar'}) connector.settings['PASSWORD'] = '******' connector.create_dump() self.assertEqual(mock_popen.call_args[0][0][0], 'pg_dump') self.assertEqual(mock_popen.call_args[1]['env'], { 'foo': 'bar', 'PGPASSWORD': '******' })
def test_create_dump_exclude(self, mock_dump_cmd): connector = PgDumpConnector() # Without connector.create_dump() self.assertNotIn(' --exclude-table=', mock_dump_cmd.call_args[0][0]) # With connector.exclude = ('foo', ) connector.create_dump() self.assertIn(' --exclude-table=foo', mock_dump_cmd.call_args[0][0]) # With serveral connector.exclude = ('foo', 'bar') connector.create_dump() self.assertIn(' --exclude-table=foo', mock_dump_cmd.call_args[0][0]) self.assertIn(' --exclude-table=bar', mock_dump_cmd.call_args[0][0])
def test_create_dump_drop(self, mock_dump_cmd): connector = PgDumpConnector() # Without connector.drop = False connector.create_dump() self.assertNotIn(' --clean', mock_dump_cmd.call_args[0][0]) # With connector.drop = True connector.create_dump() self.assertIn(' --clean', mock_dump_cmd.call_args[0][0])
def test_create_dump_exclude(self, mock_dump_cmd): connector = PgDumpConnector() # Without connector.create_dump() self.assertNotIn(' --exclude-table=', mock_dump_cmd.call_args[0][0]) # With connector.exclude = ('foo',) connector.create_dump() self.assertIn(' --exclude-table=foo', mock_dump_cmd.call_args[0][0]) # With serveral connector.exclude = ('foo', 'bar') connector.create_dump() self.assertIn(' --exclude-table=foo', mock_dump_cmd.call_args[0][0]) self.assertIn(' --exclude-table=bar', mock_dump_cmd.call_args[0][0])
def test_restore_dump_host(self, mock_dump_cmd, mock_restore_cmd): connector = PgDumpConnector() dump = connector.create_dump() # Without connector.settings.pop('HOST', None) connector.restore_dump(dump) self.assertNotIn(' --host=foo', mock_restore_cmd.call_args[0][0]) # With connector.settings['HOST'] = 'foo' connector.restore_dump(dump) self.assertIn(' --host=foo', mock_restore_cmd.call_args[0][0])
def test_restore_dump_user(self, mock_dump_cmd, mock_restore_cmd): connector = PgDumpConnector() dump = connector.create_dump() # Without connector.settings.pop('USER', None) connector.restore_dump(dump) self.assertNotIn(' --username='******'USER'] = '******' connector.restore_dump(dump) self.assertIn(' --username=foo', mock_restore_cmd.call_args[0][0])
def test_restore_dump_port(self, mock_dump_cmd, mock_restore_cmd): connector = PgDumpConnector() dump = connector.create_dump() # Without connector.settings.pop('PORT', None) connector.restore_dump(dump) self.assertNotIn(' --port=', mock_restore_cmd.call_args[0][0]) # With connector.settings['PORT'] = 42 connector.restore_dump(dump) self.assertIn(' --port=42', mock_restore_cmd.call_args[0][0])
def test_restore_dump_user(self, mock_dump_cmd, mock_restore_cmd): connector = PgDumpConnector() dump = connector.create_dump() # Without connector.settings.pop('USER', None) connector.restore_dump(dump) self.assertNotIn(' --user='******'USER'] = '******' connector.restore_dump(dump) self.assertIn(' --user=foo', mock_restore_cmd.call_args[0][0])
def test_create_dump_host(self, mock_dump_cmd): connector = PgDumpConnector() # Without connector.settings.pop('HOST', None) connector.create_dump() self.assertNotIn(' --host=', mock_dump_cmd.call_args[0][0]) # With connector.settings['HOST'] = 'foo' connector.create_dump() self.assertIn(' --host=foo', mock_dump_cmd.call_args[0][0])
def setUp(self): self.connector = PgDumpConnector() self.connector.settings['ENGINE'] = 'django.db.backends.postgresql' self.connector.settings['NAME'] = 'dbname' self.connector.settings['HOST'] = 'hostname'
def test_restore_dump(self, mock_dump_cmd, mock_restore_cmd): connector = PgDumpConnector() dump = connector.create_dump() connector.restore_dump(dump) # Test cmd self.assertTrue(mock_restore_cmd.called)
def test_run_command(self, mock_popen): connector = PgDumpConnector() connector.create_dump() self.assertEqual(mock_popen.call_args[0][0][0], 'pg_dump')
def test_run_command_with_password(self, mock_popen): connector = PgDumpConnector() connector.settings['HOST'] = 'hostname' connector.settings['PASSWORD'] = '******' connector.create_dump() self.assertEqual(mock_popen.call_args[0][0][0], 'pg_dump')
class PgDumpConnectorTest(TestCase): def setUp(self): self.connector = PgDumpConnector() self.connector.settings['ENGINE'] = 'django.db.backends.postgresql' self.connector.settings['NAME'] = 'dbname' self.connector.settings['HOST'] = 'hostname' def test_user_password_uses_special_characters(self, mock_dump_cmd): self.connector.settings['PASSWORD'] = '******' self.connector.settings['USER'] = '******' self.connector.create_dump() self.assertIn('postgresql://%40:%40%21@hostname/dbname', mock_dump_cmd.call_args[0][0]) def test_create_dump(self, mock_dump_cmd): dump = self.connector.create_dump() # Test dump dump_content = dump.read() self.assertTrue(dump_content) self.assertEqual(dump_content, b'foo') # Test cmd self.assertTrue(mock_dump_cmd.called) def test_create_dump_without_host_raises_error(self, mock_dump_cmd): self.connector.settings.pop('HOST', None) with self.assertRaises(DumpError): self.connector.create_dump() def test_password_but_no_user(self, mock_dump_cmd): self.connector.settings.pop('USER', None) self.connector.settings['PASSWORD'] = '******' self.connector.create_dump() self.assertIn('postgresql://hostname/dbname', mock_dump_cmd.call_args[0][0]) def test_create_dump_host(self, mock_dump_cmd): # With self.connector.settings['HOST'] = 'foo' self.connector.create_dump() self.assertIn('postgresql://foo/dbname', mock_dump_cmd.call_args[0][0]) def test_create_dump_port(self, mock_dump_cmd): # Without self.connector.settings.pop('PORT', None) self.connector.create_dump() self.assertIn('postgresql://hostname/dbname', mock_dump_cmd.call_args[0][0]) # With self.connector.settings['PORT'] = 42 self.connector.create_dump() self.assertIn('postgresql://*****:*****@hostname/dbname', mock_dump_cmd.call_args[0][0]) def test_create_dump_exclude(self, mock_dump_cmd): # Without self.connector.create_dump() self.assertNotIn(' --exclude-table-data=', mock_dump_cmd.call_args[0][0]) # With self.connector.exclude = ('foo', ) self.connector.create_dump() self.assertIn(' --exclude-table-data=foo', mock_dump_cmd.call_args[0][0]) # With serveral self.connector.exclude = ('foo', 'bar') self.connector.create_dump() self.assertIn(' --exclude-table-data=foo', mock_dump_cmd.call_args[0][0]) self.assertIn(' --exclude-table-data=bar', mock_dump_cmd.call_args[0][0]) def test_create_dump_drop(self, mock_dump_cmd): # Without self.connector.drop = False self.connector.create_dump() self.assertNotIn(' --clean', mock_dump_cmd.call_args[0][0]) # With self.connector.drop = True self.connector.create_dump() self.assertIn(' --clean', mock_dump_cmd.call_args[0][0]) @patch('dbbackup.db.postgresql.PgDumpConnector.run_command', return_value=(BytesIO(), BytesIO())) def test_restore_dump(self, mock_dump_cmd, mock_restore_cmd): dump = self.connector.create_dump() self.connector.restore_dump(dump) # Test cmd self.assertTrue(mock_restore_cmd.called) @patch('dbbackup.db.postgresql.PgDumpConnector.run_command', return_value=(BytesIO(), BytesIO())) def test_restore_dump_user(self, mock_dump_cmd, mock_restore_cmd): dump = self.connector.create_dump() # Without self.connector.settings.pop('USER', None) self.connector.restore_dump(dump) self.assertIn('postgresql://hostname/dbname', mock_restore_cmd.call_args[0][0]) self.assertNotIn(' --username='******'USER'] = '******' self.connector.restore_dump(dump) self.assertIn('postgresql://foo@hostname/dbname', mock_restore_cmd.call_args[0][0])