@@ -11,7 +11,47 @@ const execApisOpenRpcData = require('../../../../../../../openrpc_exec_apis.json
11
11
const ajv = new Ajv ( { strict : false } ) ;
12
12
addFormats ( ajv ) ;
13
13
14
- export function checkResponseFormat (
14
+ /**
15
+ * Validates response format by comparing actual response against expected response structure.
16
+ *
17
+ * @param actualResponse - The actual response received from the API call
18
+ * @param expectedResponse - The expected response structure to validate against (can be object, string, or ErrorResponse)
19
+ * @param wildcards - Array of property paths to ignore during validation (default: empty array)
20
+ * @returns {boolean } Returns true if the response format has issues (validation failed), false if format is valid
21
+ *
22
+ * @description
23
+ * This function performs comprehensive response validation including:
24
+ * - Parsing expected response if provided as string
25
+ * - Checking error state consistency between actual and expected responses
26
+ * - Missing key detection in response structure
27
+ * - Deep value comparison with wildcard support
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const actualResponse = { result: "0x123", id: 1 };
32
+ * const expectedResponse = '{"result": "0x123", "id": 1}';
33
+ * const hasIssues = hasResponseFormatIssues(actualResponse, expectedResponse);
34
+ * console.log(hasIssues); // false - format is valid
35
+ * ```
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * const actualResponse = { result: "0x123" };
40
+ * const expectedResponse = { result: "0x123", id: 1 };
41
+ * const hasIssues = hasResponseFormatIssues(actualResponse, expectedResponse);
42
+ * console.log(hasIssues); // true - missing 'id' key
43
+ * ```
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const actualResponse = { result: "0x123", timestamp: "2023-01-01" };
48
+ * const expectedResponse = { result: "0x123", timestamp: "2023-01-02" };
49
+ * const wildcards = ["timestamp"];
50
+ * const hasIssues = hasResponseFormatIssues(actualResponse, expectedResponse, wildcards);
51
+ * console.log(hasIssues); // false - timestamp ignored due to wildcard
52
+ * ```
53
+ */
54
+ export function hasResponseFormatIssues (
15
55
actualResponse : Record < string , unknown > | ErrorResponse | JsonRpcResponse ,
16
56
expectedResponse : Record < string , unknown > | string | ErrorResponse ,
17
57
wildcards : string [ ] = [ ] ,
0 commit comments