"""Tests for ows-tracks interface.""" from unittest.mock import MagicMock from owsrequest import request import pytest from sound_recordings.models import ows_track def post_response(mocker, json=None, status_code=200): """Mock the head response.""" if json is None: json = {} response = MagicMock(status_code=status_code, json=lambda: json) return mocker.patch.object(request, 'post', return_value=response) def test_claim_isrc(mocker): """Check post claim new isrc.""" data = {'isrc': 'USRC17607848'} mock_request_post = post_response(mocker, json=data.copy()) res = ows_track.claim_isrc() mock_request_post.assert_called_with( 'ows-track', '/claim_new_isrc') assert res == 'USRC17607848' @pytest.mark.parametrize( 'http_code', [ (502), (504) ] ) def test_claim_bad_gateway_failure(mocker, http_code): """Check post claim new isrc bad gateway.""" data = {'isrc': 'USRC17607848'} post_response(mocker, json=data.copy(), status_code=http_code) with pytest.raises(ows_track.BadGateway): ows_track.claim_isrc() def test_claim_isrc_failure(mocker): """Check post claim new isrc.""" data = {'isrc': 'USRC17607848'} mock_request_post = post_response( mocker, json=data.copy(), status_code=500) with pytest.raises(Exception): ows_track.claim_isrc() mock_request_post.assert_called_with( 'ows-track', '/claim_new_isrc')