def _validate_paging( response: requests.Response, expected_paging: Optional[PagingResp] = None, paging_urls: bool = True, ) -> None: if expected_paging is not None: received_paging = PagingResp.from_headers(response.headers) expected_values = dataclasses.asdict(expected_paging) received_values = dataclasses.asdict(received_paging) if not paging_urls: expected_values.pop("next") expected_values.pop("previous") received_values.pop("next") received_values.pop("previous") if expected_values != received_values: raise PagingMismatchError( f"Received values do not match expected values.\n" f"Received:\n" f"{received_values}\n" f"Expected:\n" f"{expected_values}")
def test_from_headers(self, paging_resp: PagingResp): headers = dict() paging_resp.to_headers(headers) from_headers = PagingResp.from_headers(headers) assert from_headers == paging_resp
def test_headers_round_trip_optionals(self, paging_resp: PagingResp): paging_resp.previous = None paging_resp.next = None paging_resp.total_items = None paging_resp.total_pages = None headers = dict() paging_resp.to_headers(headers) from_headers = PagingResp.from_headers(headers) assert "paging-previous" not in headers assert "paging-next" not in headers assert "paging-total-items" not in headers assert "paging-total-pages" not in headers assert from_headers == paging_resp