Exemplo n.º 1
0
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()
Exemplo n.º 2
0
    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
        }