summaryrefslogtreecommitdiff
path: root/obnamlib/whole_file_checksummer_tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'obnamlib/whole_file_checksummer_tests.py')
-rw-r--r--obnamlib/whole_file_checksummer_tests.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/obnamlib/whole_file_checksummer_tests.py b/obnamlib/whole_file_checksummer_tests.py
new file mode 100644
index 00000000..c2addbec
--- /dev/null
+++ b/obnamlib/whole_file_checksummer_tests.py
@@ -0,0 +1,67 @@
+# Copyright 2016 Lars Wirzenius
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# =*= License: GPL-3+ =*=
+
+
+import unittest
+
+import obnamlib
+
+
+class WholeFileCheckSummerTests(unittest.TestCase):
+
+ def test_computes_nothing_if_repo_wants_no_checksum(self):
+ repo = FakeRepository(None)
+ summer = obnamlib.WholeFileCheckSummer(repo)
+ chunk = 'hello'
+ token = repo.prepare_chunk_for_indexes(chunk)
+ summer.append_chunk(chunk, token)
+ self.assertEqual(summer.get_checksum(), None)
+
+ def test_computes_checksum_for_md5(self):
+ repo = FakeRepository(obnamlib.REPO_FILE_MD5)
+ summer = obnamlib.WholeFileCheckSummer(repo)
+ chunk = 'hello'
+ token = repo.prepare_chunk_for_indexes(chunk)
+ summer.append_chunk(chunk, token)
+ self.assertEqual(
+ summer.get_checksum(),
+ '5d41402abc4b2a76b9719d911017c592')
+
+ def test_computes_checksum_for_sha512(self):
+ repo = FakeRepository(obnamlib.REPO_FILE_SHA512)
+ summer = obnamlib.WholeFileCheckSummer(repo)
+ chunk = 'hello'
+ token = repo.prepare_chunk_for_indexes(chunk)
+ summer.append_chunk(chunk, token)
+ self.assertEqual(
+ summer.get_checksum(),
+ '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca7'
+ '2323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043')
+
+
+class FakeRepository(object):
+
+ def __init__(self, file_key):
+ self._file_key = file_key
+
+ def get_file_checksum_key(self):
+ return self._file_key
+
+ def prepare_chunk_for_indexes(self, data):
+ if self._file_key is None:
+ return None
+ return 'fake checksum'