def test_valid_name(self, name): self.mocked_metadata["read_metadata"].return_value = [] if not re.match(VALID_SNAPSHOT_NAME, name): self.assertFalse(Repository.is_valid_snapshot_name(name)) else: self.assertTrue(Repository.is_valid_snapshot_name(name))
def test_dunder_contains(self, name): self.mocked_metadata["read_metadata"].return_value = [] repo = Repository("/tmp/backup") self.assertFalse(name in repo) repo.create_snapshot(name) self.assertTrue(name in repo)
def test_removes_metadata_by_default(self, mocked_metadata_path, mocked_snapshot_symlink): repo = Repository("/tmp/backup") repo.cleanup() mocked_metadata_path.return_value.unlink.assert_called_once() mocked_snapshot_symlink.return_value.unlink.assert_called_once()
def test_stops_on_non_symlink_resistant(self): self.mocked_shutil["rmtree"].avoids_symlink_attacks = False repo = Repository("/tmp/backup") repo.cleanup(remove_snapshots=True) self.mocked_path["unlink"].assert_not_called() self.mocked_shutil["rmtree"].assert_not_called()
def test_dunder_len(self, snapshots): self.mocked_metadata["read_metadata"].return_value = snapshots.copy() repo = Repository("/tmp/backup") self.assertEqual(len(repo), len(snapshots)) self.assertEqual(len(repo.snapshots), len(snapshots)) repo.create_snapshot() self.assertEqual(len(repo), len(snapshots) + 1) self.assertEqual(len(repo.snapshots), len(snapshots) + 1)
def test_create_duplicate_snapshot(self): # Test that if a snapshot is a duplicate, then return that duplicate snapshot self.mocked_metadata["read_metadata"].return_value = [] repo = Repository("/tmp/backup") name = "new-snapshot" first = repo.create_snapshot(name) second = repo.create_snapshot(name) self.assertIs(first, second) self.assertTrue(name in repo) self.assertEqual(len(repo), 1)
def test_empty(self, snapshots): self.mocked_metadata["read_metadata"].return_value = snapshots.copy() repo = Repository("/tmp/backup") if not snapshots: self.assertTrue(repo.empty) else: self.assertFalse(repo.empty)
def test_removes_repo_dir(self): repo = Repository("/tmp/backup") repo.cleanup(remove_repo_dir=True) self.mocked_shutil["rmtree"].assert_called_once()
def test_returns_snapshot_object(self): self.mocked_metadata["read_metadata"].return_value = [] repo = Repository("/tmp/backup") self.assertIsInstance(repo.create_snapshot(), Snapshot)
def snapshots_property_contains_snapshot_objects(self, snapshots): self.mocked_metadata["read_metadata"].return_value = snapshots repo = Repository("/tmp/backup") self.assertTrue(all(isinstance(p, Snapshot) for p in repo))
def test_snapshots_returns_empty_list(self): repo = Repository("/tmp/backup") self.assertListEqual(repo.snapshots, [])