Allow data to be passed in the constructor & reject unicode ala hashlib
diff --git a/tests/primitives/test_hashes.py b/tests/primitives/test_hashes.py
index 901ddab..805d992 100644
--- a/tests/primitives/test_hashes.py
+++ b/tests/primitives/test_hashes.py
@@ -13,11 +13,22 @@
 
 from __future__ import absolute_import, division, print_function
 
+import pytest
+
+import six
+
 from cryptography.primitives import hashes
 
 from .utils import generate_base_hash_test
 
 
+class TestBaseHash(object):
+    def test_base_hash_reject_unicode(self, api):
+        m = hashes.SHA1(api=api)
+        with pytest.raises(TypeError):
+            m.update(six.u("\u00FC"))
+
+
 class TestSHA1(object):
     test_SHA1 = generate_base_hash_test(
         hashes.SHA1,
diff --git a/tests/primitives/utils.py b/tests/primitives/utils.py
index a3759b0..a15e773 100644
--- a/tests/primitives/utils.py
+++ b/tests/primitives/utils.py
@@ -67,6 +67,8 @@
     m = hash_cls(api=api)
     m.update(binascii.unhexlify(msg))
     assert m.hexdigest() == md.replace(" ", "").lower()
+    digest = hash_cls(api=api, data=binascii.unhexlify(msg)).hexdigest()
+    assert digest == md.replace(" ", "").lower()
 
 
 def generate_base_hash_test(hash_cls, digest_size, block_size,
@@ -115,6 +117,6 @@
 def long_string_hash_test(api, hash_factory, md, only_if, skip_message):
     if only_if is not None and not only_if(api):
         pytest.skip(skip_message)
-    m = hash_factory(api)
+    m = hash_factory(api=api)
     m.update(b"a" * 1000000)
     assert m.hexdigest() == md.lower()