Skip to content
This repository was archived by the owner on Nov 19, 2023. It is now read-only.

related_field not recognised in URL path  #286

@darduf

Description

@darduf

We are using RelationshipView from the DRF JSON:API package, and are experiencing limitations when using the schema tester on these type of endpoints.

We have the following path/view that handles the application of team members (POST/DELETE)

    re_path(
        r"^team/(?P<pk>\d+)/relationships/(?P<related_field>[-\w]+)/?$",
        views.TeamMembersRelationshipView.as_view(),
        name="team-members-relation",
    ),

When SchemaTester(schema_file_path=path/to/schemae/file.yaml) hits this path

        response = self.client.delete(
            reverse(
                "teams:team-members-relation",
                kwargs={
                    "pk": self.team_001.pk,
                    "related_field": "members",
                },
            ),
            payload,
            content_type="application/vnd.api+json",
        )
        self.assertResponse(response)

We receive an UndocumentedSchemaSectionError

Traceback (most recent call last):
  File "../.venv/lib/python3.9/site-packages/openapi_tester/schema_tester.py", line 102, in get_key_value
    return schema[key]
KeyError: '/api/team/{id}/relationships/{related_field}'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "../.venv/lib/python3.9/site-packages/openapi_tester/schema_tester.py", line 403, in validate_response
    response_schema = self.get_response_schema_section(response)
  File "../.venv/lib/python3.9/site-packages/openapi_tester/schema_tester.py", line 144, in get_response_schema_section
    route_object = self.get_key_value(
  File "../.venv/lib/python3.9/site-packages/openapi_tester/schema_tester.py", line 104, in get_key_value
    raise UndocumentedSchemaSectionError(
openapi_tester.exceptions.UndocumentedSchemaSectionError: Error: Unsuccessfully tried to index the OpenAPI schema by `/api/team/{id}/relationships/{related_field}`. 

Undocumented route /api/team/{id}/relationships/{related_field}.

Documented routes:
        • ...
        • /api/teams
        • /api/team/{id}
        • /api/team/{id}/relationships/members

Why isn't the (undocumented) path resolving /api/team/{id}/relationships/{related_field} to the (documented) desired path /api/team/{id}/relationships/members as expected?
Is there something additional that needs to be defined in order for the schema tester to recognise these related_field path keys?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions