"""Tests for main handlers with /v2/validate base.""" import json import flask from flexmock import flexmock from owsrequest import flask_request from owsresponse import response import application from assets import handlers from assets.constants import error as error_constants from assets.logic import image_location, ownership, validators def test_validate_product_artwork_success() -> None: """Test status code and response payload when logic is successful.""" product_id = 12345 with application.app.test_request_context(): flexmock(flask_request).should_receive("verify_grass_ownership").with_args( flask.request, ownership.check_ownership, product_id ).once().and_return(response.Response()) flexmock(image_location).should_receive("validate_product_artwork").with_args( product_id ).and_return(None) result = handlers.validate_product_artwork(product_id) assert result.status_code == 200 assert result.data.decode() == json.dumps({"status": error_constants.SUCCESS_CODE}) def test_validate_product_artwork_not_owner() -> None: """Test that ownership error is returned ownership check fails.""" product_id = 12345 not_owner_response = response.Response(status=403, errors={"no": "dice"}) with application.app.test_request_context(): flexmock(flask_request).should_receive("verify_grass_ownership").with_args( flask.request, ownership.check_ownership, product_id ).once().and_return(not_owner_response) flexmock(image_location).should_receive("validate_product_artwork").never() result = handlers.validate_product_artwork(product_id) assert result.status_code == not_owner_response.status assert result.data.decode() == json.dumps(not_owner_response.errors) def test_validate_product_audio_success() -> None: """Test status code and response payload when logic is successful.""" product_id = 12345 with application.app.test_request_context(): flexmock(validators).should_receive("validate_audio_assets").with_args( product_id ).and_return([]) result = handlers.validate_product_audio(product_id) assert result.status_code == 200 assert result.data.decode() == json.dumps({"errorMsgs": []})