"""Functional tests of the HEAD product ownership endpoints. HEAD /vendor//product/ HEAD /subaccount//product/ """ from product.constants import header from tests.testutils import db @db.test_schema def test_product_vendor_ownership(test_product, client): """Test product ownership check is successful for vendor.""" db.insert_vw_product() request_url = '/{}/{}/product/{}' server_response = client.head( request_url.format(header.GRASS_ACCOUNT_TYPE_VENDOR, 1, 1)) assert server_response.status_code == 200 @db.test_schema def test_product_subaccount_ownership(test_product, client): """Test product ownership check is successful for subaccount.""" db.insert_vw_product() request_url = '/{}/{}/product/{}' server_response = client.head( request_url.format(header.GRASS_ACCOUNT_TYPE_SUBACCOUNT, 1, 1)) assert server_response.status_code == 200 def test_product_ownership_bad_account_type(client): """Test ownership fails when invalid account type is provided.""" request_url = '/{}/{}/product/{}' server_response = client.head( request_url.format('monkeys', 1, 1)) assert server_response.status_code == 400 @db.test_schema def test_product_not_found(test_product, client): """Test product ownership returns a 404 for invalid product id.""" db.insert_vw_product() request_url = '/{}/{}/product/{}' server_response = client.head( request_url.format(header.GRASS_ACCOUNT_TYPE_VENDOR, 1, 9999)) assert server_response.status_code == 404 @db.test_schema def test_ownership_fails_for_invalid_vendor_id(test_product, client): """Test product ownership returns a 403 for wrong vendor id.""" db.insert_vw_product() request_url = '/{}/{}/product/{}' server_response = client.head( request_url.format(header.GRASS_ACCOUNT_TYPE_VENDOR, 9999, 1)) assert server_response.status_code == 403 @db.test_schema def test_ownership_fails_for_invalid_subaccount_id(test_product, client): """Test product ownership returns a 403 for wrong vendor id.""" db.insert_vw_product() request_url = '/{}/{}/product/{}' server_response = client.head( request_url.format(header.GRASS_ACCOUNT_TYPE_SUBACCOUNT, 9999, 1)) assert server_response.status_code == 403