def test_that_signing_service_should_reconnect_when_expected_socket_error_was_caught(self): with mock.patch('socket.socket.connect', side_effect=socket.error()) as mock_socket_connect: with mock.patch('signing_service.signing_service.SigningService._was_sigterm_caught', side_effect=[False, False, True]): signing_service = SigningService(*self.parameters) signing_service.run() assertpy.assert_that(mock_socket_connect.call_count).is_equal_to(2)
def test_that_signing_service_should_run_full_loop_when_instantiated_with_all_parameters( self): with mock.patch('socket.socket.connect') as mock_socket_connect: with mock.patch( 'signing_service.signing_service.SigningService._authenticate' ) as mock___authenticate: with mock.patch( 'signing_service.signing_service.SigningService._get_signing_service_daily_transaction_sum_so_far' ) as mock_daily_transaction_sum: with mock.patch( 'signing_service.signing_service.SigningService._handle_connection' ) as mock__handle_connection: with mock.patch( 'socket.socket.close') as mock_socket_close: with mock.patch( 'signing_service.signing_service.SigningService._was_sigterm_caught', side_effect=[False, True]): signing_service = SigningService( *self.parameters) signing_service.run() mock_socket_connect.assert_called_once_with(('127.0.0.1', self.port)) mock_socket_close.assert_called_once() mock___authenticate.assert_called_once() mock_daily_transaction_sum.assert_called_once() mock__handle_connection.assert_called_once()
def test_that_signing_service_should_exit_gracefully_on_keyboard_interrupt(self): with mock.patch('socket.socket.connect', side_effect=KeyboardInterrupt()) as mock_socket_connect: with mock.patch('socket.socket.close') as mock_socket_close: signing_service = SigningService(*self.parameters) signing_service.run() mock_socket_connect.assert_called_once_with(('127.0.0.1', self.port)) mock_socket_close.assert_called_once()
def test_that_signing_service_should_reraise_unrecognized_exception(self): with mock.patch('socket.socket.connect', side_effect=Exception()) as mock_socket_connect: with mock.patch('socket.socket.close') as mock_socket_close: signing_service = SigningService(*self.parameters) with pytest.raises(Exception): signing_service.run() mock_socket_connect.assert_called_once_with(('127.0.0.1', self.port)) mock_socket_close.assert_called_once()
def test_that_signing_service_will_reconnect_after_authentication_fails(self): with mock.patch('socket.socket.connect') as mock_socket_connect: with mock.patch('socket.socket.close') as mock_socket_close: with mock.patch('signing_service.signing_service.SigningService._authenticate', side_effect=socket.error()) as mock___authenticate: with mock.patch('signing_service.signing_service.sleep'): signing_service = SigningService(*self.parameters) signing_service.run() assertpy.assert_that(mock_socket_connect.call_count).is_equal_to(SIGNING_SERVICE_DEFAULT_RECONNECT_ATTEMPTS + 1) assertpy.assert_that(mock_socket_close.call_count).is_equal_to(SIGNING_SERVICE_DEFAULT_RECONNECT_ATTEMPTS + 1) assertpy.assert_that(mock___authenticate.call_count).is_equal_to(SIGNING_SERVICE_DEFAULT_RECONNECT_ATTEMPTS + 1)
def test_that_signing_service_will_reconnect_on_socket_errors_and_exit_gracefully_when_exceeds_maximum_number_of_reconnection_attempts(self): with mock.patch('socket.socket.connect', side_effect=socket.error()) as mock_socket_connect: with mock.patch('socket.socket.close') as mock_socket_close: with mock.patch('signing_service.signing_service.sleep'): signing_service = SigningService(*self.parameters) with mock.patch('signing_service.signing_service.logger.error') as mock_logger_error: signing_service.run() assertpy.assert_that(mock_socket_connect.call_count).is_equal_to(SIGNING_SERVICE_DEFAULT_RECONNECT_ATTEMPTS + 1) assertpy.assert_that(mock_socket_close.call_count).is_equal_to(SIGNING_SERVICE_DEFAULT_RECONNECT_ATTEMPTS + 1) assertpy.assert_that( mock_logger_error.call_args_list[mock_logger_error.call_count - 1], ['Maximum number of reconnection exceeded.'], )
def test_that_signing_service_will_reconnect_on_socket_errors_and_raise_exception_when_exceeds_maxium_number_of_reconnection_attempts( self): with mock.patch('socket.socket.connect', side_effect=socket.error()) as mock_socket_connect: with mock.patch('socket.socket.close') as mock_socket_close: with mock.patch('signing_service.signing_service.sleep'): signing_service = SigningService(*self.parameters) with pytest.raises( SigningServiceMaximumReconnectionAttemptsExceeded): signing_service.run() assertpy.assert_that(mock_socket_connect.call_count).is_equal_to( SIGNING_SERVICE_DEFAULT_RECONNECT_ATTEMPTS + 1) assertpy.assert_that(mock_socket_close.call_count).is_equal_to( SIGNING_SERVICE_DEFAULT_RECONNECT_ATTEMPTS + 1)