[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [ooni-probe/master] Add unittests for OONIB reporter
commit 4c4ea8b014bed5fae89094a82e81d643a836b76d
Author: Arturo Filastò <art@xxxxxxxxx>
Date: Fri Jan 31 15:03:03 2014 +0100
Add unittests for OONIB reporter
---
ooni/reporter.py | 2 +-
ooni/tests/test_reporter.py | 62 +++++++++++++++++++++++++++++++++++++++----
2 files changed, 58 insertions(+), 6 deletions(-)
diff --git a/ooni/reporter.py b/ooni/reporter.py
index 545997d..7db24aa 100644
--- a/ooni/reporter.py
+++ b/ooni/reporter.py
@@ -367,7 +367,7 @@ class OONIBReporter(OReporter):
log.err("Failed to parse collector response %s" % backend_response)
log.exception(e)
raise errors.OONIBReportCreationError
-
+
if response.code == 406:
# XXX make this more strict
log.err("The specified input or nettests cannot be submitted to this collector.")
diff --git a/ooni/tests/test_reporter.py b/ooni/tests/test_reporter.py
index 0a4d240..23c1190 100644
--- a/ooni/tests/test_reporter.py
+++ b/ooni/tests/test_reporter.py
@@ -1,24 +1,43 @@
import yaml
+import json
import time
+from mock import MagicMock
+from twisted.internet import defer
from twisted.trial import unittest
-from ooni.reporter import YAMLReporter
+from ooni.utils.net import StringProducer
+from ooni import errors as e
+from ooni.reporter import YAMLReporter, OONIBReporter
class MockTest(object):
_start_time = time.time()
report = {'report_content': 'ham'}
input = 'spam'
+test_details = {
+ 'test_name': 'spam',
+ 'test_version': '1.0',
+ 'software_name': 'spam',
+ 'software_version': '1.0',
+ 'input_hashes': [],
+ 'probe_asn': 'AS0'
+}
+
+oonib_new_report_message = {
+ 'report_id': "2014-01-29T202038Z_AS0_"+"A"*50,
+ 'backend_version': "1.0"
+}
+
+oonib_generic_error_message = {
+ 'error': 'generic-error'
+}
+
class TestYAMLReporter(unittest.TestCase):
def setUp(self):
pass
def test_write_report(self):
- test_details = {
- 'test_name': 'spam',
- 'test_version': '1.0'
- }
test = MockTest()
y_reporter = YAMLReporter(test_details)
@@ -37,3 +56,36 @@ class TestYAMLReporter(unittest.TestCase):
'test_name', 'test_started', \
'test_runtime'])
+class TestOONIBReporter(unittest.TestCase):
+
+ def setUp(self):
+ self.mock_response = {}
+ self.collector_address = 'http://example.com'
+
+ self.oonib_reporter = OONIBReporter(test_details, self.collector_address)
+ self.oonib_reporter.agent = MagicMock()
+ self.mock_agent_response = MagicMock()
+ def deliverBody(body_receiver):
+ body_receiver.dataReceived(json.dumps(self.mock_response))
+ body_receiver.connectionLost(None)
+ self.mock_agent_response.deliverBody = deliverBody
+ self.oonib_reporter.agent.request.return_value = defer.succeed(self.mock_agent_response)
+
+ @defer.inlineCallbacks
+ def test_create_report(self):
+ self.mock_response = oonib_new_report_message
+ yield self.oonib_reporter.createReport()
+ assert self.oonib_reporter.reportID == oonib_new_report_message['report_id']
+
+ @defer.inlineCallbacks
+ def test_create_report_failure(self):
+ self.mock_response = oonib_generic_error_message
+ self.mock_agent_response.code = 406
+ yield self.assertFailure(self.oonib_reporter.createReport(), e.OONIBReportCreationError)
+
+ @defer.inlineCallbacks
+ def test_write_report_entry(self):
+ req = {'content': 'something'}
+ yield self.oonib_reporter.writeReportEntry(req)
+ assert self.oonib_reporter.agent.request.called
+
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits