Esempio n. 1
0
    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))
Esempio n. 2
0
    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)
Esempio n. 3
0
    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()
Esempio n. 4
0
    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()
Esempio n. 5
0
    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)
Esempio n. 6
0
    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)
Esempio n. 7
0
    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)
Esempio n. 8
0
    def test_removes_repo_dir(self):
        repo = Repository("/tmp/backup")

        repo.cleanup(remove_repo_dir=True)

        self.mocked_shutil["rmtree"].assert_called_once()
Esempio n. 9
0
    def test_returns_snapshot_object(self):
        self.mocked_metadata["read_metadata"].return_value = []
        repo = Repository("/tmp/backup")

        self.assertIsInstance(repo.create_snapshot(), Snapshot)
Esempio n. 10
0
    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))
Esempio n. 11
0
 def test_snapshots_returns_empty_list(self):
     repo = Repository("/tmp/backup")
     self.assertListEqual(repo.snapshots, [])