本文整理汇总了Python中test.mocking.get_network_status_document_v3函数的典型用法代码示例。如果您正苦于以下问题:Python get_network_status_document_v3函数的具体用法?Python get_network_status_document_v3怎么用?Python get_network_status_document_v3使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_network_status_document_v3函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_footer_consensus_method_requirement
def test_footer_consensus_method_requirement(self):
"""
Check that validation will notice if a footer appears before it was
introduced.
"""
content = get_network_status_document_v3({'consensus-method': '8'}, content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content, True)
document = NetworkStatusDocumentV3(content, False)
self.assertEqual([DOC_SIG], document.signatures)
self.assertEqual([], document.get_unrecognized_lines())
# excludes a footer from a version that shouldn't have it
document = get_network_status_document_v3({'consensus-method': '8'}, ('directory-footer', 'directory-signature'))
self.assertEqual([], document.signatures)
self.assertEqual([], document.get_unrecognized_lines())
# Prior to conensus method 9 votes can still have a signature in their
# footer...
#
# https://trac.torproject.org/7932
document = get_network_status_document_v3(
{
'vote-status': 'vote',
'consensus-methods': '1 8',
},
exclude = ('directory-footer',),
authorities = (get_directory_authority(is_vote = True),)
)
self.assertEqual([DOC_SIG], document.signatures)
self.assertEqual([], document.get_unrecognized_lines())
示例2: test_with_microdescriptor_router_status_entries
def test_with_microdescriptor_router_status_entries(self):
"""
Includes microdescriptor flavored router status entries within the
document.
"""
entry1 = get_router_status_entry_micro_v3({'s': "Fast"})
entry2 = get_router_status_entry_micro_v3({'s': "Valid"})
document = get_network_status_document_v3({"network-status-version": "3 microdesc"}, routers = (entry1, entry2))
self.assertEquals((entry1, entry2), document.routers)
# try with an invalid RouterStatusEntry
entry3 = RouterStatusEntryMicroV3(get_router_status_entry_micro_v3({'r': "ugabuga"}, content = True), False)
content = get_network_status_document_v3({"network-status-version": "3 microdesc"}, routers = (entry3,), content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content)
document = NetworkStatusDocumentV3(content, False)
self.assertEquals((entry3,), document.routers)
# try including microdescriptor entries in a normal consensus
content = get_network_status_document_v3(routers = (entry1, entry2), content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content)
expected_routers = (
RouterStatusEntryV3(str(entry1), False),
RouterStatusEntryV3(str(entry2), False),
)
document = NetworkStatusDocumentV3(content, False)
self.assertEquals(expected_routers, document.routers)
示例3: test_with_microdescriptor_router_status_entries
def test_with_microdescriptor_router_status_entries(self):
"""
Includes microdescriptor flavored router status entries within the
document.
"""
entry1 = get_router_status_entry_micro_v3({'s': 'Fast'})
entry2 = get_router_status_entry_micro_v3({
'r': 'tornodeviennasil AcWxDFxrHetHYS5m6/MVt8ZN6AM 2013-03-13 22:09:13 78.142.142.246 443 80',
's': 'Valid',
})
document = get_network_status_document_v3({'network-status-version': '3 microdesc'}, routers = (entry1, entry2))
self.assertTrue(entry1 in document.routers.values())
self.assertTrue(entry2 in document.routers.values())
# try with an invalid RouterStatusEntry
entry3 = RouterStatusEntryMicroV3(get_router_status_entry_micro_v3({'r': 'ugabuga'}, content = True), False)
content = get_network_status_document_v3({'network-status-version': '3 microdesc'}, routers = (entry3,), content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content, True)
document = NetworkStatusDocumentV3(content, False)
self.assertEqual([entry3], list(document.routers.values()))
# try including microdescriptor entry in a normal consensus
content = get_network_status_document_v3(routers = (entry1,), content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content, True)
document = NetworkStatusDocumentV3(content, False)
self.assertEqual([RouterStatusEntryV3(str(entry1), False)], list(document.routers.values()))
示例4: test_consensus_method
def test_consensus_method(self):
"""
Parses the consensus-method field.
"""
document = get_network_status_document_v3({'consensus-method': '12'})
self.assertEqual(12, document.consensus_method)
# check that we default to being consensus-method 1
content = get_network_status_document_v3(exclude = ('consensus-method',), content = True)
document = NetworkStatusDocumentV3(content, False)
self.assertEqual(1, document.consensus_method)
self.assertEqual([], document.consensus_methods)
test_values = (
'',
' ',
'a',
'1 2',
'2.0',
)
for test_value in test_values:
content = get_network_status_document_v3({'consensus-method': test_value}, content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content, True)
document = NetworkStatusDocumentV3(content, False)
self.assertEqual(1, document.consensus_method)
示例5: test_consensus_method
def test_consensus_method(self):
"""
Parses the consensus-method field.
"""
document = get_network_status_document_v3({"consensus-method": "12"})
self.assertEquals(12, document.consensus_method)
# check that we default to being consensus-method 1
content = get_network_status_document_v3(exclude = ("consensus-method",), content = True)
document = NetworkStatusDocumentV3(content, False)
self.assertEquals(1, document.consensus_method)
self.assertEquals([], document.consensus_methods)
test_values = (
"",
" ",
"a",
"1 2",
"2.0",
)
for test_value in test_values:
content = get_network_status_document_v3({"consensus-method": test_value}, content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content)
document = NetworkStatusDocumentV3(content, False)
self.assertEquals(1, document.consensus_method)
示例6: test_vote_status
def test_vote_status(self):
"""
Parses the vote-status field.
"""
document = get_network_status_document_v3({"vote-status": "vote"})
self.assertEquals(False, document.is_consensus)
self.assertEquals(True, document.is_vote)
content = get_network_status_document_v3({"vote-status": "consensus"}, content = True)
document = NetworkStatusDocumentV3(content)
self.assertEquals(True, document.is_consensus)
self.assertEquals(False, document.is_vote)
test_values = (
"",
" ",
"votee",
)
for test_value in test_values:
content = get_network_status_document_v3({"vote-status": test_value}, content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content)
document = NetworkStatusDocumentV3(content, False)
self.assertEquals(True, document.is_consensus)
self.assertEquals(False, document.is_vote)
示例7: test_with_router_status_entries
def test_with_router_status_entries(self):
"""
Includes router status entries within the document. This isn't to test the
RouterStatusEntry parsing but rather the inclusion of it within the
document.
"""
entry1 = get_router_status_entry_v3({'s': 'Fast'})
entry2 = get_router_status_entry_v3({
'r': 'Nightfae AWt0XNId/OU2xX5xs5hVtDc5Mes 6873oEfM7fFIbxYtwllw9GPDwkA 2013-02-20 11:12:27 85.177.66.233 9001 9030',
's': 'Valid',
})
document = get_network_status_document_v3(routers = (entry1, entry2))
self.assertTrue(entry1 in document.routers.values())
self.assertTrue(entry2 in document.routers.values())
# try with an invalid RouterStatusEntry
entry3 = RouterStatusEntryV3(get_router_status_entry_v3({'r': 'ugabuga'}, content = True), False)
content = get_network_status_document_v3(routers = (entry3,), content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content, True)
document = NetworkStatusDocumentV3(content, False)
self.assertEqual([entry3], list(document.routers.values()))
# try including with a microdescriptor consensus
content = get_network_status_document_v3({'network-status-version': '3 microdesc'}, routers = (entry1,), content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content, True)
document = NetworkStatusDocumentV3(content, False)
self.assertEqual([RouterStatusEntryMicroV3(str(entry1), False)], list(document.routers.values()))
示例8: test_version_lists
def test_version_lists(self):
"""
Parses client-versions and server-versions fields. Both are comma separated
lists of tor versions.
"""
expected = [stem.version.Version("1.2.3.4"), stem.version.Version("56.789.12.34-alpha")]
test_value = "1.2.3.4,56.789.12.34-alpha"
document = get_network_status_document_v3({"client-versions": test_value, "server-versions": test_value})
self.assertEquals(expected, document.client_versions)
self.assertEquals(expected, document.server_versions)
test_values = (
("", []),
(" ", []),
("1.2.3.4,", [stem.version.Version("1.2.3.4")]),
("1.2.3.4,1.2.3.a", [stem.version.Version("1.2.3.4")]),
)
for field in ('client-versions', 'server-versions'):
attr = field.replace('-', '_')
for test_value, expected_value in test_values:
content = get_network_status_document_v3({field: test_value}, content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content)
document = NetworkStatusDocumentV3(content, False)
self.assertEquals(expected_value, getattr(document, attr))
示例9: test_vote_status
def test_vote_status(self):
"""
Parses the vote-status field.
"""
document = get_network_status_document_v3({'vote-status': 'vote'})
self.assertEqual(False, document.is_consensus)
self.assertEqual(True, document.is_vote)
content = get_network_status_document_v3({'vote-status': 'consensus'}, content = True)
document = NetworkStatusDocumentV3(content)
self.assertEqual(True, document.is_consensus)
self.assertEqual(False, document.is_vote)
test_values = (
'',
' ',
'votee',
)
for test_value in test_values:
content = get_network_status_document_v3({'vote-status': test_value}, content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content, True)
document = NetworkStatusDocumentV3(content, False)
self.assertEqual(True, document.is_consensus)
self.assertEqual(False, document.is_vote)
示例10: test_consensus_methods
def test_consensus_methods(self):
"""
Parses the consensus-methods field.
"""
document = get_network_status_document_v3({'vote-status': 'vote', 'consensus-methods': '12 3 1 780'})
self.assertEqual([12, 3, 1, 780], document.consensus_methods)
# check that we default to including consensus-method 1
content = get_network_status_document_v3({'vote-status': 'vote'}, ('consensus-methods',), content = True)
document = NetworkStatusDocumentV3(content, False)
self.assertEqual([1], document.consensus_methods)
self.assertEqual(None, document.consensus_method)
test_values = (
(''),
(' '),
('1 2 3 a 5'),
('1 2 3 4.0 5'),
('2 3 4'), # spec says version one must be included
)
for test_value in test_values:
content = get_network_status_document_v3({'vote-status': 'vote', 'consensus-methods': test_value}, content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content, True)
expected_value = [2, 3, 4] if test_value == '2 3 4' else [1]
document = NetworkStatusDocumentV3(content, False)
self.assertEqual(expected_value, document.consensus_methods)
示例11: test_consensus_methods
def test_consensus_methods(self):
"""
Parses the consensus-methods field.
"""
document = get_network_status_document_v3({"vote-status": "vote", "consensus-methods": "12 3 1 780"})
self.assertEquals([12, 3, 1, 780], document.consensus_methods)
# check that we default to including consensus-method 1
content = get_network_status_document_v3({"vote-status": "vote"}, ("consensus-methods",), content = True)
document = NetworkStatusDocumentV3(content, False)
self.assertEquals([1], document.consensus_methods)
self.assertEquals(None, document.consensus_method)
test_values = (
("", []),
(" ", []),
("1 2 3 a 5", [1, 2, 3, 5]),
("1 2 3 4.0 5", [1, 2, 3, 5]),
("2 3 4", [2, 3, 4]), # spec says version one must be included
)
for test_value, expected_consensus_methods in test_values:
content = get_network_status_document_v3({"vote-status": "vote", "consensus-methods": test_value}, content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content)
document = NetworkStatusDocumentV3(content, False)
self.assertEquals(expected_consensus_methods, document.consensus_methods)
示例12: test_microdescriptor_signature
def test_microdescriptor_signature(self):
"""
The 'directory-signature' lines for normal and microdescriptor conensuses
differ slightly in their format.
"""
# including a microdescriptor flavored 'directory-signature' line should work
document = get_network_status_document_v3({"network-status-version": "3 microdesc"})
self.assertEqual('sha256', document.signatures[0].method)
# include a standard 'directory-signature' line in a microdescriptor
# consensus
content = get_network_status_document_v3({
"network-status-version": "3 microdesc",
"directory-signature": NETWORK_STATUS_DOCUMENT_FOOTER[2][1],
}, content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content)
document = NetworkStatusDocumentV3(content, validate = False)
self.assertEqual([], document.signatures)
# includes a microdescriptor flavored 'directory-signature' line in a
# normal consensus
content = get_network_status_document_v3({
"directory-signature": "sha256 " + NETWORK_STATUS_DOCUMENT_FOOTER[2][1],
}, content = True)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content)
document = NetworkStatusDocumentV3(content, validate = False)
self.assertEqual([], document.signatures)
示例13: test_duplicate_fields
def test_duplicate_fields(self):
"""
Almost all fields can only appear once. Checking that duplicates cause
validation errors.
"""
for is_consensus in (True, False):
attr = {"vote-status": "consensus"} if is_consensus else {"vote-status": "vote"}
lines = get_network_status_document_v3(attr, content = True).split("\n")
for index, line in enumerate(lines):
# Stop when we hit the 'directory-signature' for a couple reasons...
# - that is the one field that can validly appear multiple times
# - after it is a crypto blob, which won't trigger this kind of
# validation failure
test_lines = list(lines)
if line.startswith("directory-signature "):
break
# duplicates the line
test_lines.insert(index, line)
content = "\n".join(test_lines)
self.assertRaises(ValueError, NetworkStatusDocumentV3, content)
NetworkStatusDocumentV3(content, False) # constructs without validation
示例14: test_unrecognized_line
def test_unrecognized_line(self):
"""
Includes unrecognized content in the document.
"""
document = get_network_status_document_v3({"pepperjack": "is oh so tasty!"})
self.assertEquals(["pepperjack is oh so tasty!"], document.get_unrecognized_lines())
示例15: test_examples
def test_examples(self):
"""
Run something similar to the examples in the header pydocs.
"""
# makes a consensus with a couple routers, both with the same nickname
entry1 = get_router_status_entry_v3({'s': "Fast"})
entry2 = get_router_status_entry_v3({'s': "Valid"})
content = get_network_status_document_v3(routers = (entry1, entry2), content = True)
# first example: parsing via the NetworkStatusDocumentV3 constructor
consensus_file = StringIO.StringIO(content)
consensus = NetworkStatusDocumentV3(consensus_file.read())
consensus_file.close()
for router in consensus.routers:
self.assertEqual('caerSidi', router.nickname)
# second example: using parse_file
with support_with(StringIO.StringIO(content)) as consensus_file:
for router in parse_file(consensus_file):
self.assertEqual('caerSidi', router.nickname)