X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/a8bedb6ab9ae22ba88f2a85afc7a9021aae283ff..28444d94350287d6c27675e740ec8fa64a5403ae:/test/bdd/steps/steps_api_queries.py?ds=sidebyside diff --git a/test/bdd/steps/steps_api_queries.py b/test/bdd/steps/steps_api_queries.py index 1c6fac69..aa1b43b8 100644 --- a/test/bdd/steps/steps_api_queries.py +++ b/test/bdd/steps/steps_api_queries.py @@ -111,7 +111,8 @@ 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) + for k, v in context.http_headers.items(): + env['HTTP_' + k.upper().replace('-', '_')] = v cmd = ['/usr/bin/env', 'php-cgi', '-f'] if context.nominatim.code_coverage_path: @@ -148,8 +149,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 +229,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 +243,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 +265,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}'"