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())
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())
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')
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())
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')