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
Update handling of include parameter (and other query parameters) #209
Conversation
Codecov Report
@@ Coverage Diff @@
## master #209 +/- ##
==========================================
+ Coverage 86.74% 86.96% +0.22%
==========================================
Files 39 41 +2
Lines 1863 1887 +24
==========================================
+ Hits 1616 1641 +25
+ Misses 247 246 -1
Continue to review full report at Codecov.
|
7d157c4
to
09b3670
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Apart from the minor comment for clarification, this LGTM. Cheers @CasperWA.
09b3670
to
d986b54
Compare
This is according to the discussion in issue Materials-Consortia/OPTIMADE#259
Add new middleware to index meta-db server. Update single-entry endpoints handling of include parameter. Add tests for new middleware.
Unfortunately, this cannot also be done for _check_response(), since this differs quite significantly in what it tests from test class to test class.
Co-Authored-By: Matthew Evans <me388@cam.ac.uk>
d986b54
to
e5a8bc1
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @CasperWA!
Up to v0.6.0. **New features**: - GitHub Action validator that runs `optimade_validator` for a locally running OPTiMaDe server (#191, @CasperWA, tested by @ml-evs) - Support filter queries for `HAS ALL`, `HAS ANY` and `HAS ONLY` and value lists on MongoDB backends (#173, @ml-evs) Note: `OPERATOR` use in value lists are still _not_ supported. - Debug mode. Start the server in debug mode to enable `debug` log-level in `uvicorn` and get a full Python traceback in the JSON response (#190, @CasperWA) - Add testing of mandatory `filter` queries to `optimade_validator` (#205, @ml-evs) **Updates**: - Allow Cross-Origin requests from anywhere (`*`), i.e., enable CORS for both servers (#194, @CasperWA) - Updates to models (correct misspelling, more transparent model class naming, streamline models with respect to python class inheritance, update field descriptions) (#195, @CasperWA) - API change: Rename `optimade.models.toplevel.py` to `optimade.models.responses.py` (#195, @CasperWA) - Update dependencies to newest versions (as of 02.03.2020) (#202, #196, @CasperWA) - Move imports from `starlette` to `fastapi`, where possible (#202, @ml-evs) - Remove custom middleware to redirect slashed URLs in favor of `starlette` implementation (#202, @ml-evs) - CI tests are now performed with a real MongoDB in the backend. CI tests are also performed with a `mongomock` backend for the tests in `server/test_middleware.py`, `server/test_server_validation.py`, and `server/test_config.py` (#196, @ml-evs, additional testing by @CasperWA ) - Remove `/optimade` from base URLs. This was especially important for the OpenAPI schema (#201, #216, @CasperWA, @ml-evs) - Check integrity of query part of the raw URL using a custom middleware (#209, @CasperWA) - New `optimade/server/exceptions.py` to contain custom `HttpException`s, moved `BadRequest` here (#209, @CasperWA) - Pattern and regex testing for `data.available_api_versions` parts in `/info` endpoint and fix tests for the same (#211, @CasperWA) - Restructure import of test data for regular server (#212, @shyamd) **Bug fixes**: - New retrieval URL for Materials-Consortia's list of providers (#187, @CasperWA) - Skip local `HAS ONLY` tests with a `mongomock` backend, since v3.19.0 does not support these (#206, @ml-evs) - Resource ID's can now contain slashes (`/`) (#183, @ml-evs, @CasperWA) - Remove _valid_ version part of base URL in `meta.query.representation` (#201, @CasperWA)
Fixes #208
A middleware checks the integrity of the incoming raw query part of the URL.
If it is found that a parameter is given without an equal sign, it will raise
BadRequest
.BadRequest
has been moved fromoptimade.server.routers.utils
to a new fileoptimade.server.exceptions
.The handling of
include
has been updated to treat'""'
and"''"
as incorrect, and rather have the actual""
be equal to a user request for not returning any included resources.Tests have been updated to reflect the new handling, and a
test_wrong_html_form()
designed to raise aBadRequest
from the middleware has been added to each current class testing the query parameters.