"""Functional tests for updating the not_for_distribution flag of product.""" import json from tests.factories import release as release_factory from tests.testutils import db @db.test_schema def test_approve( client, valid_oa_headers_with_orchard_user_id, product_id): """Check that approve works.""" existing_release = release_factory.ReleaseFactory.build( release_id=product_id) existing_release.not_for_distribution = 'SMEAnalyticsDummy' db.seed_models(existing_release) response = client.put( '/product/{}/approve'.format(product_id), data=json.dumps({}), headers=valid_oa_headers_with_orchard_user_id ) assert response.status_code == 200 response_body = json.loads(response.data.decode()) assert response_body.get('release_status') == 'in_content' @db.test_schema def test_approve_rejected_for_distributed_product( client, valid_headers_for_vendor, product_id): """Check that approve is not allowed for not_for_distribution = 'N'.""" existing_release = release_factory.ReleaseFactory.build( release_id=product_id) existing_release.not_for_distribution = 'N' db.seed_models(existing_release) response = client.put( '/product/{}/approve'.format(product_id), data=json.dumps({}), headers=valid_headers_for_vendor ) assert response.status_code == 403 @db.test_schema def test_approve_not_oa( client, valid_headers_for_vendor, product_id): """Check that approve is not allowed for non-OA.""" existing_release = release_factory.ReleaseFactory.build( release_id=product_id) db.seed_models(existing_release) response = client.put( '/product/{}/approve'.format(product_id), data=json.dumps({}), headers=valid_headers_for_vendor ) assert response.status_code == 403