From 37dc94bc796cd1852ed5c315bfb0509ab6e4bc0b Mon Sep 17 00:00:00 2001 From: Dan Helfman Date: Wed, 23 Oct 2019 13:36:03 -0700 Subject: [PATCH] Add test for removal of database dumps. --- tests/unit/hooks/test_postgresql.py | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/unit/hooks/test_postgresql.py b/tests/unit/hooks/test_postgresql.py index 3d8cf903d..47ba00018 100644 --- a/tests/unit/hooks/test_postgresql.py +++ b/tests/unit/hooks/test_postgresql.py @@ -153,3 +153,35 @@ def test_dump_databases_runs_pg_dumpall_for_all_databases(): ).once() module.dump_databases(databases, 'test.yaml', dry_run=False) + + +def test_remove_database_dumps_removes_dump_for_each_database(): + databases = [{'name': 'foo'}, {'name': 'bar'}] + flexmock(module.os.path).should_receive('expanduser').and_return('databases') + flexmock(module.os).should_receive('listdir').and_return([]) + flexmock(module.os).should_receive('rmdir') + + for name in ('foo', 'bar'): + flexmock(module.os).should_receive('remove').with_args( + 'databases/localhost/{}'.format(name) + ).once() + + module.remove_database_dumps(databases, 'test.yaml', dry_run=False) + + +def test_remove_database_dumps_with_dry_run_skips_removal(): + databases = [{'name': 'foo'}, {'name': 'bar'}] + flexmock(module.os).should_receive('remove').never() + + module.remove_database_dumps(databases, 'test.yaml', dry_run=True) + + +def test_remove_database_dumps_without_databases_does_not_raise(): + module.remove_database_dumps([], 'test.yaml', dry_run=False) + + +def test_remove_database_dumps_with_invalid_database_name_raises(): + databases = [{'name': 'heehee/../../etc/passwd'}] + + with pytest.raises(ValueError): + module.remove_database_dumps(databases, 'test.yaml', dry_run=True)