"""Integration API tests for ows-assets validate endpoint.""" from typing import Any from assets.constants.asset_upload import ASSET_TYPE_IMAGE from tests.testutils.api_client.api_client import APIClient from tests.testutils.api_client.product_digital_api_client import ( ProductDigitalAPIClient, ) from tests.testutils.file_helper.file_helper import FileHelper from tests.testutils.s3_helper.s3_helper import S3Helper from tests.testutils.test_helper.test_helper import TestHelper def standard_v2_upload( workstation_api_client: APIClient, workstation_product_digital_api_client: ProductDigitalAPIClient, product_data: dict[str, Any], asset_type: str, ) -> int: """Upload artwork to s3 via v2 flow, expect to encode and return product ID.""" asset_file = "tests/integration/assets/jpg_file.jpg" file_data = FileHelper.get_file_data_from_asset(asset_file) upload_token = S3Helper.get_upload_token(workstation_api_client, asset_type) product_dict = TestHelper.create_product( workstation_product_digital_api_client, product_data ) metadata = S3Helper.s3_metadata(product_dict, file_data["file_ext"], None) S3Helper.upload_to_s3_check_response( asset_file, metadata, file_data["file_ext"], file_data["content_type"], upload_token, ) TestHelper.assert_with_timeout( workstation_api_client.get_asset_status, upload_token["filename"], TestHelper.expect_completely_encoded_asset, additional_assert_args=upload_token["filename"], ) return int(product_dict["product_id"]) def test_validate_artwork_endpoint( workstation_api_client: APIClient, workstation_product_digital_api_client: ProductDigitalAPIClient, product_data: dict[str, Any], ) -> None: """Test GET against validate endpoint.""" product_id = standard_v2_upload( workstation_api_client, workstation_product_digital_api_client, product_data, ASSET_TYPE_IMAGE, ) response = workstation_api_client.validate_artwork(product_id) assert response.status_code == 200, "Result of GET was {}, expected 200.".format( response.status_code ) def test_validate_no_artwork_present( workstation_api_client: APIClient, workstation_product_digital_api_client: ProductDigitalAPIClient, product_data: dict[str, Any], ) -> None: """Test GET against validate endpoint when no artwork is present.""" product_dict = TestHelper.create_product( workstation_product_digital_api_client, product_data ) response = workstation_api_client.validate_artwork(product_dict["product_id"]) assert response.status_code == 404, "Result of GET was {}, expected 404.".format( response.status_code )