gotosocial/test/swagger.sh
Vyr Cossont fc3741365c
[bugfix] Fix Swagger spec and add test script (#2698)
* Add Swagger spec test script

* Fix Swagger spec errors not related to statuses with polls

* Add API tests that post a status with a poll

* Fix creating a status with a poll from form params

* Fix Swagger spec errors related to statuses with polls (this is the last error)

* Fix Swagger spec warnings not related to unused definitions

* Suppress a duplicate list update params definition that was somehow causing wrong param names

* Add Swagger test to CI

- updates Drone config
- vendorizes go-swagger
- fixes a file extension issue that caused the test script to generate JSON instead of YAML with the vendorized version

* Put `Sample: ` on its own line everywhere

* Remove unused id param from emojiCategoriesGet

* Add 5 more pairs of profile fields to account update API Swagger

* Remove Swagger prefix from dummy fields

It makes the generated code look weird

* Manually annotate params for statusCreate operation

* Fix all remaining Swagger spec warnings

- Change some models into operation parameters
- Ignore models that already correspond to manually documented operation parameters but can't be trivially changed (those with file fields)

* Documented that creating a status with scheduled_at isn't implemented yet

* sign drone.yml

* Fix filter API Swagger errors

* fixup! Fix filter API Swagger errors

---------

Co-authored-by: tobi <tobi.smethurst@protonmail.com>
2024-03-06 18:05:45 +01:00

30 lines
1,007 B
Bash
Executable file

#!/bin/sh
# Test that the Swagger spec is up to date and valid.
set -eu
swagger_cmd() {
go run github.com/go-swagger/go-swagger/cmd/swagger "$@"
}
swagger_spec='docs/api/swagger.yaml'
# Temporary directory for the regenerated Swagger spec.
temp_dir=$(mktemp -d)
# Can't use mktemp directly because we need to control the file extension.
regenerated_swagger_spec="${temp_dir}/swagger.yaml"
cleanup() {
rm -rf "${temp_dir}"
}
trap cleanup INT TERM EXIT
# Regenerate the Swagger spec and compare it to the working copy.
swagger_cmd generate spec --scan-models --exclude-deps --output "${regenerated_swagger_spec}"
if ! diff -u "${swagger_spec}" "${regenerated_swagger_spec}" > /dev/null; then
echo "${swagger_spec} is out of date. Please run the following command to update it:" >&2
echo " go run github.com/go-swagger/go-swagger/cmd/swagger generate spec --scan-models --exclude-deps --output ${swagger_spec}" >&2
exit 1
fi
# Validate the Swagger spec.
swagger_cmd validate "${swagger_spec}"