X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/a8bedb6ab9ae22ba88f2a85afc7a9021aae283ff..8f30a32466c36d5a989e7f754df315cbd9314126:/test/bdd/steps/steps_api_queries.py diff --git a/test/bdd/steps/steps_api_queries.py b/test/bdd/steps/steps_api_queries.py index 1c6fac69..93501e42 100644 --- a/test/bdd/steps/steps_api_queries.py +++ b/test/bdd/steps/steps_api_queries.py @@ -111,20 +111,10 @@ def send_api_query_php(endpoint, params, context): LOG.debug("Environment:" + json.dumps(env, sort_keys=True, indent=2)) if hasattr(context, 'http_headers'): - env.update(context.http_headers) - - cmd = ['/usr/bin/env', 'php-cgi', '-f'] - if context.nominatim.code_coverage_path: - env['XDEBUG_MODE'] = 'coverage' - env['COV_SCRIPT_FILENAME'] = env['SCRIPT_FILENAME'] - env['COV_PHP_DIR'] = context.nominatim.src_dir - env['COV_TEST_NAME'] = f"{context.scenario.filename}:{context.scenario.line}" - env['SCRIPT_FILENAME'] = \ - os.path.join(os.path.split(__file__)[0], 'cgi-with-coverage.php') - cmd.append(env['SCRIPT_FILENAME']) - env['PHP_CODE_COVERAGE_FILE'] = context.nominatim.next_code_coverage_file() - else: - cmd.append(env['SCRIPT_FILENAME']) + for k, v in context.http_headers.items(): + env['HTTP_' + k.upper().replace('-', '_')] = v + + cmd = ['/usr/bin/env', 'php-cgi', '-f', env['SCRIPT_FILENAME']] for k,v in params.items(): cmd.append(f"{k}={v}") @@ -148,8 +138,7 @@ def add_http_header(context): context.http_headers = {} for h in context.table.headings: - envvar = 'HTTP_' + h.upper().replace('-', '_') - context.http_headers[envvar] = context.table[0][h] + context.http_headers[h] = context.table[0][h] @when(u'sending (?P\S+ )?search query "(?P.*)"(?P with address)?') @@ -229,7 +218,8 @@ def validate_result_number(context, operator, number): @then(u'a HTTP (?P\d+) is returned') def check_http_return_status(context, status): assert context.response.errorcode == int(status), \ - f"Return HTTP status is {context.response.errorcode}." + f"Return HTTP status is {context.response.errorcode}."\ + f" Full response:\n{context.response.page}" @then(u'the page contents equals "(?P.+)"') def check_page_content_equals(context, text): @@ -242,7 +232,7 @@ def step_impl(context, fmt): try: tree = ET.fromstring(context.response.page) except Exception as ex: - assert False, f"Could not parse page:\n{context.response.page}" + assert False, f"Could not parse page: {ex}\n{context.response.page}" assert tree.tag == 'html' body = tree.find('./body') @@ -264,7 +254,10 @@ def check_page_error(context, fmt): @then(u'result header contains') def check_header_attr(context): + context.execute_steps("Then a HTTP 200 is returned") for line in context.table: + assert line['attr'] in context.response.header, \ + f"Field '{line['attr']}' missing in header. Full header:\n{context.response.header}" value = context.response.header[line['attr']] assert re.fullmatch(line['value'], value) is not None, \ f"Attribute '{line['attr']}': expected: '{line['value']}', got '{value}'"