-
Notifications
You must be signed in to change notification settings - Fork 1
Charter 9: Explore Summary In Situ API with creative parameters and headers to discover surprises
mwalker-scottlogic edited this page Jun 25, 2024
·
4 revisions
- Explore Summary In Situ API with creative parameters and headers to discover surprises
- Mike Walker-Rose
- 45 - 90 mins
- Assessing response of the API to different headers and parameters
- Postman
- MongoDB
- Seed the QA database with expected data
- Using Postman and different test heuristics for inputs, try to generate unexpected results
- Observe if response error is clear and helpful
-
measurement_base_time
- empty - "type": "datetime_from_date_parsing", "loc": [ "query", "measurement_base_time" ], "msg": "Input should be a valid datetime or date, input is too short", "input": "", "ctx": { "error": "input is too short"
- date format
- / "msg": "Input should be a valid datetime or date, invalid date separator, expected
-
", 422 - . "msg": "Input should be a valid datetime or date, invalid date separator, expected
-
", 422 - 20-07-2024T14%3A00%3A00.000%2B00%3A00 (/,.) "msg": "Input should be a valid datetime or date, invalid character in year",422
- 2024/07/20T14%2A00%3A00.000%2B00%3A00 "msg": "Input should be a valid datetime or date, invalid date separator, expected
-
", 422
- / "msg": "Input should be a valid datetime or date, invalid date separator, expected
- number - returns empty array, 200
- negative number - returns empty array, 200
- whitespace - "msg": "Input should be a valid datetime or date, input is too short" / "Input should be a valid datetime or date, invalid character in year" 422
- long paragraph -"msg": "Input should be a valid datetime or date, invalid character in year", 422
- <>, "msg": "Input should be a valid datetime or date, input is too short", 422
- leading spaces - "msg": "Input should be a valid datetime or date, invalid character in year", 422
- trailing space - "msg": "Input should be a valid datetime or date, unexpected extra characters at the end of the input", 422
- middle space - "msg": "Input should be a valid datetime or date, unexpected extra characters at the end of the input", 422
-
measurement_time_range
- missing - "msg": "Field required", 422
- empty - "msg": "Input should be a valid integer, unable to parse string as an integer", 422
- strings - "msg": "Input should be a valid integer, unable to parse string as an integer", 422
- numbers - status 200.
- 1,000 - "msg": "Input should be a valid integer, unable to parse string as an integer", 422
- 1.0 status 200
- 1.5 "msg": "Input should be a valid integer, unable to parse string as an integer", 422
- mathematical operations 422
- / - "msg": "Input should be a valid integer, unable to parse string as an integer", 422
- whitespace - "msg": "Input should be a valid integer, unable to parse string as an integer", 422
- leading spaces - 200
- trailing space - 200
- long paragraph - "msg": "Input should be a valid integer, unable to parse string as an integer", 422
- <> - "msg": "Input should be a valid integer, unable to parse string as an integer", 422
-
location_type
- missing - "msg": "Field required", 422
- 1 - "msg": "Input should be 'city'", 422
- Capitalization - "msg": "Input should be 'city'", 422
- /*.$% - "msg": "Input should be 'city'", 422
- empty - "msg": "Input should be 'city'", 422
- negative number - "msg": "Input should be 'city'", 422
- whitespace - "msg": "Input should be 'city'", 422
- leading spaces - "msg": "Input should be 'city'", 422
- trailing spaces - "msg": "Input should be 'city'",, 422
- long paragraph - "msg": "Input should be 'city'", 422
- <>, "msg": "Input should be 'city'",
- if 'location_type` is a long paragraph, "msg": "Input should be 'city'". If always needs to be city, why have it as a param if it is always the same and required
-
measurement_time_range
:- can be negative
- decimal problem 1.0 is 200OK vs 1.5 is a 422
- whitespace permitted (e.g.' 1' works)
- you can send a body with the API call e.g {"foo": "bar"}
Getting Started and Overview
- Product Description
- Roles and Responsibilities
- User Roles and Goals
- Architectural Design
- Iterations
- Decision Records
- Summary Page Explanation
- Deployment Guide
- Working Practices
- Q&A
Investigations and Notebooks
- CAMs Schema
- Exploratory Notebooks
- Forecast ETL Process
- In Situ air pollution data sources
- Notebook: OpenAQ data overview
- Notebook: Unit conversion
- Data Archive Considerations
Manual Test Charters
- Charter 1 (Comparing ECMWF forecast to database values)
- Charter 2 (Backend performance)
- Charter 3 (Forecast range implementation)
- Charter 4 (In situ bad data)
- Charter 5 (Filtering ppm units)
- Charter 7 (Forecast API input validation)
- Charter 8 (Forecast API database sizes)
- Charter 9 (Measurements summary API input validation)
- Charter 10 (Seeding bad data)
- Charter 11 ()Measurements API input validation
- Charter 12 (Validating echart plot accuracy)
- Charter 13 (Explore UI after data outage)
- Charter 14 (City page address)
- Charter 15 (BugFix diff 0 calculation)
- Charter 16 (City page chart data mocking)
- Charter 17 (Summary table logic)
- Charter 18 (AQI chart colour banding)
- Charter 19 (City page screen sizes)
- Charter 20 (Date picker)
- Charter 21 (Graph consistency)
- Charter 22 (High measurement values)
- Charter 23 (ppm -> µg m³)
- Charter 24 (Textures API input validation)
- Charter 25 (Graph line colours)
- Charter 26 (Fill in gaps in forecast)
- Charter 27 (Graph behaviour with mock data)
- Charter 28 (Summary table accuracy)
- Re‐execute: Charter 28
- Charter 29 (Fill in gaps in situ)
- Charter 30 (Forecast window)
- Charter 31 (UI screen sizes)