"""Functional tests of the get_product_by_product_id endpoint. GET /product/ """ import json from tests.testutils import db @db.test_schema def test_get_product_by_product_id( test_product, test_valid_product, client, valid_headers): """Test get_product_by_product_id is successful with valid headers.""" db.insert_vw_product() server_response = client.get('/product/1', headers=valid_headers) assert server_response.status_code == 200 assert json.loads(server_response.data.decode()) == test_valid_product @db.test_schema def test_get_product_by_product_id_without_headers( test_valid_product, client): """Test get_product_by_product_id is successful without headers.""" db.insert_vw_product() server_response = client.get('/product/1') assert server_response.status_code == 200 assert json.loads(server_response.data.decode()) == test_valid_product @db.test_schema def test_get_product_by_product_id_forbidden( test_product, client, not_valid_headers): """Test get_product_by_product_id fails when ownership is forbidden.""" db.insert_vw_product() server_response = client.get('/product/1', headers=not_valid_headers) assert server_response.status_code == 403 @db.test_schema def test_get_product_by_upc_not_found(test_product, client, valid_headers): """Test get_product_by_product_id fails when product is not found.""" db.insert_vw_product() server_response = client.get('/product/9999', headers=valid_headers) assert server_response.status_code == 404 @db.test_schema def test_get_product_by_product_id_diff_status(test_product, client): """Test get_product_by_product_id is successful for orchard_processing.""" db.insert_vw_product() expected = { 'context_type': 'digital', 'deletions': 'Y', 'distribution_format_id': 1, 'product_id': 2706033, 'product_name': 'Release 1', 'product_type_id': 1, 'project_id': 4455, 'release_date': '2010-08-03', 'status': 'orchard_processing', 'subaccount_id': 0, 'upc': 194491403904, 'display_upc': '194491403904', 'vendor_id': 7123, 'not_for_distribution': 'N'} server_response = client.get('/product/2706033') assert server_response.status_code == 200 assert json.loads(server_response.data.decode()) == expected