def test_raise_value_error_if_file_is_empty(self):
        m = mock_open(read_data=b"")

        with patch('openwebvulndb.common.hash.open', m, create=True):
            hasher = Hasher('SHA256')
            with self.assertRaises(ValueError):
                hasher.hash("/some/file.txt")
    def test_callback_applied_to_chunks(self):
        m = mock_open(read_data=b"hello world")

        with patch('openwebvulndb.common.hash.open', m, create=True):
            check_chunk = MagicMock()

            hasher = Hasher('SHA256')
            hasher.hash("/some/file.txt", chunk_cb=check_chunk)

            check_chunk.assert_called_with(b"hello world")
    def test_hash_md5(self):
        m = mock_open(read_data=b"hello world")

        with patch('openwebvulndb.common.hash.open', m, create=True):
            hasher = Hasher('MD5')
            self.assertEqual('5eb63bbbe01eeed093cb22bb8f5acdc3',
                             hasher.hash("/some/file.txt"))
    def test_hash_sha256(self):
        m = mock_open(read_data=b"hello world")

        with patch('openwebvulndb.common.hash.open', m, create=True):
            hasher = Hasher('SHA256')
            self.assertEqual(
                'b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9',
                hasher.hash("/some/file.txt"))