Knowing this:
class VPCResponse(BaseModel):
    id: str
    tenant_id: Optional[str]
    name: Optional[str]
    description: Optional[str]
    router_id: Optional[str]
    external_network: Optional[str]
    network_id: str
    subnets: Optional[list[str]] = []
    security_groups: Optional[list[str]] = []
    is_default: Optional[bool]

    class Config:
        allow_population_by_field_name = True

Implement tests for this function: 

class VPCsClient:

    async def get_vpc_detailed(
        self, tenant_id: str, vpc_id: str
    ) -> VPCResponse:
        
        try:
            response = await request(
                method="GET",
                url=f"{self.base_url}/v0/vpcs/{vpc_id}",
                headers={"X-Tenant-ID": tenant_id},
            )
            json_response = await response.json()
        except Exception as exc:
            raise InternalError(message=str(exc)) from exc


        if response.status == status.HTTP_404_NOT_FOUND:
            raise NotFound(await response.text())
        elif response.status != status.HTTP_200_OK:
            raise InternalError(await response.text())

        return VPCResponse.parse_raw(json_response)

Following this standard:
@pytest.mark.asyncio
async def test_create_vpc_success(client, mock_request):
    expected_response = "1234"
    response_text = '{"id": "1234"}'
    response = MockedHTTPResponse(status=201, text=response_text)
    mock_request.return_value = response

    actual_response = await client.create_vpc(
        tenant_id="abcd",
        desired_name="vpc1",
        description="description",
        subnetpool_id="5678"
    )

    mock_request.assert_called_once_with(
        method="POST",
        url="https://example.com/v0/xaas/vpcs",
        headers={"X-Tenant-ID": "abcd"},
        body={
            "name": "vpc1",
            "description": "description",
            "subnetpool_id": "5678"
        }
    )

    assert actual_response == expected_response