commit 553cb673b39fce91b0829ebe71caba94a817eadc Author: Arturo Filastò art@fuffa.org Date: Wed Aug 21 23:22:55 2013 +0200
Get all the unittests to pass. --- ooni/oonibclient.py | 26 +++++++++++++++++++++----- ooni/tests/test_oonibclient.py | 22 ++++++++++------------ ooni/utils/net.py | 2 +- 3 files changed, 32 insertions(+), 18 deletions(-)
diff --git a/ooni/oonibclient.py b/ooni/oonibclient.py index 3f9ed56..1a581c0 100644 --- a/ooni/oonibclient.py +++ b/ooni/oonibclient.py @@ -1,9 +1,11 @@ +from hashlib import sha256 + import json
from twisted.internet import defer, reactor from twisted.web.client import Agent
-from ooni.utils.net import BodyReceiver, StringProducer +from ooni.utils.net import BodyReceiver, StringProducer, Downloader
class InputFile(object): def __init__(self, id, name=None, description=None, @@ -15,12 +17,20 @@ class InputFile(object): self.author = author self.date = date
- self._file = None + self.file_path = None + + def verify(self): + digest = os.path.basename(self.file_path) + with open(self.file_path) as f: + file_hash = sha256(f.read()) + return file_hash.hexdigest() == digest + return False
class OONIBClient(object): def __init__(self, address): self.address = address self.agent = Agent(reactor) + self.input_files = {}
def _request(self, method, urn, genReceiver, bodyProducer=None): finished = defer.Deferred() @@ -56,14 +66,20 @@ class OONIBClient(object):
return self._request('GET', urn, genReceiver)
- def downloadInput(self, input_hash, download_path): - return self.download('/input/'+input_hash, download_path) - def getNettestPolicy(self): pass
def queryBouncer(self, requested_helpers): pass
+ def getInput(self, input_hash): + return self.queryBackend('GET', '/input/' + input_hash) + + def getInputList(self): + return self.queryBackend('GET', '/input') + + def downloadInput(self, input_hash, download_path): + return self.download('/input/'+input_hash+'/file', download_path) + def getInputPolicy(self): pass diff --git a/ooni/tests/test_oonibclient.py b/ooni/tests/test_oonibclient.py index 06008bb..65e9e7e 100644 --- a/ooni/tests/test_oonibclient.py +++ b/ooni/tests/test_oonibclient.py @@ -1,42 +1,39 @@ from twisted.trial import unittest from twisted.internet import defer
-try: - import oonib -except ImportError: - oonib = None - from ooni.oonibclient import OONIBClient
-input_id = 'e0611ecd28bead38a7afeb4dda8ae3449d0fc2e1ba53fa7355f2799dce9af290' +input_id = '37e60e13536f6afe47a830bfb6b371b5cf65da66d7ad65137344679b24fdccd1'
class TestOONIBClient(unittest.TestCase): def setUp(self): self.oonibclient = OONIBClient('http://127.0.0.1:8888') - if not oonib: - self.skipTest("OONIB is not running")
@defer.inlineCallbacks def test_query(self): res = yield self.oonibclient.queryBackend('GET', '/policy/input') self.assertTrue(isinstance(res, list))
+ @defer.inlineCallbacks def test_get_input_list(self): input_list = yield self.oonibclient.getInputList() - self.assertTrue(isinstance(inputList, list)) + self.assertTrue(isinstance(input_list, list))
+ @defer.inlineCallbacks def test_get_input_descriptor(self): input_descriptor = yield self.oonibclient.getInput(input_id) for key in ['name', 'description', 'version', 'author', 'date']: self.assertTrue(key in input_descriptor.keys())
+ @defer.inlineCallbacks def test_download_input(self): - pass + yield self.oonibclient.downloadInput(input_id, input_id)
+ @defer.inlineCallbacks def test_get_deck_list(self): input_list = yield self.oonibclient.getInputList() - self.assertTrue(isinstance(inputList, list)) + self.assertTrue(isinstance(input_list, list))
def test_get_deck_descriptor(self): pass @@ -44,9 +41,10 @@ class TestOONIBClient(unittest.TestCase): def test_download_deck(self): pass
+ @defer.inlineCallbacks def test_get_nettest_list(self): input_list = yield self.oonibclient.getInputList() - self.assertTrue(isinstance(inputList, list)) + self.assertTrue(isinstance(input_list, list))
def test_get_nettest_descriptor(self): pass diff --git a/ooni/utils/net.py b/ooni/utils/net.py index db2ea18..ab33d00 100644 --- a/ooni/utils/net.py +++ b/ooni/utils/net.py @@ -98,7 +98,7 @@ class Downloader(protocol.Protocol):
def connectionLost(self, reason): self.fp.close() - self.finished.callback(self.download_path) + self.finished.callback(None)
def getSystemResolver(): """
tor-commits@lists.torproject.org