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_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_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)
Exemple #5
0
 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_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_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_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])
 def test_run_command(self, mock_popen):
     connector = PgDumpConnector()
     connector.create_dump()
     self.assertEqual(mock_popen.call_args[0][0][0], 'pg_dump')