Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add test to ensure documentation for API #2786

Merged
merged 6 commits into from
Apr 1, 2022
Merged

Conversation

rickyrombo
Copy link
Contributor

Description

Adds a test to ensure once we have proper documentation for our API that we don't forget to keep it that way.

  • Checks for descriptions of each request endpoint
  • Checks for summary if description is too long
  • Checks for duplicate operation IDs (this is the important one - messes up typegen)
  • Checks that every parameter has a description

Groups the output by endpoint for easier reading/addressing. Currently passes because I've commented out the assert (since things are not yet in a good state).

Default API test output:

src/api/v1/api_unit_test.py::test_validate_v1_swagger 

Found 18 errors in Swagger schema

/challenges/attest_sender:
----------------------------------------------
GET Missing endpoint description annotation

/challenges/undisbursed:
----------------------------------------------
GET Missing endpoint description annotation

/challenges/{challenge_id}/attest:
----------------------------------------------
PARAMETERS Missing parameter description annotation for "challenge_id"
GET Missing endpoint description annotation
GET Missing parameter description annotation for "oracle"
GET Missing parameter description annotation for "specifier"
GET Missing parameter description annotation for "user_id"

/metrics/app_name/trailing/{time_range}:
----------------------------------------------
PARAMETERS Missing parameter description annotation for "time_range"
GET Missing endpoint description annotation

/playlists/search:
----------------------------------------------
GET Missing endpoint description annotation

/playlists/trending:
----------------------------------------------
GET Duplicate operation ID "Trending Playlists"
GET Missing endpoint description annotation

/playlists/trending/{version}:
----------------------------------------------
PARAMETERS Missing parameter description annotation for "version"
GET Duplicate operation ID "Trending Playlists"
GET Missing endpoint description annotation

/playlists/{playlist_id}:
----------------------------------------------
GET Missing endpoint description annotation

/playlists/{playlist_id}/tracks:
----------------------------------------------
GET Missing endpoint description annotation

/users/search:
----------------------------------------------
GET Missing endpoint description annotation

PASSED

Full API test output:

src/api/v1/api_unit_test.py::test_validate_v1_full_swagger 

Found 26 errors in Swagger schema

/playlists/trending:
----------------------------------------------
GET Duplicate operation ID "Returns trending playlists for a time period based on the given trending version"
GET Missing endpoint description annotation

/playlists/trending/{version}:
----------------------------------------------
PARAMETERS Missing parameter description annotation for "version"
GET Duplicate operation ID "Returns trending playlists for a time period based on the given trending version"
GET Missing endpoint description annotation

/playlists/{playlist_id}:
----------------------------------------------
PARAMETERS Missing parameter description annotation for "playlist_id"
GET Missing endpoint description annotation

/playlists/{playlist_id}/favorites:
----------------------------------------------
PARAMETERS Missing parameter description annotation for "playlist_id"
GET Missing endpoint description annotation

/playlists/{playlist_id}/reposts:
----------------------------------------------
PARAMETERS Missing parameter description annotation for "playlist_id"
GET Missing endpoint description annotation

/search/autocomplete:
----------------------------------------------
GET Missing endpoint description annotation

/search/full:
----------------------------------------------
GET Missing endpoint description annotation

/tracks/best_new_releases:
----------------------------------------------
GET Missing endpoint description annotation

/tracks/by_ids:
----------------------------------------------
GET Missing endpoint description annotation

/tracks/most_loved:
----------------------------------------------
GET Missing parameter description annotation for "limit"
GET Missing parameter description annotation for "user_id"
GET Missing parameter description annotation for "with_users"

/tracks/under_the_radar:
----------------------------------------------
GET Missing endpoint description annotation
GET Missing parameter description annotation for "filter"
GET Missing parameter description annotation for "limit"
GET Missing parameter description annotation for "offset"
GET Missing parameter description annotation for "tracks_only"
GET Missing parameter description annotation for "user_id"
GET Missing parameter description annotation for "with_users"

/users/{id}/history/tracks:
----------------------------------------------
GET Missing endpoint description annotation

PASSED

@rickyrombo rickyrombo requested a review from jowlee March 30, 2022 22:12
@rickyrombo rickyrombo marked this pull request as ready for review March 30, 2022 22:12
@rickyrombo rickyrombo changed the base branch from mjp-api-gen to master April 1, 2022 03:19
@pull-request-size pull-request-size bot added size/XL and removed size/L labels Apr 1, 2022
@rickyrombo rickyrombo merged commit 20e43b4 into master Apr 1, 2022
@rickyrombo rickyrombo deleted the mjp-api-gen-tests branch April 1, 2022 23:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants