discourse/spec/requests
Blake Erickson 7434116933
DEV: Add schema checking to api doc testing (#11721)
* DEV: Add schema checking to api doc testing

This commit improves upon rswag which lacks schema checking. rswag
really only checks that the https status matches, but this change adds
in the json-schema_builder gem which also has schema validation.

Now we can define schemas for each of our requests/responses in the
`spec/requests/api/schemas` directory which will make our documentation
specs a lot cleaner.

If we update a serializer by either adding or removing an attribute the
tests will now fail (this is a good thing!). Also if you change the type
of an attribute say from an array to a string the tests will now fail.
This will help significantly with keeping the docs in sync with actual
code changes! Now if you change how an endpoint will respond you will
have to update the docs too in order for the tests to pass. :D

This PR is inspired by:

 https://www.tealhq.com/post/how-teal-keeps-their-api-tests-and-documentation-in-sync

* Swap out json schema validator gem

Swapped out the outdated json-schema_builder gem with the json_schemer
gem.

* Add validation fields to schema

In order to have "strict" validation we need to add
`additionalProperties: false` to the schema, and we need to specify
which attributes are required.

Updated the debugging test output to print out the error details if
there are any.
2021-01-21 16:28:08 -07:00
..
admin UX: Text customization for different languages. (#11729) 2021-01-18 14:53:45 -03:00
api DEV: Add schema checking to api doc testing (#11721) 2021-01-21 16:28:08 -07:00
about_controller_spec.rb FIX: Correct user profile URLs in `/about` crawler view 2020-07-14 16:09:27 +01:00
application_controller_spec.rb FIX: Include locale in cache key for not_found_topics (#11406) 2020-12-07 12:24:18 +00:00
associate_accounts_controller_spec.rb DEV: Introduce `:before_auth` DiscourseEvent (#11233) 2020-11-13 14:41:54 +00:00
badges_controller_spec.rb FEATURE: add noindex header to badges, groups, and /my pages (#9736) 2020-05-11 15:05:42 +10:00
bookmarks_controller_spec.rb FIX: Do not test bookmark rate limiter message (#11749) 2021-01-19 10:27:18 +10:00
bootstrap_controller_spec.rb Add extra locales to bootstrap.json 2020-09-23 14:48:52 -04:00
categories_controller_spec.rb FIX: Validate category name on parent change (#10815) 2020-10-05 11:50:05 +02:00
clicks_controller_spec.rb DEV: Fix failling test. 2019-05-07 11:19:13 +03:00
composer_messages_controller_spec.rb DEV: Use `response.parsed_body` in specs (#9615) 2020-05-07 17:04:12 +02:00
csp_reports_controller_spec.rb DEV: Only include "report-sample" CSP directive when reporting is enabled (#9337) 2020-04-02 11:16:38 -04:00
directory_items_controller_spec.rb UX: Do not include current user in group-filtered directory results (#11310) 2020-11-23 10:22:14 +11:00
do_not_disturb_controller_spec.rb FEATURE: Send notification emails when users leave do not disturb mode (#11643) 2021-01-07 10:49:49 -06:00
draft_controller_spec.rb FIX: saving drafts unconditionally increases sequence 2020-05-12 16:55:42 +10:00
drafts_controller_spec.rb DEV: Use `response.parsed_body` in specs (#9615) 2020-05-07 17:04:12 +02:00
email_controller_spec.rb Update server.en.yml -- minor copyedit (#11631) 2021-01-05 08:02:02 +05:30
embed_controller_spec.rb DEV: Use `response.parsed_body` in specs (#9615) 2020-05-07 17:04:12 +02:00
exceptions_controller_spec.rb DEV: use #frozen_string_literal: true on all spec 2019-04-30 10:27:42 +10:00
export_csv_controller_spec.rb DEV: Switch to new ExportUserArchive job 2020-08-28 11:46:53 -07:00
extra_locales_controller_spec.rb FEATURE: Add English (UK) as locale (#11768) 2021-01-20 21:32:22 +01:00
finish_installation_controller_spec.rb DEV: use #frozen_string_literal: true on all spec 2019-04-30 10:27:42 +10:00
forums_controller_spec.rb Add tests for /srv/status behavior 2020-03-09 14:06:13 -07:00
groups_controller_spec.rb FIX: Posts with Staff Colors were excluded from the group activity 2020-12-11 11:52:03 -05:00
hashtags_controller_spec.rb DEV: Merge category and tag hashtags code paths (#10216) 2020-07-13 19:13:17 +03:00
inline_onebox_controller_spec.rb DEV: Use `response.parsed_body` in specs (#9615) 2020-05-07 17:04:12 +02:00
invites_controller_spec.rb UX: improve error message for already logged in users (#11020) 2020-10-24 21:21:01 +05:30
list_controller_spec.rb FIX: Build correct topic list filter (#11473) 2020-12-11 14:20:48 +02:00
metadata_controller_spec.rb PERF: cache all metadata for 60 seconds 2020-07-01 12:58:02 +10:00
notifications_controller_spec.rb FIX: Typo in `NotificationsController#index` not caught by tests. 2020-07-22 09:22:26 +08:00
offline_controller_spec.rb DEV: use #frozen_string_literal: true on all spec 2019-04-30 10:27:42 +10:00
omniauth_callbacks_controller_spec.rb FIX: Improve email validation error handling for external logins (#11307) 2020-11-23 11:06:08 +00:00
onebox_controller_spec.rb FEATURE: Onebox local categories (#11311) 2020-11-25 10:53:05 +11:00
permalinks_controller_spec.rb DEV: improve usability of subfolder specs 2019-11-15 16:48:24 +11:00
post_action_users_controller_spec.rb DEV: Cleanup ignored user logic (#11107) 2020-11-03 12:38:54 +00:00
post_actions_controller_spec.rb DEV: Use `response.parsed_body` in specs (#9615) 2020-05-07 17:04:12 +02:00
post_readers_controller_spec.rb DEV: Use `response.parsed_body` in specs (#9615) 2020-05-07 17:04:12 +02:00
posts_controller_spec.rb FEATURE: allow disabling self-deletions of posts (#11668) 2021-01-08 20:35:13 +05:30
published_pages_controller_spec.rb FIX: Do not enable published page if secure media enabled (#11131) 2020-11-06 10:33:19 +10:00
push_notification_controller_spec.rb DEV: Prefabrication (test optimization) (#7414) 2019-05-07 13:12:20 +10:00
reviewable_claimed_topics_controller_spec.rb FIX: Make reviewable claiming work with deleted topics (#9040) 2020-02-25 15:49:23 +02:00
reviewables_controller_spec.rb FIX: sync reviewable count when opening the hamburger menu (#10368) 2020-08-07 18:13:02 +02:00
robots_txt_controller_spec.rb FEATURE: explicitly ban outlier traffic sources in robots.txt (#11553) 2020-12-23 08:51:14 +11:00
safe_mode_controller_spec.rb FEATURE: Always disable customizations on the `/safe-mode` route (#9052) 2020-02-28 10:53:11 +00:00
search_controller_spec.rb FIX: Handle uncaught exception (#11263) 2020-11-20 11:28:14 +02:00
session_controller_spec.rb FIX: Logout redirect should only be `/login` for login_required sites (#11466) 2020-12-11 09:44:16 +00:00
similar_topics_controller_spec.rb DEV: Use `response.parsed_body` in specs (#9615) 2020-05-07 17:04:12 +02:00
site_controller_spec.rb DEV: Make site setting type uploaded_image_list use upload IDs (#10401) 2020-10-13 16:17:06 +03:00
static_controller_spec.rb Revert "DEV: enable cors to all cdn get requests from workbox. (#10684)" (#11076) 2020-10-30 16:05:35 +11:00
steps_controller_spec.rb DEV: use #frozen_string_literal: true on all spec 2019-04-30 10:27:42 +10:00
stylesheets_controller_spec.rb FEATURE: User selectable color schemes (#10544) 2020-08-28 10:36:52 -04:00
svg_sprite_controller_spec.rb DEV: Allow 3-digit HEX color code in single icon route 2020-05-14 16:37:45 -04:00
tag_groups_controller_spec.rb DEV: Use `response.parsed_body` in specs (#9615) 2020-05-07 17:04:12 +02:00
tags_controller_spec.rb FIX: hidden tags returned in extras of tags index json 2021-01-11 10:21:54 -05:00
theme_javascripts_controller_spec.rb DEV: Prefabrication (test optimization) (#7414) 2019-05-07 13:12:20 +10:00
topics_controller_spec.rb FIX: Make category change work with shared drafts (#11705) 2021-01-14 19:20:34 +02:00
uploads_controller_multisite_spec.rb DEV: Clean up S3 specs, stubs, and helpers 2020-09-28 12:02:25 +01:00
uploads_controller_spec.rb FIX: Respect force download when downloading secure media via lightbox (#10769) 2020-09-29 12:12:03 +10:00
user_actions_controller_spec.rb FEATURE - SiteSetting to disable user option to hide their profiles and presences (#10885) 2020-10-09 17:18:44 -04:00
user_api_keys_controller_spec.rb DEV: Move UserApiKey scopes to dedicated table (#10704) 2020-09-29 10:57:48 +01:00
user_avatars_controller_spec.rb DEV: Clean up S3 specs, stubs, and helpers 2020-09-28 12:02:25 +01:00
user_badges_controller_spec.rb FEATURE - SiteSetting to disable user option to hide their profiles and presences (#10885) 2020-10-09 17:18:44 -04:00
users_controller_spec.rb FEATURE: Create notification schedule to automatically set do not disturb time (#11665) 2021-01-20 10:31:52 -06:00
users_email_controller_spec.rb FIX: Make sure login required skipped for confirm new email routes (#11748) 2021-01-20 10:52:25 +10:00
webhooks_controller_spec.rb Revert "Revert "Merge branch 'master' of https://github.com/discourse/discourse"" 2020-05-23 00:56:13 -04:00
wizard_controller_spec.rb DEV: Use `response.parsed_body` in specs (#9615) 2020-05-07 17:04:12 +02:00