def test_lookup_test_helpers(self): bouncer_client = BouncerClient('http://127.0.0.1:8888') required_helpers = [u'http-return-json-headers', u'dns'] helpers = yield bouncer_client.lookupTestHelpers(required_helpers) self.assertEqual(set(helpers.keys()), set(required_helpers + [u'default'])) self.assertTrue(helpers['http-return-json-headers']['address'].startswith('http')) self.assertTrue(int(helpers['dns']['address'].split('.')[0]))
def test_bouncer_client_lookup_collector(self): bcc = BouncerClient('https://bouncer.ooni.io') bcc.queryBackend = MagicMock() bcc.queryBackend.return_value = defer.succeed({}) yield bcc.lookupTestCollector(["foo"]) bcc.queryBackend.assert_called_with("POST", "/bouncer/net-tests", query={'net-tests': ["foo"]})
def test_bouncer_client_lookup_test_helpers(self): bcc = BouncerClient('https://bouncer.ooni.io') bcc.queryBackend = MagicMock() bcc.queryBackend.return_value = defer.succeed({'spam': 'ham'}) yield bcc.lookupTestHelpers(["foo"]) bcc.queryBackend.assert_called_with("POST", "/bouncer/test-helpers", query={'test-helpers': ["foo"]})
def test_lookup_test_helpers(self): bouncer_client = BouncerClient('http://127.0.0.1:8888') required_helpers = [u'http-return-json-headers', u'dns'] helpers = yield bouncer_client.lookupTestHelpers(required_helpers) self.assertEqual(set(helpers.keys()), set(required_helpers + [u'default'])) self.assertTrue( helpers['http-return-json-headers']['address'].startswith('http')) self.assertTrue(int(helpers['dns']['address'].split('.')[0]))
def lookup_collector_client(report_header, bouncer): oonib_client = BouncerClient(bouncer) net_tests = [{ 'test-helpers': [], 'input-hashes': report_header['input_hashes'], 'name': report_header['test_name'], 'version': report_header['test_version'], }] result = yield oonib_client.lookupTestCollector(net_tests) collector_client = CollectorClient( address=result['net-tests'][0]['collector']) defer.returnValue(collector_client)
def load(self, deck_data, global_options=None): if self.id is None: # This happens when you load a deck not from a filepath so we # use the first 16 characters of the SHA256 hexdigest as an ID self.id = hashlib.sha256(json.dumps(deck_data)).hexdigest()[:16] if global_options is not None: self.global_options = normalize_options(global_options) if isinstance(deck_data, list): deck_data = convert_legacy_deck(deck_data) self.name = deck_data.pop("name", "Un-named Deck") self.description = deck_data.pop("description", "No description") self.icon = deck_data.pop("icon", "fa-gears") bouncer_address = self.global_options.get( 'bouncer', deck_data.pop("bouncer", None)) if bouncer_address is None: self.bouncer = get_preferred_bouncer() elif isinstance(bouncer_address, dict): self.bouncer = BouncerClient(settings=bouncer_address) else: self.bouncer = BouncerClient(bouncer_address) self.schedule = deck_data.pop("schedule", None) tasks_data = deck_data.pop("tasks", []) for key, metadata in deck_data.items(): self.metadata[key] = metadata # We override the task metadata with the global options if present self.metadata.update(self.global_options) for task_data in tasks_data: deck_task = DeckTask(data=task_data, parent_metadata=self.metadata, global_options=self.global_options, cwd=self.deck_directory, arbitrary_paths=self._arbitrary_paths) if deck_task.requires_tor: self.requires_tor = True if (deck_task.requires_bouncer and self.bouncer.backend_type == "onion"): self.requires_tor = True self._tasks.append(deck_task) if self.metadata.get('no_collector', False): self.no_collector = True if (self.no_collector is False and self.bouncer.backend_type == "onion"): self.requires_tor = True
def load(self, deck_data, global_options=None): if global_options is not None: self.global_options = normalize_options(global_options) if isinstance(deck_data, list): deck_data = convert_legacy_deck(deck_data) self.name = deck_data.pop("name", "Un-named Deck") self.description = deck_data.pop("description", "No description") bouncer_address = self.global_options.get('bouncer', deck_data.pop("bouncer", None)) if bouncer_address is None: self.bouncer = get_preferred_bouncer() elif isinstance(bouncer_address, dict): self.bouncer = BouncerClient(settings=bouncer_address) else: self.bouncer = BouncerClient(bouncer_address) self.schedule = deck_data.pop("schedule", None) tasks_data = deck_data.pop("tasks", []) for key, metadata in deck_data.items(): self.metadata[key] = metadata # We override the task metadata with the global options if present self.metadata.update(self.global_options) for task_data in tasks_data: deck_task = DeckTask( data=task_data, parent_metadata=self.metadata, global_options=self.global_options, cwd=self.deck_directory, arbitrary_paths=self._arbitrary_paths ) if deck_task.requires_tor: self.requires_tor = True if (deck_task.requires_bouncer and self.bouncer.backend_type == "onion"): self.requires_tor = True self._tasks.append(deck_task) if self.metadata.get('no_collector', False): self.no_collector = True if (self.no_collector is False and self.bouncer.backend_type == "onion"): self.requires_tor = True
def lookup_collector_client(report_header, bouncer): oonib_client = BouncerClient(bouncer) net_tests = [{ 'test-helpers': [], 'input-hashes': report_header['input_hashes'], 'name': report_header['test_name'], 'version': report_header['test_version'], }] result = yield oonib_client.lookupTestCollector( net_tests ) collector_client = CollectorClient( address=result['net-tests'][0]['collector'] ) defer.returnValue(collector_client)
def test_lookup_no_test_helpers(self): bouncer_client = BouncerClient('http://127.0.0.1:8888') required_helpers = [] helpers = yield bouncer_client.lookupTestHelpers(required_helpers) self.assertTrue('default' in helpers.keys())
def test_lookup_invalid_helpers(self): bouncer_client = BouncerClient('http://127.0.0.1:8888') return self.failUnlessFailure( bouncer_client.lookupTestHelpers([ 'sdadsadsa', 'dns' ]), e.CouldNotFindTestHelper)
def test_lookup_invalid_helpers(self): bouncer_client = BouncerClient('http://127.0.0.1:8888') return self.failUnlessFailure( bouncer_client.lookupTestHelpers(['sdadsadsa', 'dns']), e.CouldNotFindTestHelper)