def test_subscriber__get_topics__no_errors(): topics = [Topic(name='topic1'), Topic(name='topic2')] broker_handler = mock.Mock() sm_service = mock.Mock() sm_service.get_topics = mock.Mock(return_value=topics) subscriber = Subscriber(broker_handler, sm_service) assert topics == subscriber.get_topics()
def test_subscriber__subscribe__sm_api_error__logs_error_and_raises_SubscriptionManagerServiceError(caplog): caplog.set_level(logging.DEBUG) broker_handler = mock.Mock() sm_service = mock.Mock() sm_service.subscribe = mock.Mock(side_effect=SubscriptionManagerServiceError('server error')) subscriber = Subscriber(broker_handler, sm_service) expected_message = f"Error while accessing Subscription Manager: server error" with pytest.raises(SubscriptionManagerServiceError) as e: subscriber.subscribe('topics', callback=mock.Mock()) assert "server error" == str(e.value) log_message = caplog.records[0] assert expected_message == log_message.message
def test_subscriber__broker_handler_error__logs_and_raises_BrokerHandlerError(caplog): caplog.set_level(logging.DEBUG) queue = uuid.uuid4().hex broker_handler = mock.Mock() broker_handler.create_receiver = mock.Mock(side_effect=BrokerHandlerError('could not create receiver')) sm_service = mock.Mock() sm_service.subscribe = mock.Mock(return_value=queue) subscriber = Subscriber(broker_handler, sm_service) with pytest.raises(BrokerHandlerError) as e: subscriber.subscribe('topics', callback=mock.Mock()) assert 'could not create receiver' == str(e.value) log_messages = caplog.records assert f"Subscribed in SM and got unique queue: {queue}" == log_messages[0].message assert 'could not create receiver' == log_messages[1].message
def test_subscriber__resume__no_errors(caplog): caplog.set_level(logging.DEBUG) caplog.set_level(logging.DEBUG) queue = uuid.uuid4().hex topic = 'topics' broker_handler = mock.Mock() sm_service = mock.Mock() sm_service.resume = mock.Mock() subscriber = Subscriber(broker_handler, sm_service) subscriber.subscriptions[topic] = queue subscriber.resume(topic) log_message = caplog.records[0] assert 'Resumed subscription in Subscription Manager' == log_message.message sm_service.resume.assert_called_once_with(queue)
def test_subscriber__unsubscribe__broker_handler_error__logs_and_raises_BrokerHandlerError(caplog): caplog.set_level(logging.DEBUG) queue = uuid.uuid4().hex topic = 'topics' broker_handler = mock.Mock() broker_handler.remove_receiver = mock.Mock(side_effect=BrokerHandlerError('could not remove receiver')) sm_service = mock.Mock() sm_service.unsubscribe = mock.Mock() subscriber = Subscriber(broker_handler, sm_service) subscriber.subscriptions[topic] = queue with pytest.raises(BrokerHandlerError) as e: subscriber.unsubscribe(topic) log_message = caplog.records[0] assert 'could not remove receiver' == str(e.value) assert 'could not remove receiver' == log_message.message sm_service.unsubscribe.assert_not_called()
def test_subscriber__resume__sm_api_error__logs_message_and_raises_SubscriptionManagerServiceError(caplog): caplog.set_level(logging.DEBUG) caplog.set_level(logging.DEBUG) queue = uuid.uuid4().hex topic = 'topics' broker_handler = mock.Mock() sm_service = mock.Mock() sm_service.resume = mock.Mock(side_effect=SubscriptionManagerServiceError('server error')) subscriber = Subscriber(broker_handler, sm_service) subscriber.subscriptions[topic] = queue expected_message = f"Error while accessing Subscription Manager: server error" with pytest.raises(SubscriptionManagerServiceError) as e: subscriber.resume(topic) assert "server error" == str(e.value) log_message = caplog.records[0] assert expected_message == log_message.message
def test_subscriber__subscribe__no_errors(caplog): caplog.set_level(logging.DEBUG) queue = uuid.uuid4().hex topic = 'topics' callback = mock.Mock() broker_handler = mock.Mock() broker_handler.create_receiver = mock.Mock() sm_service = mock.Mock() sm_service.subscribe = mock.Mock(return_value=queue) subscriber = Subscriber(broker_handler, sm_service) subscriber.subscribe(topic, callback) log_message = caplog.records[0] assert f"Subscribed in SM and got unique queue: {queue}" == log_message.message broker_handler.create_receiver.assert_called_once_with(queue, callback) assert subscriber.subscriptions[topic] == queue