[tor-commits] [oonib/master] Implement test that attempts to write to the backend using JSON

art at torproject.org art at torproject.org
Mon May 9 17:57:02 UTC 2016


commit d7f9d5990be9975df46e92164eb1b044c97c89ab
Author: Arturo Filastò <arturo at filasto.net>
Date:   Thu Mar 10 19:11:22 2016 +0100

    Implement test that attempts to write to the backend using JSON
---
 oonib/test/test_report.py | 119 ++++++++++++++++++++++++++--------------------
 1 file changed, 67 insertions(+), 52 deletions(-)

diff --git a/oonib/test/test_report.py b/oonib/test/test_report.py
index 5e1712b..63865ae 100644
--- a/oonib/test/test_report.py
+++ b/oonib/test/test_report.py
@@ -12,54 +12,45 @@ from oonib.report.handlers import report_file_name
 from oonib.report.api import reportAPI
 from oonib.test.handler_helpers import HandlerTestCase, mock_initialize
 
-sample_report_entry = """---
-agent: agent
-input: null
-requests:
-- request:
-    body: null
-    headers:
-    - - ACCePT-LAnGuagE
-    - ['en-US,en;q=0.8']
-    - - aCCEPT-ENcODInG
-    - ['gzip,deflate,sdch']
-    - - aCcEPT
-    - ['text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8']
-    - - User-AGeNt
-    - ['Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.7) Gecko/20091221
-        Firefox/3.5.7']
-    - - aCCEpt-cHArSEt
-    - ['ISO-8859-1,utf-8;q=0.7,*;q=0.3']
-    - - HOsT
-    - [KIXnnZDJfGKRNab.com]
-    method: GET
-    url: http://12.34.56.78
-response:
-    body: '{"headers_dict": {"ACCePT-LAnGuagE": ["en-US,en;q=0.8"], "aCCEPT-ENcODInG":
-    ["gzip,deflate,sdch"], "HOsT": ["KIXnnZDJfGKRNab.com"], "aCcEPT": ["text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"],
-    "User-AGeNt": ["Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.7)
-    Gecko/20091221 Firefox/3.5.7"], "aCCEpt-cHArSEt": ["ISO-8859-1,utf-8;q=0.7,*;q=0.3"],
-    "Connection": ["close"]}, "request_line": "GET / HTTP/1.1", "request_headers":
-    [["Connection", "close"], ["ACCePT-LAnGuagE", "en-US,en;q=0.8"], ["aCCEPT-ENcODInG",
-    "gzip,deflate,sdch"], ["aCcEPT", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"],
-    ["User-AGeNt", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.7)
-    Gecko/20091221 Firefox/3.5.7"], ["aCCEpt-cHArSEt", "ISO-8859-1,utf-8;q=0.7,*;q=0.3"],
-    ["HOsT", "KIXnnZDJfGKRNab.com"]]}'
-    code: 200
-    headers: []
-socksproxy: null
-tampering:
-header_field_name: false
-header_field_number: false
-header_field_value: false
-header_name_capitalization: false
-header_name_diff: []
-request_line_capitalization: false
-total: false
-...
-"""
+sample_report_entry = {
+    'agent': 'agent',
+    'input': 'http://example.com',
+    'requests': [
+        {
+            'request': {
+                'body': None,
+                'headers': {
+                    'Accept-Language': 'en-US,en;q=0.8',
+                    'User-AGeNt': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.7) Gecko/20091221'
+                },
+                'method': 'GET',
+                'url': 'http://example.com'
+            },
+            'response': {
+                'body': 'widgets',
+                'headers': []
+            }
+        }
+    ],
+    'test_specific_key': 'some value',
+    'input_hashes': [],
+    'options': [],
+    'probe_asn': 'AS0',
+    'probe_cc': 'ZZ',
+    'probe_city': None,
+    'probe_ip': '127.0.0.1',
+    'software_name': 'ooniprobe',
+    'software_version': '1.1.0',
+    'start_time': 0,
+    'test_name': 'fake_test',
+    'test_version': '0.1.0'
+}
 
-sample_report_header = """---
+sample_report_entry_yaml = '---\n'
+sample_report_entry_yaml += yaml.dump(sample_report_entry)
+sample_report_entry_yaml += '...\n'
+
+sample_report_header_yaml = """---
 input_hashes: []
 options: []
 probe_asn: AS0
@@ -92,7 +83,7 @@ class TestReport(HandlerTestCase):
     app = web.Application(reportAPI, name='reportAPI')
 
     @defer.inlineCallbacks
-    def update_report(self, report_id, content=sample_report_entry):
+    def update_report(self, report_id, content=sample_report_entry_yaml):
         data = {
             'content': content
         }
@@ -113,7 +104,7 @@ class TestReport(HandlerTestCase):
     @defer.inlineCallbacks
     def test_create_valid_report_with_content(self):
         data = deepcopy(dummy_data)
-        data['content'] = sample_report_header
+        data['content'] = sample_report_header_yaml
         response = yield self.request('/report', "POST", data)
         response_body = json.loads(response.body)
         self.assertIn('backend_version', response_body)
@@ -148,7 +139,7 @@ class TestReport(HandlerTestCase):
             written_report_header = written_report.next()
             for key in dummy_data.keys():
                 self.assertEqual(written_report_header[key], dummy_data[key])
-            self.assertEqual(yaml.safe_load(sample_report_entry),
+            self.assertEqual(yaml.safe_load(sample_report_entry_yaml),
                              written_report.next())
 
     @defer.inlineCallbacks
@@ -172,7 +163,7 @@ class TestReport(HandlerTestCase):
                 self.assertEqual(written_report_header[key],
                                  dummy_data[key])
 
-            self.assertEqual(yaml.safe_load(sample_report_entry),
+            self.assertEqual(yaml.safe_load(sample_report_entry_yaml),
                              written_report.next())
 
         response = yield self.request('/report/%s/close' % report_id, "POST")
@@ -185,5 +176,29 @@ class TestReport(HandlerTestCase):
             written_report.next()
 
             for i in range(report_entry_count):
-                self.assertEqual(yaml.safe_load(sample_report_entry),
+                self.assertEqual(yaml.safe_load(sample_report_entry_yaml),
                                  written_report.next())
+
+    @defer.inlineCallbacks
+    def test_create_update_and_close_report_json(self):
+        report_header = dummy_data.copy()
+        report_header['format'] = 'json'
+        response = yield self.request('/report', "POST", report_header)
+        response_body = json.loads(response.body)
+        self.assertIn('backend_version', response_body)
+        self.assertIn('report_id', response_body)
+
+        report_entry_count = 100
+
+        report_id = response_body['report_id']
+        for i in range(report_entry_count):
+            yield self.update_report(report_id, content=sample_report_entry)
+
+        response = yield self.request('/report/%s/close' % report_id, "POST")
+
+        written_report_path = report_file_name(".", report_header, report_id)
+        with open(written_report_path) as f:
+            self.filenames.add(written_report_path)
+            for line in f:
+                written_report = json.loads(line)
+                self.assertEqual(sample_report_entry, written_report)





More information about the tor-commits mailing list