"""Tests for ows_features interface.""" from unittest.mock import MagicMock import requests from flexmock import flexmock from owsrequest import request from notifications_delivery import config from notifications_delivery.constants import ows_services from notifications_delivery.models import ows_features def test_get_user_features_success(monkeypatch): """Test getting user features when the request is successfull.""" mock_user_features = { 'feature_1': 'enabled', 'feature_2': 'control' } mock_ows_features_response = requests.models.Response() mock_ows_features_response.status_code = 200 mock_ows_features_response.json = MagicMock( return_value=mock_user_features) monkeypatch.setattr( request, 'process', MagicMock(return_value=mock_ows_features_response)) user_id = 'oa:123' result = ows_features.get_user_features(user_id) request.process.assert_called_once_with( application=ows_services.APPLICATION_NAME, environment=config.ENVIRONMENT, method=ows_services.METHOD_GET, service_name=ows_services.OWS_FEATURES, path='/features/user/oa:123') assert result == mock_user_features def test_get_user_features_error(): """Test getting user features when the request fails.""" user_id = 'oa:123' ows_features_error = 'ERROR' ows_features_response = flexmock(requests.models.Response()) ows_features_response.status_code = 500 (flexmock(ows_features_response) .should_receive('text') .and_return(ows_features_error)) (flexmock(request) .should_receive('process') .and_return(ows_features_response)) result = ows_features.get_user_features(user_id) assert result is None