Esempio n. 1
0
    def test_compare_flags(self, authorities_mock, query_mock, stdout_mock):
        authorities_mock().items.return_value = [
            ('moria1', DIRECTORY_AUTHORITIES['moria1']),
            ('maatuska', DIRECTORY_AUTHORITIES['maatuska'])
        ]

        fingerprint = [
            ('92FCB6748A40E6088E22FBAB943AB2DD743EA818',
             'kvy2dIpA5giOIvurlDqy3XQ+qBg='),
            ('6871F682350BA931838C0EC1E4A23044DAE06A73',
             'aHH2gjULqTGDjA7B5KIwRNrganM='),
            ('E2BB13AA2F6960CD93ABE5257A825687F3973C62',
             '4rsTqi9pYM2Tq+UleoJWh/OXPGI='),
            ('546C54E2A89D88E0794D04AECBF1AC8AC9DA81DE',
             'VGxU4qidiOB5TQSuy/Gsisnagd4='),
            ('DCAEC3D069DC39AAE43D13C8AF31B5645E05ED61',
             '3K7D0GncOarkPRPIrzG1ZF4F7WE='),
        ]

        entry = [
            # entries for moria1
            _get_router_status(fingerprint_base64=fingerprint[0][1],
                               s_line=' '),
            _get_router_status(fingerprint_base64=fingerprint[1][1],
                               s_line=' '),
            _get_router_status(fingerprint_base64=fingerprint[2][1],
                               s_line=' '),
            _get_router_status(fingerprint_base64=fingerprint[3][1]),
            _get_router_status(fingerprint_base64=fingerprint[4][1]),

            # entries for maatuska
            _get_router_status(fingerprint_base64=fingerprint[0][1]),
            _get_router_status(fingerprint_base64=fingerprint[1][1]),
            _get_router_status(fingerprint_base64=fingerprint[2][1]),
            _get_router_status(fingerprint_base64=fingerprint[3][1],
                               s_line=' '),
            _get_router_status(fingerprint_base64=fingerprint[4][1],
                               s_line=' '),
        ]

        query_mock().run.side_effect = [
            [
                NetworkStatusDocumentV3.create(routers=(entry[0], entry[1],
                                                        entry[2], entry[3],
                                                        entry[4]))
            ],
            [
                NetworkStatusDocumentV3.create(routers=(entry[5], entry[6],
                                                        entry[7], entry[8],
                                                        entry[9]))
            ],
        ]

        exec_documentation_example('compare_flags.py')

        self.assertCountEqual(COMPARE_FLAGS_OUTPUT.splitlines(),
                              stdout_mock.getvalue().splitlines())
Esempio n. 2
0
    def test_compare_flags(self, stdout_mock, query_mock, authorities_mock):
        authorities_mock().items.return_value = [
            ('moria1', DIRECTORY_AUTHORITIES['moria1']),
            ('maatuska', DIRECTORY_AUTHORITIES['maatuska']),
        ]

        r_line = 'caerSidi %s oQZFLYe9e4A7bOkWKR7TaNxb0JE 2012-08-06 11:19:31 71.35.150.29 9001 0'

        moria1_consensus = NetworkStatusDocumentV3.create(routers=[
            RouterStatusEntryV3.create({
                'r': r_line % 'kvy2dIpA5giOIvurlDqy3XQ+qBg=',
                's': ' '
            }),
            RouterStatusEntryV3.create({
                'r': r_line % 'aHH2gjULqTGDjA7B5KIwRNrganM=',
                's': ' '
            }),
            RouterStatusEntryV3.create({
                'r': r_line % '4rsTqi9pYM2Tq+UleoJWh/OXPGI=',
                's': ' '
            }),
            RouterStatusEntryV3.create(
                {'r': r_line % 'VGxU4qidiOB5TQSuy/Gsisnagd4='}),
            RouterStatusEntryV3.create(
                {'r': r_line % '3K7D0GncOarkPRPIrzG1ZF4F7WE='}),
        ])

        maatuska_consensus = NetworkStatusDocumentV3.create(routers=[
            RouterStatusEntryV3.create(
                {'r': r_line % 'kvy2dIpA5giOIvurlDqy3XQ+qBg='}),
            RouterStatusEntryV3.create(
                {'r': r_line % 'aHH2gjULqTGDjA7B5KIwRNrganM='}),
            RouterStatusEntryV3.create(
                {'r': r_line % '4rsTqi9pYM2Tq+UleoJWh/OXPGI='}),
            RouterStatusEntryV3.create({
                'r': r_line % 'VGxU4qidiOB5TQSuy/Gsisnagd4=',
                's': ' '
            }),
            RouterStatusEntryV3.create({
                'r': r_line % '3K7D0GncOarkPRPIrzG1ZF4F7WE=',
                's': ' '
            }),
        ])

        query_mock().run.side_effect = [[moria1_consensus],
                                        [maatuska_consensus]]

        import compare_flags

        self.assertEqual(EXPECTED_COMPARE_FLAGS, stdout_mock.getvalue())
