"""Fixtures for functional tests.""" import pytest from ows_product_physical.constant import header from ows_product_physical.constant import marketing from ows_product_physical.constant import service_name @pytest.fixture def setup_ows_request( ows_request_mocker, valid_post_header, db_project_id, valid_grass_account_vendor_id): """Setup ows request responses.""" def _setup(features): ows_request_mocker.add({ 'method': 'get', 'service': service_name.OWS_FEATURES, 'path': '/features/user/{}'.format( valid_post_header[header.ORCHARD_USER_ID]), 'status': 200, 'json': {feature: 'enabled' if value else 'control' for (feature, value) in features.items()} }) ows_request_mocker.add({ 'method': 'get', 'service': service_name.OWS_PROJECT, 'path': '/project/{}'.format(db_project_id), 'status': 200, 'json': {'vendor_id': valid_grass_account_vendor_id} }) ows_request_mocker.add({ 'method': 'head', 'service': service_name.OWS_PROJECT, 'path': '/ownership/{}/{}/project/{}'.format( valid_post_header[header.GRASS_ACCOUNT_TYPE], valid_post_header[header.GRASS_ACCOUNT_ID], db_project_id ), 'status': 200 }) ows_request_mocker.apply() return _setup @pytest.fixture def setup_put_product( ows_request_mocker, db_release_id, setup_ows_request, db_releases): """Setup ows request responses.""" def _setup(features, release_id=db_release_id): setup_ows_request(features) ows_request_mocker.add( { 'method': 'get', 'service': service_name.OWS_MARKETING, 'path': '/highlights/release/{}?mkt_program_id={}'.format( release_id, marketing.PROGRAM_MARKETING_HIGHLIGHTS), 'status': 200, 'json': { 'items': [{'description': 'some description'}] } }) upc = None for release_data in db_releases: if release_data['release_id'] == release_id: upc = release_data['display_upc'] break ows_request_mocker.add({ 'method': 'put', 'service': service_name.OWS_PRODUCT, 'path': '/upc/{}/release'.format(upc), 'status': 200, 'json': {'upc_released': True} }) ows_request_mocker.apply() return _setup