Tests: use `json.dumps` to create request bodies; more readable than escaped strings