"""Functional tests for getting subscribers.""" import json from unittest.mock import patch from owsresponse import status def test_get_feed_subscribers(fixture_client): """Test getting feed subscribers.""" stream_response = { 'results': [ { 'feed_id': 'user_email_notifications:alw_123', 'target_id': 'label_analytics_digest:vendor_123', }, { 'feed_id': 'user_email_notifications:alw_456', 'target_id': 'label_analytics_digest:vendor_123', }, ] } class StreamFeed: def followers(self, limit=10): return stream_response class StreamClient: def feed(self, feed_id, feed_name): return StreamFeed() stream_client = StreamClient() with patch('notifications.models.stream.stream_client', new=stream_client): feed_name = 'label_analytics_digest' feed_id = 'vendor_123' url = '/feed/subscribers?feed_name={0}&feed_id={1}'.format(feed_name, feed_id) result = fixture_client.get(url) assert result.status_code == status.OK assert json.loads(result.data.decode('utf-8')) == { 'items': ['user_email_notifications:alw_123', 'user_email_notifications:alw_456'] } def test_get_feed_subscribers_exception(fixture_client): """Test getting feed subscribers when an exception is raised.""" class StreamClient: def feed(self, feed_id, feed_name): raise Exception('error') stream_client = StreamClient() with patch('notifications.models.stream.stream_client', new=stream_client): feed_name = 'label_analytics_digest' feed_id = 'vendor_123' url = '/feed/subscribers?feed_name={0}&feed_id={1}'.format(feed_name, feed_id) result = fixture_client.get(url) assert result.status_code == status.INTERNAL_ERROR