"""Integration tests.""" import hashlib import pytest import requests from notifications.constants.notifications import TOKEN_SECRET from tests.integration.consts import api @pytest.fixture def user_id(): """User id for url params.""" return 'oa:1686' @pytest.fixture def no_ows_user(): """User email for url params.""" return 'notifications@test.theorchard.io' @pytest.fixture def feed_name(): """Feed name for url params.""" return 'label_analytics_digest' @pytest.fixture def feed_name_not_found(): """Feed name for url params.""" return 'label_analdfdfytics_digest' @pytest.fixture def feed_id(): """Feed id for url params.""" return 'vendor_1234' @pytest.fixture def token_for_user(user_id, feed_name, feed_id): """Token from hashlib.""" generated_hash = hashlib.sha1() generated_hash.update(user_id.encode('utf-8')) generated_hash.update(feed_name.encode('utf-8')) generated_hash.update(feed_id.encode('utf-8')) generated_hash.update(TOKEN_SECRET.encode('utf-8')) generated_token = generated_hash.hexdigest() return generated_token @pytest.fixture def token_for_user_not_found(user_id, feed_name_not_found, feed_id): """Token from hashlib.""" generated_hash = hashlib.sha1() generated_hash.update(user_id.encode('utf-8')) generated_hash.update(feed_name_not_found.encode('utf-8')) generated_hash.update(feed_id.encode('utf-8')) generated_hash.update(TOKEN_SECRET.encode('utf-8')) generated_token = generated_hash.hexdigest() return generated_token @pytest.fixture def token_for_no_ows_user(no_ows_user, feed_name, feed_id): """Token from hashlib.""" generated_hash = hashlib.sha1() generated_hash.update(no_ows_user.encode('utf-8')) generated_hash.update(feed_name.encode('utf-8')) generated_hash.update(feed_id.encode('utf-8')) generated_hash.update(TOKEN_SECRET.encode('utf-8')) generated_token = generated_hash.hexdigest() return generated_token def test_get_hello(): """Get Hello Endpoint.""" response = requests.get(api.HEALTH_CHECK) assert response.status_code == 200, '\nReason: {}\nURL: {}'.format( response.reason, response.url) response_body = response.json() assert 'status' in response_body assert 'ok' in response_body['status'] def test_unsubscribe_user(token_for_user, user_id, feed_name, feed_id): """Unsubscribe user happy path.""" response = requests.get( api.UNSUBSCRIBE + '?user_id=' + user_id + '&feed_name=' + feed_name + '&' 'feed_id=' + feed_id + '&key=' + token_for_user) print(response) assert response.status_code == 200, '\nReason: {}\nURL: {}'.format( response.reason, response.url) def test_unsubscribe_user_not_found_error(token_for_user_not_found, user_id, feed_name_not_found, feed_id): """Unsubscribe user happy path.""" response = requests.get( api.UNSUBSCRIBE + '?user_id=' + user_id + '&feed_name=' + feed_name_not_found + '&' 'feed_id=' + feed_id + '&key=' + token_for_user_not_found) print(response) assert response.status_code == 404, '\nReason: {}\nURL: {}'.format( response.reason, response.url) def test_unsubscribe_user_unauthorized(token_for_user, user_id, feed_name, feed_id): """Unsubscribe user happy path.""" response = requests.get( api.UNSUBSCRIBE + '?user_id=' + user_id + '3&feed_name=' + feed_name + '&' 'feed_id=' + feed_id + '&key=' + token_for_user) print(response) assert response.status_code == 401, '\nReason: {}\nURL: {}'.format( response.reason, response.url) def test_unsubscribe_no_ows_user(token_for_no_ows_user, no_ows_user, feed_name, feed_id): """Unsubscribe user happy path.""" response = requests.get( api.UNSUBSCRIBE + '?user_id=' + no_ows_user + '&feed_name=' + feed_name + '&' 'feed_id=' + feed_id + '&key=' + token_for_no_ows_user) print(response) assert response.status_code == 200, '\nReason: {}\nURL: {}'.format( response.reason, response.url)