diff --git a/federation/tests/__init__.py b/federation/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/federation/tests/protocols/__init__.py b/federation/tests/protocols/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/federation/tests/protocols/diaspora/__init__.py b/federation/tests/protocols/diaspora/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/federation/tests/protocols/diaspora/test_diaspora.py b/federation/tests/protocols/diaspora/test_diaspora.py
new file mode 100644
index 0000000..80d8c5c
--- /dev/null
+++ b/federation/tests/protocols/diaspora/test_diaspora.py
@@ -0,0 +1,55 @@
+from lxml import etree
+
+from federation.protocols.diaspora.protocol import DiasporaProtocol
+
+
+class MockUser(object):
+ key = "foobar"
+
+
+class TestDiasporaProtocol():
+
+ def test_find_unencrypted_header(self):
+ protocol = self.init_protocol()
+ protocol.doc = self.get_unencrypted_doc()
+ protocol.find_header()
+ assert protocol.header is not None
+ assert protocol.encrypted is False
+
+ def test_find_encrypted_header(self):
+ protocol = self.init_protocol()
+ protocol.doc = self.get_encrypted_doc()
+ protocol.user = self.get_mock_user()
+ protocol.parse_header = self.mock_parse_encrypted_header
+ protocol.find_header()
+ assert protocol.header is not None
+ assert protocol.encrypted is True
+
+ def init_protocol(self):
+ return DiasporaProtocol()
+
+ def get_unencrypted_doc(self):
+ return etree.fromstring("""
+
+
+
+
+ """)
+
+ def get_encrypted_doc(self):
+ return etree.fromstring("""
+
+ {encrypted_header}
+
+
+ """)
+
+ def get_mock_user(self):
+ return MockUser()
+
+ def mock_parse_encrypted_header(self, text, key):
+ if text and key:
+ return "{encrypted_header}"
+ return None
diff --git a/test-requirements.txt b/test-requirements.txt
new file mode 100644
index 0000000..f1e2df4
--- /dev/null
+++ b/test-requirements.txt
@@ -0,0 +1 @@
+pytest==2.7.2