Exemplo n.º 1
0
 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]))
Exemplo n.º 2
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"]})
Exemplo n.º 3
0
 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"]})
Exemplo n.º 4
0
 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"]})
Exemplo n.º 5
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"]})
Exemplo n.º 6
0
 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]))
Exemplo n.º 7
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)
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
    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
Exemplo n.º 10
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)
Exemplo n.º 11
0
 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())
Exemplo n.º 12
0
 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)
Exemplo n.º 13
0
 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())
Exemplo n.º 14
0
 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)