UNPKG

@zkp2p/reclaim-witness-sdk

Version:

<div> <div> <img src="https://raw.githubusercontent.com/reclaimprotocol/.github/main/assets/banners/Attestor-Core.png" /> </div> </div>

120 lines 11.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RES_CHUNKED_PARTIAL_BODY = void 0; const tls_1 = require("@reclaimprotocol/tls"); const generics_1 = require("../utils/generics"); const http_parser_1 = require("../utils/http-parser"); describe.each(['complete', 'byte-by-byte'])('HTTP Parser tests (mode=%s)', (parseMode) => { it('should parse a response', () => { const res = parseHttpResponse(RES1, parseMode); expect(RES1 .subarray(0, res.statusLineEndIndex) .toString()).toEqual('HTTP/1.1 401 Unauthorized'); expect(res.complete).toEqual(true); expect(res.statusCode).toEqual(401); expect(res.body.length).toBeGreaterThan(0); const json = JSON.parse((0, generics_1.uint8ArrayToStr)(res.body)); expect(json.error.code).toEqual(401); }); it('should parse an empty body response', () => { const res = parseHttpResponse((0, tls_1.strToUint8Array)(RES_EMPTY), parseMode); expect(res.complete).toEqual(true); expect(res.statusCode).toEqual(200); expect(res.body.length).toEqual(0); }); it('should parse an empty chunked response', () => { const res = parseHttpResponse((0, tls_1.strToUint8Array)(RES_EMPTY_CHUNKED), parseMode); expect(res.complete).toEqual(true); expect(res.statusCode).toEqual(200); expect(res.body.length).toEqual(0); }); it('should read a set content-length', () => { const buff = (0, tls_1.strToUint8Array)(RES_BODY); const res = parseHttpResponse(buff, parseMode); expect(res.complete).toEqual(true); expect(res.bodyStartIndex).toBeTruthy(); expect(buff.slice(res.bodyStartIndex)).toEqual(res.body); const json = JSON.parse((0, generics_1.uint8ArrayToStr)(res.body)); expect(json.name).toBeTruthy(); }); it('should correctly set chunk indices', () => { var _a; const buff = (0, tls_1.strToUint8Array)(exports.RES_CHUNKED_PARTIAL_BODY); const res = parseHttpResponse(buff, parseMode); expect(res.complete).toEqual(true); // ensure all chunks are parsed correctly const parsedChunks = (_a = res.chunks) === null || _a === void 0 ? void 0 : _a.map((chunk) => { return (0, generics_1.uint8ArrayToStr)(buff.slice(chunk.fromIndex, chunk.toIndex)); }); expect(parsedChunks).toEqual(CHUNKS); const json = JSON.parse((0, generics_1.uint8ArrayToStr)(res.body)); expect(json.name).toBeTruthy(); }); }); describe('General HTTP Parser Tests', () => { it('should correctly parse an empty body response', () => { const str = 'HTTP/1.1 302 \r\nset-cookie: JSESSIONID=X; Path=/; Secure; HttpOnly\r\nx-content-type-options: nosniff\r\nx-xss-protection: 1; mode=block\r\nstrict-transport-security: max-age=31536000 ; includeSubDomains\r\nlocation: https://xyz.com/abcd\r\ncontent-length: 0\r\ndate: Sun, 16 Jun 2024 07:12:03 GMT\r\nconnection: close\r\nSet-Cookie: XYZ; path=/; Httponly; Secure\r\nSet-Cookie: ROUTEID=.node-U01; Path=/; Httponly; Secure\r\n\r\n'; const buff = (0, tls_1.strToUint8Array)(str); const parser = (0, http_parser_1.makeHttpResponseParser)(); parser.onChunk(buff); expect(parser.res.complete).toEqual(true); }); }); function parseHttpResponse(buff, mode) { const parser = (0, http_parser_1.makeHttpResponseParser)(); if (mode === 'complete') { parser.onChunk(buff); } else { for (const byte of buff) { parser.onChunk(new Uint8Array([byte])); } } parser.streamEnded(); return parser.res; } const RES1 = Buffer.from('SFRUUC8xLjEgNDAxIFVuYXV0aG9yaXplZA0KV1dXLUF1dGhlbnRpY2F0ZTogQmVhcmVyIHJlYWxtPSJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vIiwgZXJyb3I9ImludmFsaWRfdG9rZW4iDQpWYXJ5OiBYLU9yaWdpbg0KVmFyeTogUmVmZXJlcg0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PVVURi04DQpEYXRlOiBUdWUsIDEzIERlYyAyMDIyIDAzOjU1OjM1IEdNVA0KU2VydmVyOiBFU0YNCkNhY2hlLUNvbnRyb2w6IHByaXZhdGUNClgtWFNTLVByb3RlY3Rpb246IDANClgtRnJhbWUtT3B0aW9uczogU0FNRU9SSUdJTg0KWC1Db250ZW50LVR5cGUtT3B0aW9uczogbm9zbmlmZg0KQWNjZXB0LVJhbmdlczogbm9uZQ0KVmFyeTogT3JpZ2luLEFjY2VwdC1FbmNvZGluZw0KVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWQNCkFsdC1TdmM6IGgzPSI6NDQzIjsgbWE9MjU5MjAwMCxoMy0yOT0iOjQ0MyI7IG1hPTI1OTIwMDAsaDMtUTA1MD0iOjQ0MyI7IG1hPTI1OTIwMDAsaDMtUTA0Nj0iOjQ0MyI7IG1hPTI1OTIwMDAsaDMtUTA0Mz0iOjQ0MyI7IG1hPTI1OTIwMDAscXVpYz0iOjQ0MyI7IG1hPTI1OTIwMDA7IHY9IjQ2LDQzIg0KQ29ubmVjdGlvbjogY2xvc2UNCg0KMTI5DQp7CiAgImVycm9yIjogewogICAgImNvZGUiOiA0MDEsCiAgICAibWVzc2FnZSI6ICJSZXF1ZXN0IGhhZCBpbnZhbGlkIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLiBFeHBlY3RlZCBPQXV0aCAyIGFjY2VzcyB0b2tlbiwgbG9naW4gY29va2llIG9yIG90aGVyIHZhbGlkIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWwuIFNlZSBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9pZGVudGl0eS9zaWduLWluL3dlYi9kZXZjb25zb2xlLXByb2plY3QuIiwKICAgICJzdGF0dXMiOiAiVU5BVVRIRU5USUNBVEVEIgogIH0KfQoNCg==', 'base64'); const RES_EMPTY = [ 'HTTP/1.1 200 OK', 'Content-Type: application/json', 'Content-Length: 0', '', //empty line '', ].join('\r\n'); const BODY_JSON = '{"name":"John","age":30,"car":null}'; const RES_BODY = [ 'HTTP/1.1 200 OK', 'Content-Type: application/json', 'Content-Length: ' + BODY_JSON.length, '', BODY_JSON ].join('\r\n'); const RES_EMPTY_CHUNKED = [ 'HTTP/1.1 200 OK', 'Content-Type: application/json', 'Transfer-Encoding: chunked', '', '0', '', ].join('\r\n'); const CHUNKS = [ '{"name":"John",', '"age":30,', '"car":null,', '"house":"some', 'where"}' ]; exports.RES_CHUNKED_PARTIAL_BODY = [ 'HTTP/1.1 200 OK', 'Content-Type: application/json', 'Transfer-Encoding: chunked', '', ...CHUNKS.flatMap((chunk) => { const chunkSize = chunk.length.toString(16); return [chunkSize, chunk]; }), '0', '', '' ].join('\r\n'); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5odHRwLXBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0cy90ZXN0Lmh0dHAtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUFzRDtBQUN0RCxpREFBb0Q7QUFDcEQsdURBQThEO0FBRTlELFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFVLENBQUMsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFO0lBRWpHLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUU7UUFDbEMsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQzlDLE1BQU0sQ0FDTCxJQUFJO2FBQ0YsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUM7YUFDbkMsUUFBUSxFQUFFLENBQ1osQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtRQUV0QyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFBLDBCQUFlLEVBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDbEQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3JDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLHFDQUFxQyxFQUFF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