Esempio n. 3
0
    def test_persisting_a_consensus(self, query_mock, parse_file_mock,
                                    stdout_mock):
        def tutorial_example_2():
            from stem.descriptor import DocumentHandler, parse_file

            consensus = next(
                parse_file(
                    '/tmp/descriptor_dump',
                    descriptor_type='network-status-consensus-3 1.0',
                    document_handler=DocumentHandler.DOCUMENT,
                ))

            for fingerprint, relay in consensus.routers.items():
                print('%s: %s' % (fingerprint, relay.nickname))

        network_status = NetworkStatusDocumentV3.create(
            routers=(RouterStatusEntryV3.create({
                'r':
                'caerSidi p1aag7VwarGxqctS7/fS0y5FU+s oQZFLYe9e4A7bOkWKR7TaNxb0JE 2012-08-06 11:19:31 71.35.150.29 9001 0',
            }), ))

        query_mock().run.return_value = [network_status]
        parse_file_mock.return_value = itertools.cycle([network_status])

        exec_documentation_example('persisting_a_consensus.py')
        exec_documentation_example('persisting_a_consensus_with_parse_file.py')

        self.assertEqual(PERSISTING_A_CONSENSUS_OUTPUT, stdout_mock.getvalue())

        if os.path.exists('/tmp/descriptor_dump'):
            os.remove('/tmp/descriptor_dump')
Esempio n. 4
0
    def test_persisting_a_consensus_with_parse_file(self, stdout_mock,
                                                    parse_file_mock):
        consensus = NetworkStatusDocumentV3.create(
            routers=(RouterStatusEntryV3.create({
                'r':
                'caerSidi p1aag7VwarGxqctS7/fS0y5FU+s oQZFLYe9e4A7bOkWKR7TaNxb0JE 2012-08-06 11:19:31 71.35.150.29 9001 0',
            }), ))

        parse_file_mock.return_value = iter([consensus])

        import persisting_a_consensus_with_parse_file

        self.assertEqual(EXPECTED_PERSISTING_A_CONSENSUS,
                         stdout_mock.getvalue())
Esempio n. 5
0
    def test_persisting_a_consensus(self, downloader_mock):
        consensus = NetworkStatusDocumentV3.create(
            routers=(RouterStatusEntryV3.create({
                'r':
                'caerSidi p1aag7VwarGxqctS7/fS0y5FU+s oQZFLYe9e4A7bOkWKR7TaNxb0JE 2012-08-06 11:19:31 71.35.150.29 9001 0',
            }), ))

        downloader_mock().get_consensus = _download_of(consensus)

        try:
            import persisting_a_consensus

            with open('/tmp/descriptor_dump') as output_file:
                self.assertEqual(str(consensus), output_file.read())
        finally:
            if os.path.exists('/tmp/descriptor_dump'):
                os.remove('/tmp/descriptor_dump')