"""Integration tests for ows-notifications api calls.""" import json import os import pytest import requests base_url = os.environ.get('INTEGRATION_TESTS_URL', 'https://qa-ows-notifications.theorchard.io') notifications_url = f'{base_url}/user/notifications' activity_url = f'{base_url}/activity' unsubscribe_url = f'{base_url}/unsubscribe' subscribe_url = f'{base_url}/subscribe' subscriptions_url = f'{base_url}/user/subscriptions' feed_users_url = f'{base_url}/feed/subscribers?feed_name=label_analytics_digest&feed_id=7123' headers = { 'Orchard-User-Id': 'alw:55450', 'Grass-Account-Id': '12345', 'Grass-Account-Type': 'vendor', } headers_get_subscriptions = { 'Orchard-User-Id': 'alw:55451', 'Grass-Account-Id': '7123', 'Grass-Account-Type': 'vendor', } sub_headers = { 'Orchard-User-Id': 'alw:1234', 'Grass-Account-Id': '12345', 'Grass-Account-Type': 'subaccount', } subscribe_payload = { 'user_feed_name': 'user_email_notifications_test', 'feed_name': 'label_analytics_digest_test', } subscribe_payload_no_ows_users = { 'user_feed_name': 'user_email_notifications_test', 'feed_name': 'orchard_trending_tracks_europe_test', 'feed_id': 'orchard', 'user_feed_id': 'evlastos@gmail.com', } unsubscribe_payload = { 'user_feed_name': 'user_email_notifications_test', 'feed_name': 'label_analytics_digest_test', } unsubscribe_payload_no_ows_users = { 'user_feed_name': 'user_email_notifications_test', 'feed_name': 'orchard_trending_tracks_europe_test', 'feed_id': 'orchard', 'user_feed_id': 'evlastos@gmail.com', } activity_payload = { 'feed_name': 'label_analytics_digest_test', 'feed_id': 'vendor_12345', 'payload': { 'actor': 'The Orchard Activity Detector', 'verb': 'Detected', 'object': 'Spike', 'date': '2018-06-30', 'trending_tracks': [ { 'track_name': 'Teenage Murder Mystery', 'artist_name': 'Royal Trux', 'isrc': 'USFP71866808', 'release_date': '2000-06-06', 'image_url': 'https://images.qaorch.com/release/' 'large_cover/192562/189/192562189429.jpg', 'num_streams': 1481, 'num_streams_avg': 24, 'percent_above_average': 5923, }, { 'track_name': 'You Only Like Me with the Lights Out', 'artist_name': 'Avid Dancer', 'isrc': 'QM5BK1600101', 'release_date': '2016-09-02', 'image_url': 'https://images.qaorch.com/release/' 'large_cover/886446/064/886446064536.jpg', 'num_streams': 13390, 'num_streams_avg': 5791, 'percent_above_average': 131, }, { 'track_name': 'Sunshine and Grease', 'artist_name': 'Royal Trux', 'isrc': 'USFP71866806', 'release_date': '2000-06-06', 'image_url': 'https://images.qaorch.com/release/' 'large_cover/192562/189/192562189429.jpg', 'num_streams': 1304, 'num_streams_avg': 34, 'percent_above_average': 3649, }, ], }, } subscribe_sub_account_payload = { 'user_feed_name': 'user_email_notifications_test', 'feed_name': 'label_analytics_digest_test', 'feed_id': 'subaccount_12345', } @pytest.mark.parametrize( 'data, req_headers, expected_result', ( # test_subscribe (subscribe_payload, headers, requests.codes.ok), # test_subscribe_no_ows_users (subscribe_payload_no_ows_users, headers, requests.codes.ok), # test_sub_account_failed_subscribe (subscribe_sub_account_payload, headers, requests.codes.unauthorized), # test_sub_account_subscribe (subscribe_sub_account_payload, sub_headers, requests.codes.ok), ), ) def test_subscribe(data, req_headers, expected_result): """Subscribe request for vendor.""" response = requests.post(subscribe_url, data=json.dumps(data), headers=req_headers) assert response.status_code == expected_result def test_add_activity(): """Add activity request.""" response = requests.post(activity_url, data=json.dumps(activity_payload)) assert response.status_code == requests.codes.created def test_get_notifications(): """Get notificaitons.""" response = requests.get(notifications_url, headers=headers) assert response.status_code == requests.codes.ok @pytest.mark.parametrize( 'data, req_headers, expected_result', ( # test_unsubscribe (unsubscribe_payload, headers, requests.codes.ok), # test_unsubscribe_no_ows_users (unsubscribe_payload_no_ows_users, headers, requests.codes.ok), # test_unsubscribe_sub_account (unsubscribe_payload, sub_headers, requests.codes.ok), ), ) def test_unsubscribe(data, req_headers, expected_result): """Unsubscribe request.""" response = requests.post(unsubscribe_url, data=json.dumps(data), headers=req_headers) assert response.status_code == expected_result def test_get_subscriptions(): """User subscriptions request.""" response = requests.get(subscriptions_url, headers=headers_get_subscriptions) assert response.status_code == requests.codes.ok def test_get_users_for_feed(): """Feed users request.""" response = requests.get(feed_users_url) assert response.status_code == requests.codes.ok