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

related_field not recognised in URL path  #286

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions