"""Tests for model that creates calls to ows-permissions.""" from unittest.mock import MagicMock from owsrequest import request as requests from reporting import api from reporting.constants import service_name from reporting.models import ows_permissions def test_get_label_resources_success(monkeypatch, valid_get_header, context): """Test get_label_resources parses Vendor/Subaccount items.""" with context, api.app.test_request_context(headers=valid_get_header): mock_response = MagicMock(status_code=200) mock_response.json = MagicMock( return_value={ 'items': [ {'type': 'Vendor', 'id': 100}, {'type': 'Subaccount', 'id': 200}, {'type': 'LabelParticipant', 'id': 300}, ] } ) monkeypatch.setattr( requests, 'get', MagicMock(return_value=mock_response) ) permissions_response = ows_permissions.get_label_resources( 'Label', '456' ) assert requests.get.called assert requests.get.call_args[0][0] == service_name.OWS_PERMISSIONS assert requests.get.call_args[0][1] == ( '/admin/profile-type/Label/profile/456/resource/label' ) assert permissions_response.status == 200 assert permissions_response.message == { 'full_access': False, 'vendor_ids': [100], 'subaccount_ids': [200], } def test_get_label_resources_full_access( monkeypatch, valid_get_header, context ): """Test get_label_resources treats a '*' Vendor id as full access.""" with context, api.app.test_request_context(headers=valid_get_header): mock_response = MagicMock(status_code=200) mock_response.json = MagicMock( return_value={'items': [{'type': 'Vendor', 'id': '*'}]} ) monkeypatch.setattr( requests, 'get', MagicMock(return_value=mock_response) ) permissions_response = ows_permissions.get_label_resources( 'Label', '456' ) assert permissions_response.message == { 'full_access': True, 'vendor_ids': [], 'subaccount_ids': [], } def test_get_label_resources_fail(monkeypatch, valid_get_header, context): """Test get_label_resources surfaces upstream errors.""" with context, api.app.test_request_context(headers=valid_get_header): mock_response = MagicMock(status_code=404) mock_response.json = MagicMock( return_value={'code': 'not_found_error', 'message': None} ) monkeypatch.setattr( requests, 'get', MagicMock(return_value=mock_response) ) permissions_response = ows_permissions.get_label_resources( 'Label', '456' ) assert not permissions_response assert permissions_response.errors.get('code') == 'not_found_error'