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 post_topic(self, topic: Topic) -> Topic: topic_data = topic.to_json() return self.perform_request('POST', self._url_topics, json=topic_data, response_class=Topic)
def create_topic(self, topic_name: str): """ Creates a new record for the given topics in the Subscription Manager """ topic = Topic(name=topic_name) self.client.post_topic(topic)
def test_subscribe__topic_name_is_not_registered_in_sm__raises_SubscriptionManagerServiceError(): sm_client = SubscriptionManagerClient(mock.Mock()) sm_client.get_topics = mock.Mock(return_value=[Topic('topic1')]) sm_service = SubscriptionManagerService(sm_client) with pytest.raises(SubscriptionManagerServiceError) as e: sm_service.subscribe('topic2') assert 'topic2 is not registered in Subscription Manager' == str(e.value)
def test_subscribe__sm_api_error__raises_SubscriptionManagerServiceError(): sm_client = SubscriptionManagerClient(mock.Mock()) sm_client.get_topics = mock.Mock(return_value=[Topic('topic1')]) sm_service = SubscriptionManagerService(sm_client) sm_client.post_subscription = mock.Mock(side_effect=APIError('server error', status_code=500)) with pytest.raises(SubscriptionManagerServiceError) as e: sm_service.subscribe('topic1')
def test_delete_topic(): sm_client = SubscriptionManagerClient(mock.Mock()) mock_delete_topic_by_id = mock.Mock() sm_client.delete_topic_by_id = mock_delete_topic_by_id sm_service = SubscriptionManagerService(sm_client) topic = Topic(name='topic', id=1) sm_service.delete_topic(topic) mock_delete_topic_by_id.assert_called_once_with(topic_id=topic.id)
def test_get_or_create_sm_topic__topic_is_found_and_returned( mock_sm_client, test_client, test_user ): topic_name = 'topic' topic = Topic(name=topic_name) mock_sm_client.get_topics = Mock(return_value=[topic]) context = UASZonesSubscriptionCreateContext(Mock(), user=test_user) context.topic_name = topic_name get_or_create_sm_topic(context) assert topic == context.sm_topic
def test_subscribe__no_errors__returns_subscription_queue(): topic = Topic(name='topics', id=1) sm_client = SubscriptionManagerClient(mock.Mock()) sm_client.get_topics = mock.Mock(return_value=[topic]) sm_service = SubscriptionManagerService(sm_client) subscription = Subscription(queue=uuid.uuid4().hex, topic_id=topic.id) sm_client.post_subscription = mock.Mock(return_value=subscription) queue = sm_service.subscribe('topics') assert subscription.queue == queue called_subscription = sm_client.post_subscription.call_args[0][0] assert topic.id == called_subscription.topic_id
import uuid from unittest import mock import pytest from rest_client.errors import APIError from subscription_manager_client.models import Topic, Subscription from subscription_manager_client.subscription_manager import SubscriptionManagerClient from swim_pubsub.core.errors import SubscriptionManagerServiceError from swim_pubsub.core.subscription_manager_service import SubscriptionManagerService __author__ = "EUROCONTROL (SWIM)" @pytest.mark.parametrize('sm_topics', [ [Topic('topic1'), Topic('topic2'), Topic('topic3')] ]) def test_get_topics(sm_topics): sm_client = SubscriptionManagerClient(mock.Mock()) sm_client.get_topics = mock.Mock(return_value=sm_topics) sm_service = SubscriptionManagerService(sm_client) assert sm_topics == sm_service.get_topics() def test_create_topic(): sm_client = SubscriptionManagerClient(mock.Mock()) sm_client.post_topic = mock.Mock()
def make_topic(name='topic'): topic_dict = {'name': name, 'id': 1} topic = Topic.from_json(topic_dict) return topic_dict, topic
def test_topic__from_json(topic_dict, expected_topic): topic = Topic.from_json(topic_dict) assert expected_topic == topic
Details on EUROCONTROL: http://www.eurocontrol.int """ import pytest from subscription_manager_client.models import Topic, Subscription, QOS __author__ = "EUROCONTROL (SWIM)" @pytest.mark.parametrize('topic_dict, expected_topic', [ ( { 'name': 'topic', 'id': 1 }, Topic(name='topic', id=1) ) ]) def test_topic__from_json(topic_dict, expected_topic): topic = Topic.from_json(topic_dict) assert expected_topic == topic @pytest.mark.parametrize('topic, expected_dict', [ ( Topic(name='topic', id=1), { 'name': 'topic', 'id': 1 }