def test_generate_service_descriptor(monkeypatch, mocker): ''' Test creation of a fully signed hidden service descriptor ''' # Mock the datetime function to return a constant timestamp class frozen_datetime(datetime.datetime): @classmethod def utcnow(cls): return datetime.datetime.utcfromtimestamp(UNIX_TIMESTAMP) monkeypatch.setattr(datetime, 'datetime', frozen_datetime) # Patch make_introduction_points_part to return the test introduction # point section mocker.patch('onionbalance.descriptor.make_introduction_points_part', lambda *_: INTRODUCTION_POINT_PART) # Test basic descriptor generation. signed_descriptor = descriptor.generate_service_descriptor( PRIVATE_KEY, introduction_point_list=['mocked-ip-list'], ).encode('utf-8') stem.descriptor.hidden_service_descriptor.\ HiddenServiceDescriptor(signed_descriptor, validate=True) assert (hashlib.sha1(signed_descriptor).hexdigest() == 'df4f4a7a15492205f073c32cbcfc4eb9511e4ad8') # Test descriptor generation with specified timestamp signed_descriptor = descriptor.generate_service_descriptor( PRIVATE_KEY, introduction_point_list=['mocked-ip-list'], timestamp=datetime.datetime.utcfromtimestamp(UNIX_TIMESTAMP), ).encode('utf-8') stem.descriptor.hidden_service_descriptor.\ HiddenServiceDescriptor(signed_descriptor, validate=True) assert (hashlib.sha1(signed_descriptor).hexdigest() == 'df4f4a7a15492205f073c32cbcfc4eb9511e4ad8') # Test descriptor for deviation and replica 1 signed_descriptor = descriptor.generate_service_descriptor( PRIVATE_KEY, introduction_point_list=['mocked-ip-list'], replica=1, deviation=24 * 60 * 60, ).encode('utf-8') stem.descriptor.hidden_service_descriptor.\ HiddenServiceDescriptor(signed_descriptor, validate=True) assert (hashlib.sha1(signed_descriptor).hexdigest() == 'd828140cdccb1165dbc5a4b39622fcb45e6438fb')
def test_generate_service_descriptor(monkeypatch, mocker): """ Test creation of a fully signed hidden service descriptor """ # Mock the datetime function to return a constant timestamp class frozen_datetime(datetime.datetime): @classmethod def utcnow(cls): return datetime.datetime.utcfromtimestamp(UNIX_TIMESTAMP) monkeypatch.setattr(datetime, 'datetime', frozen_datetime) # Patch make_introduction_points_part to return the test introduction # point section mocker.patch('onionbalance.descriptor.make_introduction_points_part', lambda *_: INTRODUCTION_POINT_PART) # Test basic descriptor generation. signed_descriptor = descriptor.generate_service_descriptor( PRIVATE_KEY, introduction_point_list=['mocked-ip-list'], ).encode('utf-8') stem.descriptor.hidden_service_descriptor.\ HiddenServiceDescriptor(signed_descriptor, validate=True) assert (hashlib.sha1(signed_descriptor).hexdigest() == 'df4f4a7a15492205f073c32cbcfc4eb9511e4ad8') # Test descriptor generation with specified timestamp signed_descriptor = descriptor.generate_service_descriptor( PRIVATE_KEY, introduction_point_list=['mocked-ip-list'], timestamp=datetime.datetime.utcfromtimestamp(UNIX_TIMESTAMP), ).encode('utf-8') stem.descriptor.hidden_service_descriptor.\ HiddenServiceDescriptor(signed_descriptor, validate=True) assert (hashlib.sha1(signed_descriptor).hexdigest() == 'df4f4a7a15492205f073c32cbcfc4eb9511e4ad8') # Test descriptor for deviation and replica 1 signed_descriptor = descriptor.generate_service_descriptor( PRIVATE_KEY, introduction_point_list=['mocked-ip-list'], replica=1, deviation=24*60*60, ).encode('utf-8') stem.descriptor.hidden_service_descriptor.\ HiddenServiceDescriptor(signed_descriptor, validate=True) assert (hashlib.sha1(signed_descriptor).hexdigest() == 'd828140cdccb1165dbc5a4b39622fcb45e6438fb')
def test_generate_service_descriptor_no_intros(): with pytest.raises(ValueError): descriptor.generate_service_descriptor( PRIVATE_KEY, introduction_point_list=[], )