def test_post_subscription__http_error_code__raises_api_error(error_code): response = Mock() response.status_code = error_code request_handler = Mock() request_handler.post = Mock(return_value=response) client = SubscriptionManagerClient(request_handler=request_handler) with pytest.raises(APIError): client.post_subscription(Mock())
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_post_subscription__subscription_object_is_returned(): subscription_dict, expected_subscription = make_subscription() response = Mock() response.status_code = 201 response.content = subscription_dict response.json = Mock(return_value=subscription_dict) request_handler = Mock() request_handler.post = Mock(return_value=response) client = SubscriptionManagerClient(request_handler=request_handler) subscription = client.post_subscription(Mock()) assert expected_subscription == subscription called_url = request_handler.post.call_args[0][0] assert BASE_URL + 'subscriptions/' == called_url
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