def METHOD_NAME(
    self,
    svc,
    jwt_service,
    application_instance,
    uuid,
    http_service,
    misc_plugin,
    jwt_oauth2_token_service,
    scopes,
):
    jwt_oauth2_token_service.get_token.return_value = None
    response = svc.request("POST", "https://example.com", scopes)
    misc_plugin.get_ltia_aud_claim.assert_called_once_with(
        application_instance.lti_registration
    )
    jwt_service.encode_with_private_key.assert_called_once_with(
        {
            "aud": misc_plugin.get_ltia_aud_claim.return_value,
            "exp": datetime(2022, 4, 4, 1, 0),
            "iat": datetime(2022, 4, 4, 0, 0),
            "iss": application_instance.lti_registration.client_id,
            "sub": application_instance.lti_registration.client_id,
            "jti": uuid.uuid4.return_value.hex,
        }
    )
    http_service.post.assert_called_once_with(
        application_instance.lti_registration.token_url,
        data={
            "grant_type": "client_credentials",
            "client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
            "client_assertion": jwt_service.encode_with_private_key.return_value,
            "scope": " ".join(scopes),
        },
        timeout=(20, 20),
    )
    http_service.request.assert_called_once_with(
        "POST",
        "https://example.com",
        headers={
            "Authorization": f"Bearer {jwt_oauth2_token_service.save_token.return_value.access_token}"
        },
    )
    assert response == http_service.request.return_value
    jwt_oauth2_token_service.save_token.assert_called_once_with(
        application_instance.lti_registration,
        scopes,
        http_service.post.return_value.json.return_value["access_token"],
        http_service.post.return_value.json.return_value["expires_in"],
    )