view test/conftest.py @ 8177:2967f37e73e4

refactor: issue2551289. invalid REST Accept header stops request Sending a POST, PUT (maybe PATCH) with an accept header that is not application/json or xml (if enabled) used to complete the request before throwing a 406 error. This was wrong. Now it reports an error without dispatching/processing the requested transaction. This is the first of a series of refactors of the dispatch method to make it faster and more readable by using return early pattern and extracting methods from the code. changes: The following now return 406 errors not 400 errors invalid version specified with @apiver in URL. invalid version specified with @apiver in payload body invalid version specified in accept headers as application/vnd.roundup.test-vz+json or version property Parsing the accept header returns a 400 when presented with a parameter without an = sign or other parse error. They used to return a 406 which is wrong since the header is malformed rather than having a value I can't respond to. Some error messages were made clearer. Results in the case of an error are proper json error object rather than text/plain strings. New test added for testdetermine_output_formatBadAccept that test the new method using the same test cases as for testDispatchBadAccept. I intend to extend the test coverage for determine_output_format to cover more cases. This should be a faster unit test than for dispatch. Removed .lower() calls for accept_mime_type as the input values are taken from the values in the __accepted_content_type dict which only has lower case values.
author John Rouillard <rouilj@ieee.org>
date Sun, 08 Dec 2024 01:09:34 -0500
parents 3071db43bfb6
children 619b723dd2bb
line wrap: on
line source

# simple way to see if there are order dependencies in tests
# can use if pytest-random-order --random-order mode isn't
# usable (e.g. python2).

#def pytest_collection_modifyitems(items): 
#    items.reverse()

# Add a marker for pg_schema tests.
# They duplicate the postgresql tests exactly but uses a named
# schema rather than the default 'public' schema.
def pytest_configure(config):
    config.addinivalue_line(
        "markers", "pg_schema: tests using schema for postgres"
    )

Roundup Issue Tracker: http://roundup-tracker.org/