From fcfb7cf75ee1a1ab309565d8b7c0a70a372fc626 Mon Sep 17 00:00:00 2001 From: robbond Date: Tue, 24 Mar 2026 18:07:04 +0000 Subject: [PATCH] refactor(relay): extract shared relay policy presets across endpoints --- memory-bank/change-log.md | 37 +++++++++++++++++++ pages/api/endpoint/getaccounts_api.js | 9 +---- pages/api/endpoint/getadvancedsearch_api.js | 9 +---- .../endpoint/getadvancedsearchpaged_api.js | 9 +---- .../api/endpoint/getawaitingsubmission_api.js | 9 +---- pages/api/endpoint/getbasicsearch_api.js | 9 +---- pages/api/endpoint/getbasicsearchpaged_api.js | 9 +---- .../api/endpoint/getemailaccountcheck_api.js | 9 +---- pages/api/endpoint/getlogin_api.js | 9 +---- pages/api/endpoint/getmycases_api.js | 9 +---- .../api/endpoint/getmyrepresentations_api.js | 9 +---- pages/api/endpoint/getpersonalaccount_api.js | 9 +---- pages/api/endpoint/getportallogin_api.js | 9 +---- pages/api/endpoint/getportalloginproxy_api.js | 9 +---- .../endpoint/getportalmoduledetails_api.js | 9 +---- .../getportalmoduledetailsproxy_api.js | 9 +---- .../api/endpoint/getpreferredlanguage_api.js | 9 +---- pages/api/endpoint/getrepresentations_api.js | 9 +---- pages/api/endpoint/getwatchedcases_api.js | 9 +---- pages/api/middleware/relayPolicyPresets.js | 31 ++++++++++++++++ tests/phase21/_shared.cjs | 28 ++++++++++++++ 21 files changed, 132 insertions(+), 126 deletions(-) create mode 100644 pages/api/middleware/relayPolicyPresets.js diff --git a/memory-bank/change-log.md b/memory-bank/change-log.md index c75647eb..51bf914b 100644 --- a/memory-bank/change-log.md +++ b/memory-bank/change-log.md @@ -1407,3 +1407,40 @@ Validation: Follow-ups: - Optional next slice: extract shared relay policy presets into a constants module and reference them from all relayGet endpoints to reduce duplication. + +--- + +### CL-038: TASK22242 P2-S3 closure slice — shared relay policy presets extraction + +date: 2026-03-24 +author: Cline +scope: `pages/api/middleware/relayPolicyPresets.js`, `pages/api/endpoint/{getaccounts_api,getemailaccountcheck_api,getpreferredlanguage_api,getpersonalaccount_api,getlogin_api,getportallogin_api,getportalloginproxy_api,getbasicsearch_api,getbasicsearchpaged_api,getadvancedsearch_api,getadvancedsearchpaged_api,getportalmoduledetails_api,getportalmoduledetailsproxy_api,getmycases_api,getmyrepresentations_api,getawaitingsubmission_api,getrepresentations_api,getwatchedcases_api}.js`, `tests/phase21/_shared.cjs` +type: change +rationale: Complete the planned P2-S3 final maintainability slice by centralizing repeated relay timeout/retry policy objects into shared presets used consistently across all targeted relayGet endpoints. +impact: Eliminates duplicated policy literals, reduces drift risk, and preserves endpoint contracts/behavior by reusing equivalent policy values. +status: completed + +Summary: + +- Added new middleware constants module: + - `pages/api/middleware/relayPolicyPresets.js` + - `RELAY_POLICY_STRICT_LOGIN` + - `RELAY_POLICY_LOOKUP` + - `RELAY_POLICY_BOUNDED_READ` + - `RELAY_POLICY_SEARCH_PAGED` +- Refactored 18 relayGet endpoints to import and use shared presets instead of inline `relayPolicy` object literals: + - lookup profile: `getaccounts`, `getemailaccountcheck`, `getpreferredlanguage`, `getpersonalaccount`, `getportalloginproxy` + - strict login profile: `getlogin`, `getportallogin` + - bounded read profile: `getbasicsearch`, `getportalmoduledetails`, `getportalmoduledetailsproxy`, `getmycases`, `getmyrepresentations`, `getawaitingsubmission`, `getrepresentations`, `getwatchedcases` + - search paged profile: `getbasicsearchpaged`, `getadvancedsearch`, `getadvancedsearchpaged` +- Updated phase21 VM test harness (`tests/phase21/_shared.cjs`) to inject preset constants so endpoint contract tests continue to execute with import-stripped modules. + +Validation: + +- `node tests/phase21/endpoint-handler-contract.test.cjs` -> pass (164/164) +- `node tests/phase21/relay-forwarding-hardening.test.cjs` -> pass (10/10) +- `npm run lint` -> warnings only (pre-existing `react-hooks/exhaustive-deps`; no new lint errors) + +Follow-ups: + +- P2-S3 planned slices are now complete; no further mandatory relay policy rollout slices remain for this stream. diff --git a/pages/api/endpoint/getaccounts_api.js b/pages/api/endpoint/getaccounts_api.js index 525f0dcd..1abaeead 100644 --- a/pages/api/endpoint/getaccounts_api.js +++ b/pages/api/endpoint/getaccounts_api.js @@ -17,6 +17,7 @@ */ import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_LOOKUP } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const emailAddress = req.query.emailAddress; @@ -34,13 +35,7 @@ export default async function ApiProxy(req, res) { emailAddress + "'&$count=true&$select=emailaddress1, contactid"; - const relayPolicy = { - method: "GET", - timeoutMs: 6000, - maxRetries: 1, - retryBaseDelayMs: 100, - retryMaxDelayMs: 500 - }; + const relayPolicy = RELAY_POLICY_LOOKUP; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getadvancedsearch_api.js b/pages/api/endpoint/getadvancedsearch_api.js index fd0c505e..2299b28d 100644 --- a/pages/api/endpoint/getadvancedsearch_api.js +++ b/pages/api/endpoint/getadvancedsearch_api.js @@ -25,6 +25,7 @@ import { azureHeadersPaged } from "../../../actions/core/headers"; import { consoleLogger } from "../../../actions/core/logger"; import { respondError, respondSuccess } from "../middleware/apiResponse"; import { relayGet, relayGetData } from "../middleware/relayForwarding"; +import { RELAY_POLICY_SEARCH_PAGED } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const encodedSearchString = req.query.searchstring; @@ -103,13 +104,7 @@ export default async function ApiProxy(req, res) { queryString + " pinswg_appealcasetype ne null and pinswg_publishtoweb eq true&$orderby=createdon desc&$count=true"; - const relayPolicy = { - method: "GET", - timeoutMs: 9000, - maxRetries: 2, - retryBaseDelayMs: 150, - retryMaxDelayMs: 1000 - }; + const relayPolicy = RELAY_POLICY_SEARCH_PAGED; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getadvancedsearchpaged_api.js b/pages/api/endpoint/getadvancedsearchpaged_api.js index 116b6fb0..35df304a 100644 --- a/pages/api/endpoint/getadvancedsearchpaged_api.js +++ b/pages/api/endpoint/getadvancedsearchpaged_api.js @@ -51,6 +51,7 @@ import _ from "lodash"; import { azureHeadersPagedCustom } from "../../../actions/core/headers"; import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_SEARCH_PAGED } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const rawSearchString = req.query.searchstring; @@ -173,13 +174,7 @@ export default async function ApiProxy(req, res) { : ""); } - const relayPolicy = { - method: "GET", - timeoutMs: 9000, - maxRetries: 2, - retryBaseDelayMs: 150, - retryMaxDelayMs: 1000 - }; + const relayPolicy = RELAY_POLICY_SEARCH_PAGED; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getawaitingsubmission_api.js b/pages/api/endpoint/getawaitingsubmission_api.js index 543eca66..54ba4258 100644 --- a/pages/api/endpoint/getawaitingsubmission_api.js +++ b/pages/api/endpoint/getawaitingsubmission_api.js @@ -19,6 +19,7 @@ import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_BOUNDED_READ } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const loggedInUserId = req.query.loggedInUserId; @@ -39,13 +40,7 @@ export default async function ApiProxy(req, res) { loggedInUserId + " and servicestage eq 1 and pinswg_appealcasetype ne null&$orderby=createdon desc&$count=true"; - const relayPolicy = { - method: "GET", - timeoutMs: 8000, - maxRetries: 2, - retryBaseDelayMs: 150, - retryMaxDelayMs: 800 - }; + const relayPolicy = RELAY_POLICY_BOUNDED_READ; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getbasicsearch_api.js b/pages/api/endpoint/getbasicsearch_api.js index 54bd9720..d60a696f 100644 --- a/pages/api/endpoint/getbasicsearch_api.js +++ b/pages/api/endpoint/getbasicsearch_api.js @@ -18,6 +18,7 @@ import { azureHeadersPaged } from "../../../actions/core/headers"; import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_BOUNDED_READ } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const searchString = req.query.searchString; @@ -45,13 +46,7 @@ export default async function ApiProxy(req, res) { : "") + "and pinswg_publishtoweb eq true&$orderby=createdon desc&$count=true"; - const relayPolicy = { - method: "GET", - timeoutMs: 8000, - maxRetries: 2, - retryBaseDelayMs: 150, - retryMaxDelayMs: 800 - }; + const relayPolicy = RELAY_POLICY_BOUNDED_READ; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getbasicsearchpaged_api.js b/pages/api/endpoint/getbasicsearchpaged_api.js index ff79ec36..4652aa50 100644 --- a/pages/api/endpoint/getbasicsearchpaged_api.js +++ b/pages/api/endpoint/getbasicsearchpaged_api.js @@ -46,6 +46,7 @@ import _ from "lodash"; import { azureHeadersPagedCustom } from "../../../actions/core/headers"; import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_SEARCH_PAGED } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { let searchString = req.query.searchString; @@ -111,13 +112,7 @@ export default async function ApiProxy(req, res) { ? "&$skiptoken=" + '' : ""); - const relayPolicy = { - method: "GET", - timeoutMs: 9000, - maxRetries: 2, - retryBaseDelayMs: 150, - retryMaxDelayMs: 1000 - }; + const relayPolicy = RELAY_POLICY_SEARCH_PAGED; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getemailaccountcheck_api.js b/pages/api/endpoint/getemailaccountcheck_api.js index a1a75700..97a0b6ce 100644 --- a/pages/api/endpoint/getemailaccountcheck_api.js +++ b/pages/api/endpoint/getemailaccountcheck_api.js @@ -17,6 +17,7 @@ */ import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_LOOKUP } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const emailAddress = req.query.emailAddress; @@ -34,13 +35,7 @@ export default async function ApiProxy(req, res) { emailAddress + "'&$count=true&$select=emailaddress1, contactid"; - const relayPolicy = { - method: "GET", - timeoutMs: 6000, - maxRetries: 1, - retryBaseDelayMs: 100, - retryMaxDelayMs: 500 - }; + const relayPolicy = RELAY_POLICY_LOOKUP; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getlogin_api.js b/pages/api/endpoint/getlogin_api.js index 4a97954b..3e00ea8a 100644 --- a/pages/api/endpoint/getlogin_api.js +++ b/pages/api/endpoint/getlogin_api.js @@ -24,6 +24,7 @@ import { azureHeadersPaged } from "../../../actions/core/headers"; import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_STRICT_LOGIN } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const emailAddress = req.query.emailAddress; @@ -52,13 +53,7 @@ export default async function ApiProxy(req, res) { pwd + "'&$count=true&$select=emailaddress1,contactid,pinswg_custom_password,yomifullname,firstname,lastname"; - const relayPolicy = { - method: "GET", - timeoutMs: 5000, - maxRetries: 0, - retryBaseDelayMs: 0, - retryMaxDelayMs: 0 - }; + const relayPolicy = RELAY_POLICY_STRICT_LOGIN; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getmycases_api.js b/pages/api/endpoint/getmycases_api.js index bd712165..96e9d00a 100644 --- a/pages/api/endpoint/getmycases_api.js +++ b/pages/api/endpoint/getmycases_api.js @@ -19,6 +19,7 @@ import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_BOUNDED_READ } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const loggedInUserId = req.query.loggedInUserId; @@ -39,13 +40,7 @@ export default async function ApiProxy(req, res) { loggedInUserId + " and pinswg_appealcasetype ne null&$orderby=createdon desc&$count=true"; - const relayPolicy = { - method: "GET", - timeoutMs: 8000, - maxRetries: 2, - retryBaseDelayMs: 150, - retryMaxDelayMs: 800 - }; + const relayPolicy = RELAY_POLICY_BOUNDED_READ; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getmyrepresentations_api.js b/pages/api/endpoint/getmyrepresentations_api.js index 5bbb251d..b933b614 100644 --- a/pages/api/endpoint/getmyrepresentations_api.js +++ b/pages/api/endpoint/getmyrepresentations_api.js @@ -19,6 +19,7 @@ import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_BOUNDED_READ } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const loggedInUserId = req.query.loggedInUserId; @@ -39,13 +40,7 @@ export default async function ApiProxy(req, res) { loggedInUserId + "&$count=true&$orderby=createdon desc"; - const relayPolicy = { - method: "GET", - timeoutMs: 8000, - maxRetries: 2, - retryBaseDelayMs: 150, - retryMaxDelayMs: 800 - }; + const relayPolicy = RELAY_POLICY_BOUNDED_READ; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getpersonalaccount_api.js b/pages/api/endpoint/getpersonalaccount_api.js index e6573756..41a70be1 100644 --- a/pages/api/endpoint/getpersonalaccount_api.js +++ b/pages/api/endpoint/getpersonalaccount_api.js @@ -19,6 +19,7 @@ import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_LOOKUP } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const contactid = req.query.contactid; @@ -36,13 +37,7 @@ export default async function ApiProxy(req, res) { contactid + ")?$select=firstname, lastname, emailaddress1, telephone1, company, address1_line1,address1_line2,address1_city, address1_county,address1_postalcode,pinswg_typeofinvolvement,pinswg_contact_associatedlpa,pinswg_preferredlanguage&$count=true"; - const relayPolicy = { - method: "GET", - timeoutMs: 6000, - maxRetries: 1, - retryBaseDelayMs: 100, - retryMaxDelayMs: 500 - }; + const relayPolicy = RELAY_POLICY_LOOKUP; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getportallogin_api.js b/pages/api/endpoint/getportallogin_api.js index 8cc050be..3e7e3a97 100644 --- a/pages/api/endpoint/getportallogin_api.js +++ b/pages/api/endpoint/getportallogin_api.js @@ -20,6 +20,7 @@ import { azureHeadersPaged } from "../../../actions/core/headers"; import { hashAPIPath } from "../../../actions/core/hash"; import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_STRICT_LOGIN } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const emailAddress = req.query.emailAddress; @@ -65,13 +66,7 @@ export default async function ApiProxy(req, res) { emailAddress + "' and statuscode eq 1&$count=true&$select=emailaddress1,contactid,yomifullname,firstname,lastname"; - const relayPolicy = { - method: "GET", - timeoutMs: 5000, - maxRetries: 0, - retryBaseDelayMs: 0, - retryMaxDelayMs: 0 - }; + const relayPolicy = RELAY_POLICY_STRICT_LOGIN; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getportalloginproxy_api.js b/pages/api/endpoint/getportalloginproxy_api.js index 91dd430c..52f0b898 100644 --- a/pages/api/endpoint/getportalloginproxy_api.js +++ b/pages/api/endpoint/getportalloginproxy_api.js @@ -19,6 +19,7 @@ import { azureHeadersPaged } from "../../../actions/core/headers"; import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_LOOKUP } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const emailAddress = req.query.emailAddress; @@ -36,13 +37,7 @@ export default async function ApiProxy(req, res) { emailAddress + "'&$count=true&$select=emailaddress1,contactid,yomifullname,firstname,lastname"; - const relayPolicy = { - method: "GET", - timeoutMs: 6000, - maxRetries: 1, - retryBaseDelayMs: 100, - retryMaxDelayMs: 500 - }; + const relayPolicy = RELAY_POLICY_LOOKUP; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getportalmoduledetails_api.js b/pages/api/endpoint/getportalmoduledetails_api.js index 6c8e66bd..cc2d010f 100644 --- a/pages/api/endpoint/getportalmoduledetails_api.js +++ b/pages/api/endpoint/getportalmoduledetails_api.js @@ -26,6 +26,7 @@ import { getSelectQuery } from "../../../actions/selectQueryTypes"; import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_BOUNDED_READ } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const appealType = req.query.appealType; @@ -60,13 +61,7 @@ export default async function ApiProxy(req, res) { queryUrl = queryUrl + getSelectQuery(appealType); - const relayPolicy = { - method: "GET", - timeoutMs: 8000, - maxRetries: 2, - retryBaseDelayMs: 150, - retryMaxDelayMs: 800 - }; + const relayPolicy = RELAY_POLICY_BOUNDED_READ; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getportalmoduledetailsproxy_api.js b/pages/api/endpoint/getportalmoduledetailsproxy_api.js index 9ee22dae..5ba7d4c9 100644 --- a/pages/api/endpoint/getportalmoduledetailsproxy_api.js +++ b/pages/api/endpoint/getportalmoduledetailsproxy_api.js @@ -26,6 +26,7 @@ import { getSelectQuery } from "../../../actions/selectQueryTypes"; import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_BOUNDED_READ } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const appealType = req.query.appealType; @@ -60,13 +61,7 @@ export default async function ApiProxy(req, res) { queryUrl = queryUrl + getSelectQuery(appealType); - const relayPolicy = { - method: "GET", - timeoutMs: 8000, - maxRetries: 2, - retryBaseDelayMs: 150, - retryMaxDelayMs: 800 - }; + const relayPolicy = RELAY_POLICY_BOUNDED_READ; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getpreferredlanguage_api.js b/pages/api/endpoint/getpreferredlanguage_api.js index ea650fcf..cdad1642 100644 --- a/pages/api/endpoint/getpreferredlanguage_api.js +++ b/pages/api/endpoint/getpreferredlanguage_api.js @@ -22,6 +22,7 @@ import { } from "../../../actions/core/guards"; import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_LOOKUP } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const emailAddress = sanitizeString(req.query.emailAddress); @@ -39,13 +40,7 @@ export default async function ApiProxy(req, res) { escapeODataString(emailAddress) + "'&$count=true&$select=pinswg_preferredlanguage,contactid"; - const relayPolicy = { - method: "GET", - timeoutMs: 6000, - maxRetries: 1, - retryBaseDelayMs: 100, - retryMaxDelayMs: 500 - }; + const relayPolicy = RELAY_POLICY_LOOKUP; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getrepresentations_api.js b/pages/api/endpoint/getrepresentations_api.js index 55a32596..c3c1f4a0 100644 --- a/pages/api/endpoint/getrepresentations_api.js +++ b/pages/api/endpoint/getrepresentations_api.js @@ -19,6 +19,7 @@ import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_BOUNDED_READ } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const incidentID = req.query.incidentID; @@ -36,13 +37,7 @@ export default async function ApiProxy(req, res) { incidentID + " and pinswg_publishtoweb eq true&$count=true&$orderby=createdon desc"; - const relayPolicy = { - method: "GET", - timeoutMs: 8000, - maxRetries: 2, - retryBaseDelayMs: 150, - retryMaxDelayMs: 800 - }; + const relayPolicy = RELAY_POLICY_BOUNDED_READ; return relayGet({ queryUrl, diff --git a/pages/api/endpoint/getwatchedcases_api.js b/pages/api/endpoint/getwatchedcases_api.js index a168fe76..61039107 100644 --- a/pages/api/endpoint/getwatchedcases_api.js +++ b/pages/api/endpoint/getwatchedcases_api.js @@ -19,6 +19,7 @@ import { respondError } from "../middleware/apiResponse"; import { relayGet } from "../middleware/relayForwarding"; +import { RELAY_POLICY_BOUNDED_READ } from "../middleware/relayPolicyPresets"; export default async function ApiProxy(req, res) { const loggedInUserId = req.query.loggedInUserId; @@ -39,13 +40,7 @@ export default async function ApiProxy(req, res) { loggedInUserId + "&$select=pinswg_emailnotifications,modifiedon,pinswg_appealcasetype,pinswg_watchlistid,_pinswg_watchedcase_value,statuscode,pinswg_representationsubmitted,pinswg_representationtype&$count=true&$orderby=createdon desc&$expand=pinswg_WatchedCase($select=pinswg_AssociatedLPA)"; - const relayPolicy = { - method: "GET", - timeoutMs: 8000, - maxRetries: 2, - retryBaseDelayMs: 150, - retryMaxDelayMs: 800 - }; + const relayPolicy = RELAY_POLICY_BOUNDED_READ; return relayGet({ queryUrl, diff --git a/pages/api/middleware/relayPolicyPresets.js b/pages/api/middleware/relayPolicyPresets.js new file mode 100644 index 00000000..1a207082 --- /dev/null +++ b/pages/api/middleware/relayPolicyPresets.js @@ -0,0 +1,31 @@ +export const RELAY_POLICY_STRICT_LOGIN = { + method: "GET", + timeoutMs: 5000, + maxRetries: 0, + retryBaseDelayMs: 0, + retryMaxDelayMs: 0 +}; + +export const RELAY_POLICY_LOOKUP = { + method: "GET", + timeoutMs: 6000, + maxRetries: 1, + retryBaseDelayMs: 100, + retryMaxDelayMs: 500 +}; + +export const RELAY_POLICY_BOUNDED_READ = { + method: "GET", + timeoutMs: 8000, + maxRetries: 2, + retryBaseDelayMs: 150, + retryMaxDelayMs: 800 +}; + +export const RELAY_POLICY_SEARCH_PAGED = { + method: "GET", + timeoutMs: 9000, + maxRetries: 2, + retryBaseDelayMs: 150, + retryMaxDelayMs: 1000 +}; diff --git a/tests/phase21/_shared.cjs b/tests/phase21/_shared.cjs index 118144c0..811af4e8 100644 --- a/tests/phase21/_shared.cjs +++ b/tests/phase21/_shared.cjs @@ -55,6 +55,34 @@ const loadModule = (relativePath, injected = {}) => { error: () => {} }, relayGet: defaultRelayGet, + RELAY_POLICY_STRICT_LOGIN: { + method: "GET", + timeoutMs: 5000, + maxRetries: 0, + retryBaseDelayMs: 0, + retryMaxDelayMs: 0 + }, + RELAY_POLICY_LOOKUP: { + method: "GET", + timeoutMs: 6000, + maxRetries: 1, + retryBaseDelayMs: 100, + retryMaxDelayMs: 500 + }, + RELAY_POLICY_BOUNDED_READ: { + method: "GET", + timeoutMs: 8000, + maxRetries: 2, + retryBaseDelayMs: 150, + retryMaxDelayMs: 800 + }, + RELAY_POLICY_SEARCH_PAGED: { + method: "GET", + timeoutMs: 9000, + maxRetries: 2, + retryBaseDelayMs: 150, + retryMaxDelayMs: 1000 + }, ...injected };