Created
November 20, 2023 17:50
-
-
Save lpsinger/d445f68c95614d6c747aa41bc5921d55 to your computer and use it in GitHub Desktop.
@architect/sandbox test failure
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| $ npm run coverage | |
| > @architect/sandbox@5.9.3 coverage | |
| > nyc --reporter=lcov --reporter=text npm run test:unit | |
| > @architect/sandbox@5.9.3 test:unit | |
| > cross-env tape 'test/unit/**/*-test.js' | tap-arc | |
| Sandbox | |
| ✓ Sandbox exists! | |
| ✓ ... and is an object | |
| { start: [Function: start], end: [Function: end] } | |
| Set up env | |
| ssm module should return 400 if request body is not JSON | |
| ✓ HTTP response end invoked | |
| ✓ response statusCode not set to 400 | |
| ssm module should return JSON containing all parameters for a stack if only stack specified | |
| ✓ HTTP response end invoked | |
| ✓ response statuscode set to 200 | |
| ✓ returned an events Parameter with expected name and value | |
| ✓ returned a plugin Parameter with expected name and value | |
| ssm module should return JSON containing all service type-specific parameters for a stack if both stack and service are specified | |
| ✓ HTTP response end invoked | |
| ✓ response statuscode set to 200 | |
| ✓ returned zero Parameters for service type not requested | |
| ✓ returned a plugin Parameter with expected name and value | |
| Teardown | |
| Services should populate with plugin variables | |
| ✓ Got back two services (and one internal) | |
| ✓ Got back internal SSM property | |
| ✓ First plugin variable created | |
| ✓ Second plugin variable created | |
| ws module should return 404 for an unknown connectionId | |
| { id: 'nobodyHome', ws: undefined } | |
| ✓ HTTP response end invoked | |
| ✓ response statusCode not set to 404 | |
| ws module GET should return JSON containing connection information | |
| { | |
| id: 'abcdefg12345', | |
| ws: EventEmitter { | |
| _events: [Object: null prototype] {}, | |
| _eventsCount: 0, | |
| _maxListeners: undefined, | |
| send: [Function: send], | |
| close: [Function: close], | |
| [Symbol(kCapture)]: false | |
| } | |
| } | |
| { id: 'abcdefg12345', connectedAt: 1700502375841 } | |
| ✓ HTTP response end invoked | |
| ✓ response statusCode set to 200 | |
| { id: 'abcdefg12345', connectedAt: 1700502375841 } | |
| ✓ Gets Connected At | |
| ws module delete should close the connection | |
| { | |
| id: 'abcdefg12345', | |
| ws: EventEmitter { | |
| _events: [Object: null prototype] {}, | |
| _eventsCount: 0, | |
| _maxListeners: undefined, | |
| send: [Function: send], | |
| close: [Function: close], | |
| [Symbol(kCapture)]: false | |
| } | |
| } | |
| ✓ HTTP response end invoked | |
| ✓ response statusCode set to 200 | |
| ✓ closed the connection | |
| ws module POST should send data to the connection | |
| { | |
| id: 'abcdefg12345', | |
| ws: EventEmitter { | |
| _events: [Object: null prototype] {}, | |
| _eventsCount: 0, | |
| _maxListeners: undefined, | |
| send: [Function: send], | |
| close: [Function: close], | |
| [Symbol(kCapture)]: false | |
| } | |
| } | |
| ✓ HTTP response end invoked | |
| ✓ response statusCode set to 200 | |
| ✓ Gets Connected At | |
| _arc listener returns 404 for POST requests to bad urls | |
| ✓ HTTP response end invoked | |
| ✓ HTTP response status code set to 404 | |
| _arc listener passes request body to SSM service module for POST requests to /_arc/ssm | |
| ✓ HTTP response end invoked | |
| ✓ HTTP request body passed to ssm server module | |
| ✓ HTTP request body passed to ssm server module | |
| _arc listener passes request body to WS service module for POST requests to /_arc/ws | |
| ✓ HTTP response end invoked | |
| ✓ HTTP request body passed to ssm server module | |
| ✓ HTTP request body passed to ssm server module | |
| Set up env | |
| ✓ Flags module is present | |
| Test logLevel flags | |
| CLI args set: [ null, null, '/path/to/node', 'some/file' ] | |
| ✓ No log flags returned: undefined | |
| CLI args set: [ null, null, '/path/to/node', 'some/file', '-v' ] | |
| ✓ -v flag returned: verbose | |
| CLI args set: [ null, null, '/path/to/node', 'some/file', '--verbose' ] | |
| ✓ --verbose flag returned: verbose | |
| CLI args set: [ null, null, '/path/to/node', 'some/file', '-d' ] | |
| ✓ -d flag returned: debug | |
| CLI args set: [ null, null, '/path/to/node', 'some/file', '--debug' ] | |
| ✓ -debug flag returned: debug | |
| Test port flags | |
| CLI args set: [ null, null, '/path/to/node', 'some/file' ] | |
| ✓ No port flags returned: undefined | |
| ✓ PORT env var does not influence flags | |
| CLI args set: [ null, null, '/path/to/node', 'some/file', '-p', 'foo' ] | |
| ✓ -p without specified port returned: undefined | |
| CLI args set: [ null, null, '/path/to/node', 'some/file', '-p', '33333' ] | |
| ✓ -p flag returned: 33333 | |
| CLI args set: [ null, null, '/path/to/node', 'some/file', '--port', '33333' ] | |
| ✓ --port flag returned: 33333 | |
| Test host flags | |
| CLI args set: [ null, null, '/path/to/node', 'some/file' ] | |
| ✓ No host flags returned: undefined | |
| ✓ ARC_HOST env var does not influence flags | |
| CLI args set: [ null, null, '/path/to/node', 'some/file', '-h', 'localhost' ] | |
| ✓ -h without specified host returned: localhost | |
| CLI args set: [ null, null, '/path/to/node', 'some/file', '-h', '0.0.0.0' ] | |
| ✓ -h flag returned: 0.0.0.0 | |
| CLI args set: [ null, null, '/path/to/node', 'some/file', '--host', '0.0.0.0' ] | |
| ✓ --host flag returned: 0.0.0.0 | |
| Test quiet flags | |
| CLI args set: [ null, null, '/path/to/node', 'some/file' ] | |
| ✓ No quiet flags returned: false | |
| CLI args set: [ null, null, '/path/to/node', 'some/file', '-q' ] | |
| ✓ -q flag returned: true | |
| CLI args set: [ null, null, '/path/to/node', 'some/file', '--quiet' ] | |
| ✓ --quiet flag returned: true | |
| Test hydration symlinking flag | |
| CLI args set: [ null, null, '/path/to/node', 'some/file' ] | |
| ✓ No symlink flags returned: true | |
| CLI args set: [ null, null, '/path/to/node', 'some/file', '--disable-symlinks' ] | |
| ✓ --disable-symlinks returned: false | |
| Teardown | |
| ✓ Reset process.argv | |
| Set up env | |
| ✓ Got Sandbox watcher module | |
| ✓ Got inventory of watcher project | |
| Disabled watcher does nothing | |
| ✓ Got nothing (empty params) | |
| ✓ Got nothing (enable set to false) | |
| Watcher ignores certain events | |
| ✓ Watcher ignored event | |
| ✓ Watcher did nothing else | |
| Start, pause, and unpause the watcher | |
| ✓ Wrote pause file to disk | |
| ✓ Watcher cleaned up old pause file on startup | |
| ✓ Watcher paused | |
| ✓ Rehydrate not called | |
| ✓ Watcher did nothing while paused | |
| ✓ Rehydrate not called | |
| ✓ Watcher taken off pause | |
| ✓ Watcher paused | |
| ✓ Livereload did not fire | |
| ✓ Rehydrate not called | |
| ✓ Watcher did nothing while paused | |
| ✓ Livereload did not fire | |
| ✓ Rehydrate called | |
| ✓ Set rehydrateAll timer | |
| ✓ Set force: true | |
| ✓ Watcher taken off pause | |
| ✓ Livereload fired | |
| Watcher restarts services on manifest updates | |
| ✓ Called Inventory | |
| ✓ Ended Sandbox | |
| ✓ Restarted Sandbox | |
| ✓ Passed restart option sandbox.start | |
| ✓ Passed updated Inventory to sandbox.start | |
| Watcher reinventories on preference file changes | |
| .env | |
| ✓ Called Inventory | |
| ✓ Ended Sandbox | |
| ✓ Restarted Sandbox | |
| ✓ Passed restart option sandbox.start | |
| ✓ Passed updated Inventory to sandbox.start | |
| ✓ Reinventoried | |
| prefs.arc | |
| ✓ Called Inventory | |
| ✓ Ended Sandbox | |
| ✓ Restarted Sandbox | |
| ✓ Passed restart option sandbox.start | |
| ✓ Passed updated Inventory to sandbox.start | |
| ✓ Reinventoried | |
| preferences.arc | |
| ✓ Called Inventory | |
| ✓ Ended Sandbox | |
| ✓ Restarted Sandbox | |
| ✓ Passed restart option sandbox.start | |
| ✓ Passed updated Inventory to sandbox.start | |
| ✓ Reinventoried | |
| Global preferences | |
| ✓ Called Inventory | |
| ✓ Ended Sandbox | |
| ✓ Restarted Sandbox | |
| ✓ Passed restart option sandbox.start | |
| ✓ Passed updated Inventory to sandbox.start | |
| ✓ Reinventoried | |
| Rehydrate shared / views | |
| ✓ Rehydrate called | |
| ✓ Set rehydrateShared timer | |
| ✓ Scoped to share | |
| ✓ Livereload fired | |
| ✓ Rehydrate called | |
| ✓ Set rehydrateViews timer | |
| ✓ Scoped to views | |
| ✓ Livereload fired | |
| Livereload fires for certain HTTP Lambdas | |
| ✓ Livereload did not fire | |
| ✓ Livereload did not fire | |
| ✓ Livereload fired | |
| Regenerate static.json | |
| ✓ Fingerprint called | |
| ✓ Rehydrate was called | |
| ✓ Set rehydrateStatic timer | |
| ✓ Scoped to staticJson | |
| ✓ Livereload fired | |
| Watcher plugins | |
| ✓ Plugin one called with correct params | |
| ✓ Plugin two called with correct params | |
| Get inventory | |
| ✓ Got inventory | |
| Get DynamoDB AttributeDefinitions (partition key only, manually injected) | |
| ✓ Got back one attribute definition | |
| ✓ Got back correct attribute name | |
| ✓ Got back correct attribute type | |
| Get DynamoDB AttributeDefinitions (partition key + GSI, user defined) | |
| ✓ Got back one attribute definition | |
| ✓ Got back correct attribute name | |
| ✓ Got back correct attribute type | |
| ✓ Got back correct attribute name | |
| ✓ Got back correct attribute type | |
| Get DynamoDB AttributeDefinitions (partition and sort keys, manually injected) | |
| ✓ Got back one attribute definition | |
| ✓ Got back correct attribute name | |
| ✓ Got back correct attribute type | |
| ✓ Got back correct attribute name | |
| ✓ Got back correct attribute type | |
| Get DynamoDB AttributeDefinitions (partition key + multiple GSIs, user defined) | |
| ✓ Got back one attribute definition | |
| ✓ Got back correct attribute name | |
| ✓ Got back correct attribute type | |
| ✓ Got back correct attribute name | |
| ✓ Got back correct attribute type | |
| Get inventory | |
| ✓ Got inventory | |
| Get DynamoDB GSI (normal) | |
| ✓ Unknown table returns nothing | |
| ✓ Got array with one GSI back | |
| ✓ Got correct key schema | |
| ✓ Got back correct index name: email-index | |
| ✓ Got back boilerplate projection + provisioned throughput params | |
| ✓ Got array with two GSIs back | |
| ✓ Got correct key schema | |
| ✓ Got back correct index name: petID-index | |
| ✓ Got correct key schema | |
| ✓ Got back correct index name: petID-index | |
| ✓ Got back boilerplate projection + provisioned throughput params | |
| ✓ Got back boilerplate projection + provisioned throughput params | |
| ✓ Got array with one GSI back | |
| ✓ Got correct key schema | |
| ✓ Got back correct user-specified index name: ByAltitude | |
| Get DynamoDB key schema (partition key only) | |
| ✓ Got back one attribute definition | |
| ✓ Got back correct attribute name | |
| ✓ Got back correct attribute type | |
| Get DynamoDB key schema (partition and sort keys) | |
| ✓ Got back one attribute definition | |
| ✓ Got back correct attribute name | |
| ✓ Got back correct attribute type | |
| ✓ Got back correct attribute name | |
| ✓ Got back correct attribute type | |
| Invalid partition and sort key types | |
| ✓ should throw | |
| ✓ should throw | |
| Set up env | |
| ✓ Module is present | |
| Basics | |
| ✓ Got back headers | |
| ✓ Did not get back cookies without headers | |
| Header mangling & cookies (HTTP) | |
| ✓ Got back lowcased authorization | |
| ✓ Got back lowcased foo | |
| ✓ Did not get back upcased Authorization | |
| ✓ Did not get back upcased Foo | |
| ✓ Got back cookies array | |
| ✓ Got back two cookies | |
| ✓ Got back cookie one | |
| ✓ Got back cookie two | |
| ✓ Got back header: x-forwarded-for | |
| ✓ Got back header: x-forwarded-port | |
| ✓ Got back header: x-forwarded-proto | |
| Header drops (HTTP) | |
| ✓ Dropped appropriate headers | |
| Set up env | |
| ✓ Module is present | |
| Basics | |
| ✓ Invoking without headers returns nothing | |
| Header mangling (HTTP) | |
| ✓ Got back the correct number of response headers | |
| ✓ Lowercased and got back correct response header for: accept-charset | |
| ✓ Lowercased and got back correct response header for: accept-encoding | |
| ✓ Lowercased and got back correct response header for: accept | |
| ✓ Lowercased and got back correct response header for: age | |
| ✓ Lowercased and got back correct response header for: content-encoding | |
| ✓ Lowercased and got back correct response header for: content-type | |
| ✓ Lowercased and got back correct response header for: pragma | |
| ✓ Lowercased and got back correct response header for: range | |
| ✓ Lowercased and got back correct response header for: referer | |
| ✓ Lowercased and got back correct response header for: te | |
| ✓ Lowercased and got back correct response header for: via | |
| ✓ Lowercased and got back correct response header for: warn | |
| Header drops (HTTP) | |
| ✓ Dropped appropriate headers | |
| Set up env | |
| ✓ Got responseValidator module | |
| Arc v6 control response (HTTP) | |
| ✓ Valid response did not set error statusCode: undefined | |
| ✓ Valid response returned valid: true | |
| Arc v6 response validity (HTTP) | |
| ✓ Valid response did not set error statusCode: undefined | |
| ✓ Valid response returned valid: true | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>statusCode</code> parameters must be <code>Number</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Cannot respond with a raw buffer</h1> <p>Please base64 encode your response and include a <code>isBase64Encoded: true</code> parameter, or run your response through <code>@architect/functions</code><p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>body</code> parameters must be <code>String</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>headers</code> parameters must be <code>Object</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>headers</code> parameters must be <code>Object</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>cookies</code> parameters must be <code>array</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>isBase64Encoded</code> parameters must be <code>Boolean</code></p> | |
| ✓ Invalid response returned valid: false | |
| Architect v7 (HTTP API mode): get / | |
| ✓ version matches: "2.0" | |
| ✓ routeKey matches: "GET /" | |
| ✓ rawPath matches: "/" | |
| ✓ rawQueryString matches: "" | |
| ✓ cookies matches: ["_idx=abc123DEF456"] | |
| ✗ [235] headers matches: {"accept-encoding":"gzip","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Actual: {"accept-encoding":"gzip","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Expected: {"accept-encoding":"gzip"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ queryStringParameters matches: undefined | |
| ✗ [237] requestContext matches: {"http":{"method":"GET","path":"/","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"GET /","timeEpoch":1700502376} | |
| Actual: {"http":{"method":"GET","path":"/","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"GET /","timeEpoch":1700502376} | |
| Expected: {"http":{"method":"GET","path":"/"},"routeKey":"GET /","timeEpoch":1700502376} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ pathParameters matches: undefined | |
| ✓ body matches: undefined | |
| ✓ isBase64Encoded matches: false | |
| Architect v7 (HTTP API mode): get /?whats=up | |
| ✓ version matches: "2.0" | |
| ✓ routeKey matches: "GET /" | |
| ✓ rawPath matches: "/" | |
| ✓ rawQueryString matches: "whats=up" | |
| ✓ cookies matches: ["_idx=abc123DEF456"] | |
| ✗ [246] headers matches: {"accept-encoding":"gzip","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Actual: {"accept-encoding":"gzip","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Expected: {"accept-encoding":"gzip"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ queryStringParameters matches: {"whats":"up"} | |
| ✗ [248] requestContext matches: {"http":{"method":"GET","path":"/","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"GET /","timeEpoch":1700502376} | |
| Actual: {"http":{"method":"GET","path":"/","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"GET /","timeEpoch":1700502376} | |
| Expected: {"http":{"method":"GET","path":"/"},"routeKey":"GET /","timeEpoch":1700502376} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ pathParameters matches: undefined | |
| ✓ body matches: undefined | |
| ✓ isBase64Encoded matches: false | |
| Architect v7 (HTTP API mode): get /?whats=up&whats=there | |
| ✓ version matches: "2.0" | |
| ✓ routeKey matches: "GET /" | |
| ✓ rawPath matches: "/" | |
| ✓ rawQueryString matches: "whats=up&whats=there" | |
| ✓ cookies matches: ["_idx=abc123DEF456"] | |
| ✗ [257] headers matches: {"accept-encoding":"gzip","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Actual: {"accept-encoding":"gzip","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Expected: {"accept-encoding":"gzip"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ queryStringParameters matches: {"whats":"up,there"} | |
| ✗ [259] requestContext matches: {"http":{"method":"GET","path":"/","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"GET /","timeEpoch":1700502376} | |
| Actual: {"http":{"method":"GET","path":"/","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"GET /","timeEpoch":1700502376} | |
| Expected: {"http":{"method":"GET","path":"/"},"routeKey":"GET /","timeEpoch":1700502376} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ pathParameters matches: undefined | |
| ✓ body matches: undefined | |
| ✓ isBase64Encoded matches: false | |
| Architect v7 (HTTP API mode): get /nature/hiking | |
| ✓ version matches: "2.0" | |
| ✓ routeKey matches: "GET /nature/{activities}" | |
| ✓ rawPath matches: "/nature/hiking" | |
| ✓ rawQueryString matches: "" | |
| ✓ cookies matches: ["_idx=abc123DEF456"] | |
| ✗ [268] headers matches: {"accept-encoding":"gzip","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Actual: {"accept-encoding":"gzip","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Expected: {"accept-encoding":"gzip"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ queryStringParameters matches: undefined | |
| ✗ [270] requestContext matches: {"http":{"method":"GET","path":"/nature/hiking","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"GET /nature/{activities}","timeEpoch":1700502376} | |
| Actual: {"http":{"method":"GET","path":"/nature/hiking","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"GET /nature/{activities}","timeEpoch":1700502376} | |
| Expected: {"http":{"method":"GET","path":"/nature/hiking"},"routeKey":"GET /nature/{activities}","timeEpoch":1700502376} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ pathParameters matches: {"nature":"hiking"} | |
| ✓ body matches: undefined | |
| ✓ isBase64Encoded matches: false | |
| Architect v7 (HTTP API mode): get /{proxy+} | |
| ✓ version matches: "2.0" | |
| ✓ routeKey matches: "GET /{proxy+}" | |
| ✓ rawPath matches: "/nature/hiking" | |
| ✓ rawQueryString matches: "" | |
| ✓ cookies matches: ["_idx=abc123DEF456"] | |
| ✗ [279] headers matches: {"accept-encoding":"gzip","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Actual: {"accept-encoding":"gzip","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Expected: {"accept-encoding":"gzip"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ queryStringParameters matches: undefined | |
| ✗ [281] requestContext matches: {"http":{"method":"GET","path":"/nature/hiking","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"GET /{proxy+}","timeEpoch":1700502376} | |
| Actual: {"http":{"method":"GET","path":"/nature/hiking","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"GET /{proxy+}","timeEpoch":1700502376} | |
| Expected: {"http":{"method":"GET","path":"/nature/hiking"},"routeKey":"GET /{proxy+}","timeEpoch":1700502376} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ pathParameters matches: {"proxy":"nature/hiking"} | |
| ✓ body matches: undefined | |
| ✓ isBase64Encoded matches: false | |
| Architect v7 (HTTP API mode): get /path/* (/path/hi/there) | |
| ✓ version matches: "2.0" | |
| ✓ routeKey matches: "GET /path/{proxy+}" | |
| ✓ rawPath matches: "/path/hi/there" | |
| ✓ rawQueryString matches: "" | |
| ✓ cookies matches: ["_idx=abc123DEF456"] | |
| ✗ [290] headers matches: {"accept-encoding":"gzip","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Actual: {"accept-encoding":"gzip","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Expected: {"accept-encoding":"gzip"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ queryStringParameters matches: undefined | |
| ✗ [292] requestContext matches: {"http":{"method":"GET","path":"/path/hi/there","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"GET /path/{proxy+}","timeEpoch":1700502376} | |
| Actual: {"http":{"method":"GET","path":"/path/hi/there","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"GET /path/{proxy+}","timeEpoch":1700502376} | |
| Expected: {"http":{"method":"GET","path":"/path/hi/there"},"routeKey":"GET /path/{proxy+}","timeEpoch":1700502376} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ pathParameters matches: {"proxy":"hi/there"} | |
| ✓ body matches: undefined | |
| ✓ isBase64Encoded matches: false | |
| Architect v7 (HTTP API mode): get /:activities/{proxy+} (/nature/hiking/wilderness) | |
| ✓ version matches: "2.0" | |
| ✓ routeKey matches: "GET /{activities}/{proxy+}" | |
| ✓ rawPath matches: "/nature/hiking/wilderness" | |
| ✓ rawQueryString matches: "" | |
| ✓ cookies matches: ["_idx=abc123DEF456"] | |
| ✗ [301] headers matches: {"accept-encoding":"gzip","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Actual: {"accept-encoding":"gzip","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Expected: {"accept-encoding":"gzip"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ queryStringParameters matches: undefined | |
| ✗ [303] requestContext matches: {"http":{"method":"GET","path":"/nature/hiking/wilderness","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"GET /{activities}/{proxy+}","timeEpoch":1700502376} | |
| Actual: {"http":{"method":"GET","path":"/nature/hiking/wilderness","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"GET /{activities}/{proxy+}","timeEpoch":1700502376} | |
| Expected: {"http":{"method":"GET","path":"/nature/hiking/wilderness"},"routeKey":"GET /{activities}/{proxy+}","timeEpoch":1700502376} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ pathParameters matches: {"activities":"nature","proxy":"hiking/wilderness"} | |
| ✓ body matches: undefined | |
| ✓ isBase64Encoded matches: false | |
| Architect v7 (HTTP API mode): post /form (JSON) | |
| ✓ version matches: "2.0" | |
| ✓ routeKey matches: "POST /form" | |
| ✓ rawPath matches: "/form" | |
| ✓ rawQueryString matches: "" | |
| ✓ cookies matches: ["_idx=abc123DEF456"] | |
| ✗ [312] headers matches: {"accept-encoding":"gzip","content-type":"application/json","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Actual: {"accept-encoding":"gzip","content-type":"application/json","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Expected: {"accept-encoding":"gzip","content-type":"application/json"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ queryStringParameters matches: undefined | |
| ✗ [314] requestContext matches: {"http":{"method":"POST","path":"/form","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"POST /form","timeEpoch":1700502376} | |
| Actual: {"http":{"method":"POST","path":"/form","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"POST /form","timeEpoch":1700502376} | |
| Expected: {"http":{"method":"POST","path":"/form"},"routeKey":"POST /form","timeEpoch":1700502376} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ pathParameters matches: undefined | |
| ✓ body matches: "{\"hi\":\"there\"}" | |
| ✓ isBase64Encoded matches: false | |
| Architect v7 (HTTP + Lambda 1.0 payload): post /form (form URL encoded) | |
| ✓ version matches: "2.0" | |
| ✓ routeKey matches: "POST /form" | |
| ✓ rawPath matches: "/form" | |
| ✓ rawQueryString matches: "" | |
| ✓ cookies matches: ["_idx=abc123DEF456"] | |
| ✗ [323] headers matches: {"accept-encoding":"gzip","content-type":"application/x-www-form-urlencoded","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Actual: {"accept-encoding":"gzip","content-type":"application/x-www-form-urlencoded","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Expected: {"accept-encoding":"gzip","content-type":"application/x-www-form-urlencoded"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ queryStringParameters matches: undefined | |
| ✗ [325] requestContext matches: {"http":{"method":"POST","path":"/form","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"POST /form","timeEpoch":1700502376} | |
| Actual: {"http":{"method":"POST","path":"/form","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"POST /form","timeEpoch":1700502376} | |
| Expected: {"http":{"method":"POST","path":"/form"},"routeKey":"POST /form","timeEpoch":1700502376} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ pathParameters matches: undefined | |
| ✓ body matches: "aGk9dGhlcmU=" | |
| ✓ isBase64Encoded matches: true | |
| Architect v7 (HTTP API mode): post /form (multipart form data) | |
| ✓ version matches: "2.0" | |
| ✓ routeKey matches: "POST /form" | |
| ✓ rawPath matches: "/form" | |
| ✓ rawQueryString matches: "" | |
| ✓ cookies matches: ["_idx=abc123DEF456"] | |
| ✗ [334] headers matches: {"accept-encoding":"gzip","content-type":"multipart/form-data","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Actual: {"accept-encoding":"gzip","content-type":"multipart/form-data","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Expected: {"accept-encoding":"gzip","content-type":"multipart/form-data"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ queryStringParameters matches: undefined | |
| ✗ [336] requestContext matches: {"http":{"method":"POST","path":"/form","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"POST /form","timeEpoch":1700502376} | |
| Actual: {"http":{"method":"POST","path":"/form","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"POST /form","timeEpoch":1700502376} | |
| Expected: {"http":{"method":"POST","path":"/form"},"routeKey":"POST /form","timeEpoch":1700502376} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ pathParameters matches: undefined | |
| ✓ body matches: "aGkgdGhlcmU=" | |
| ✓ isBase64Encoded matches: true | |
| Architect v7 (HTTP API mode): post /form (octet stream) | |
| ✓ version matches: "2.0" | |
| ✓ routeKey matches: "POST /form" | |
| ✓ rawPath matches: "/form" | |
| ✓ rawQueryString matches: "" | |
| ✓ cookies matches: ["_idx=abc123DEF456"] | |
| ✗ [345] headers matches: {"accept-encoding":"gzip","content-type":"application/octet-stream","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Actual: {"accept-encoding":"gzip","content-type":"application/octet-stream","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Expected: {"accept-encoding":"gzip","content-type":"application/octet-stream"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ queryStringParameters matches: undefined | |
| ✗ [347] requestContext matches: {"http":{"method":"POST","path":"/form","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"POST /form","timeEpoch":1700502376} | |
| Actual: {"http":{"method":"POST","path":"/form","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"POST /form","timeEpoch":1700502376} | |
| Expected: {"http":{"method":"POST","path":"/form"},"routeKey":"POST /form","timeEpoch":1700502376} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ pathParameters matches: undefined | |
| ✓ body matches: "aGkgdGhlcmUK" | |
| ✓ isBase64Encoded matches: true | |
| Architect v7 (HTTP API mode): put /form (JSON) | |
| ✓ version matches: "2.0" | |
| ✓ routeKey matches: "PUT /form" | |
| ✓ rawPath matches: "/form" | |
| ✓ rawQueryString matches: "" | |
| ✓ cookies matches: ["_idx=abc123DEF456"] | |
| ✗ [356] headers matches: {"accept-encoding":"gzip","content-type":"application/json","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Actual: {"accept-encoding":"gzip","content-type":"application/json","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Expected: {"accept-encoding":"gzip","content-type":"application/json"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ queryStringParameters matches: undefined | |
| ✗ [358] requestContext matches: {"http":{"method":"PUT","path":"/form","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"PUT /form","timeEpoch":1700502376} | |
| Actual: {"http":{"method":"PUT","path":"/form","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"PUT /form","timeEpoch":1700502376} | |
| Expected: {"http":{"method":"PUT","path":"/form"},"routeKey":"PUT /form","timeEpoch":1700502376} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ pathParameters matches: undefined | |
| ✓ body matches: "{\"hi\":\"there\"}" | |
| ✓ isBase64Encoded matches: false | |
| Architect v7 (HTTP API mode): patch /form (JSON) | |
| ✓ version matches: "2.0" | |
| ✓ routeKey matches: "PATCH /form" | |
| ✓ rawPath matches: "/form" | |
| ✓ rawQueryString matches: "" | |
| ✓ cookies matches: ["_idx=abc123DEF456"] | |
| ✗ [367] headers matches: {"accept-encoding":"gzip","content-type":"application/json","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Actual: {"accept-encoding":"gzip","content-type":"application/json","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Expected: {"accept-encoding":"gzip","content-type":"application/json"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ queryStringParameters matches: undefined | |
| ✗ [369] requestContext matches: {"http":{"method":"PATCH","path":"/form","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"PATCH /form","timeEpoch":1700502376} | |
| Actual: {"http":{"method":"PATCH","path":"/form","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"PATCH /form","timeEpoch":1700502376} | |
| Expected: {"http":{"method":"PATCH","path":"/form"},"routeKey":"PATCH /form","timeEpoch":1700502376} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ pathParameters matches: undefined | |
| ✓ body matches: "{\"hi\":\"there\"}" | |
| ✓ isBase64Encoded matches: false | |
| Architect v7 (HTTP API mode): delete /form (JSON) | |
| ✓ version matches: "2.0" | |
| ✓ routeKey matches: "DELETE /form" | |
| ✓ rawPath matches: "/form" | |
| ✓ rawQueryString matches: "" | |
| ✓ cookies matches: ["_idx=abc123DEF456"] | |
| ✗ [378] headers matches: {"accept-encoding":"gzip","content-type":"application/json","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Actual: {"accept-encoding":"gzip","content-type":"application/json","x-forwarded-for":null,"x-forwarded-proto":"http"} | |
| Expected: {"accept-encoding":"gzip","content-type":"application/json"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ queryStringParameters matches: undefined | |
| ✗ [380] requestContext matches: {"http":{"method":"DELETE","path":"/form","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"DELETE /form","timeEpoch":1700502376} | |
| Actual: {"http":{"method":"DELETE","path":"/form","protocol":"HTTP/1.1","sourceIp":null,"userAgent":null},"routeKey":"DELETE /form","timeEpoch":1700502376} | |
| Expected: {"http":{"method":"DELETE","path":"/form"},"routeKey":"DELETE /form","timeEpoch":1700502376} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:72:7) | |
| ✓ pathParameters matches: undefined | |
| ✓ body matches: "{\"hi\":\"there\"}" | |
| ✓ isBase64Encoded matches: false | |
| Architect v7 (HTTP + Lambda 1.0 payload): get / | |
| ✓ resource matches: "/" | |
| ✓ path matches: "/" | |
| ✓ httpMethod matches: "GET" | |
| ✗ [387] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [388] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: null | |
| ✓ isBase64Encoded matches: false | |
| ✗ [394] requestContext matches: {"httpMethod":"GET","path":"/","resourcePath":"/","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"GET","path":"/","resourcePath":"/","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"GET","path":"/","resourcePath":"/"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v7 (HTTP + Lambda 1.0 payload): get /?whats=up | |
| ✓ resource matches: "/" | |
| ✓ path matches: "/" | |
| ✓ httpMethod matches: "GET" | |
| ✗ [400] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [401] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: {"whats":"up"} | |
| ✓ multiValueQueryStringParameters matches: {"whats":["up"]} | |
| ✓ pathParameters matches: null | |
| ✓ body matches: null | |
| ✓ isBase64Encoded matches: false | |
| ✗ [407] requestContext matches: {"httpMethod":"GET","path":"/","resourcePath":"/","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"GET","path":"/","resourcePath":"/","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"GET","path":"/","resourcePath":"/"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v7 (HTTP + Lambda 1.0 payload): get /?whats=up&whats=there | |
| ✓ resource matches: "/" | |
| ✓ path matches: "/" | |
| ✓ httpMethod matches: "GET" | |
| ✗ [413] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [414] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: {"whats":"there"} | |
| ✓ multiValueQueryStringParameters matches: {"whats":["up","there"]} | |
| ✓ pathParameters matches: null | |
| ✓ body matches: null | |
| ✓ isBase64Encoded matches: false | |
| ✗ [420] requestContext matches: {"httpMethod":"GET","path":"/","resourcePath":"/","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"GET","path":"/","resourcePath":"/","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"GET","path":"/","resourcePath":"/"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v7 (HTTP + Lambda 1.0 payload): get /nature/hiking | |
| ✓ resource matches: "/nature/{activities}" | |
| ✓ path matches: "/nature/hiking" | |
| ✓ httpMethod matches: "GET" | |
| ✗ [426] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [427] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: {"activities":"hiking"} | |
| ✓ body matches: null | |
| ✓ isBase64Encoded matches: false | |
| ✗ [433] requestContext matches: {"httpMethod":"GET","path":"/nature/hiking","resourcePath":"/nature/{activities}","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"GET","path":"/nature/hiking","resourcePath":"/nature/{activities}","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"GET","path":"/nature/hiking","resourcePath":"/nature/{activities}"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v7 (HTTP + Lambda 1.0 payload): get /{proxy+} | |
| ✓ resource matches: "/{proxy+}" | |
| ✓ path matches: "/nature/hiking" | |
| ✓ httpMethod matches: "GET" | |
| ✗ [439] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [440] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: {"proxy":"nature/hiking"} | |
| ✓ body matches: null | |
| ✓ isBase64Encoded matches: false | |
| ✗ [446] requestContext matches: {"httpMethod":"GET","path":"/nature/hiking","resourcePath":"/{proxy+}","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"GET","path":"/nature/hiking","resourcePath":"/{proxy+}","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"GET","path":"/nature/hiking","resourcePath":"/{proxy+}"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v7 (HTTP + Lambda 1.0 payload): get /path/* (/path/hi/there) | |
| ✓ resource matches: "/path/{proxy+}" | |
| ✓ path matches: "/path/hi/there" | |
| ✓ httpMethod matches: "GET" | |
| ✗ [452] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [453] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: {"proxy":"hi/there"} | |
| ✓ body matches: null | |
| ✓ isBase64Encoded matches: false | |
| ✗ [459] requestContext matches: {"httpMethod":"GET","path":"/path/hi/there","resourcePath":"/path/{proxy+}","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"GET","path":"/path/hi/there","resourcePath":"/path/{proxy+}","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"GET","path":"/path/hi/there","resourcePath":"/path/{proxy+}"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v7 (HTTP + Lambda 1.0 payload): get /:activities/{proxy+} (/nature/hiking/wilderness) | |
| ✓ resource matches: "/{activities}/{proxy+}" | |
| ✓ path matches: "/nature/hiking/wilderness" | |
| ✓ httpMethod matches: "GET" | |
| ✗ [465] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [466] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: {"activities":"nature","proxy":"hiking/wilderness"} | |
| ✓ body matches: null | |
| ✓ isBase64Encoded matches: false | |
| ✗ [472] requestContext matches: {"httpMethod":"GET","path":"/nature/hiking/wilderness","resourcePath":"/{activities}/{proxy+}","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"GET","path":"/nature/hiking/wilderness","resourcePath":"/{activities}/{proxy+}","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"GET","path":"/nature/hiking/wilderness","resourcePath":"/{activities}/{proxy+}"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v7 (HTTP + Lambda 1.0 payload): post /form (JSON) | |
| ✓ resource matches: "/form" | |
| ✓ path matches: "/form" | |
| ✓ httpMethod matches: "POST" | |
| ✗ [478] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [479] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: "eyJoaSI6InRoZXJlIn0=" | |
| ✓ isBase64Encoded matches: true | |
| ✗ [485] requestContext matches: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"POST","path":"/form","resourcePath":"/form"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v7 (HTTP + Lambda 1.0 payload): post /form (form URL encoded) | |
| ✓ resource matches: "/form" | |
| ✓ path matches: "/form" | |
| ✓ httpMethod matches: "POST" | |
| ✗ [491] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/x-www-form-urlencoded","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/x-www-form-urlencoded","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/x-www-form-urlencoded"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [492] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/x-www-form-urlencoded"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/x-www-form-urlencoded"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/x-www-form-urlencoded"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: "aGk9dGhlcmU=" | |
| ✓ isBase64Encoded matches: true | |
| ✗ [498] requestContext matches: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"POST","path":"/form","resourcePath":"/form"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v7 (HTTP + Lambda 1.0 payload): post /form (multipart form data) | |
| ✓ resource matches: "/form" | |
| ✓ path matches: "/form" | |
| ✓ httpMethod matches: "POST" | |
| ✗ [504] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"multipart/form-data","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"multipart/form-data","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"multipart/form-data"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [505] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["multipart/form-data"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["multipart/form-data"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["multipart/form-data"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: "aGkgdGhlcmU=" | |
| ✓ isBase64Encoded matches: true | |
| ✗ [511] requestContext matches: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"POST","path":"/form","resourcePath":"/form"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v7 (HTTP + Lambda 1.0 payload): post /form (octet stream) | |
| ✓ resource matches: "/form" | |
| ✓ path matches: "/form" | |
| ✓ httpMethod matches: "POST" | |
| ✗ [517] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/octet-stream","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/octet-stream","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/octet-stream"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [518] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/octet-stream"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/octet-stream"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/octet-stream"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: "aGkgdGhlcmUK" | |
| ✓ isBase64Encoded matches: true | |
| ✗ [524] requestContext matches: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"POST","path":"/form","resourcePath":"/form"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v7 (HTTP + Lambda 1.0 payload): put /form (JSON) | |
| ✓ resource matches: "/form" | |
| ✓ path matches: "/form" | |
| ✓ httpMethod matches: "PUT" | |
| ✗ [530] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [531] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: "eyJoaSI6InRoZXJlIn0=" | |
| ✓ isBase64Encoded matches: true | |
| ✗ [537] requestContext matches: {"httpMethod":"PUT","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"PUT","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"PUT","path":"/form","resourcePath":"/form"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v7 (HTTP + Lambda 1.0 payload): patch /form (JSON) | |
| ✓ resource matches: "/form" | |
| ✓ path matches: "/form" | |
| ✓ httpMethod matches: "PATCH" | |
| ✗ [543] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [544] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: "eyJoaSI6InRoZXJlIn0=" | |
| ✓ isBase64Encoded matches: true | |
| ✗ [550] requestContext matches: {"httpMethod":"PATCH","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"PATCH","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"PATCH","path":"/form","resourcePath":"/form"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v7 (HTTP + Lambda 1.0 payload): delete /form (JSON) | |
| ✓ resource matches: "/form" | |
| ✓ path matches: "/form" | |
| ✓ httpMethod matches: "DELETE" | |
| ✗ [556] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [557] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: "eyJoaSI6InRoZXJlIn0=" | |
| ✓ isBase64Encoded matches: true | |
| ✗ [563] requestContext matches: {"httpMethod":"DELETE","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"DELETE","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"DELETE","path":"/form","resourcePath":"/form"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v6 (REST API mode): get / | |
| ✓ resource matches: "/" | |
| ✓ path matches: "/" | |
| ✓ httpMethod matches: "GET" | |
| ✗ [569] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [570] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: null | |
| ✓ isBase64Encoded matches: false | |
| ✗ [576] requestContext matches: {"httpMethod":"GET","path":"/","resourcePath":"/","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"GET","path":"/","resourcePath":"/","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"GET","path":"/","resourcePath":"/"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v6 (REST API mode): get /?whats=up | |
| ✓ resource matches: "/" | |
| ✓ path matches: "/" | |
| ✓ httpMethod matches: "GET" | |
| ✗ [582] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [583] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: {"whats":"up"} | |
| ✓ multiValueQueryStringParameters matches: {"whats":["up"]} | |
| ✓ pathParameters matches: null | |
| ✓ body matches: null | |
| ✓ isBase64Encoded matches: false | |
| ✗ [589] requestContext matches: {"httpMethod":"GET","path":"/","resourcePath":"/","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"GET","path":"/","resourcePath":"/","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"GET","path":"/","resourcePath":"/"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v6 (REST API mode): get /?whats=up&whats=there | |
| ✓ resource matches: "/" | |
| ✓ path matches: "/" | |
| ✓ httpMethod matches: "GET" | |
| ✗ [595] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [596] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: {"whats":"there"} | |
| ✓ multiValueQueryStringParameters matches: {"whats":["up","there"]} | |
| ✓ pathParameters matches: null | |
| ✓ body matches: null | |
| ✓ isBase64Encoded matches: false | |
| ✗ [602] requestContext matches: {"httpMethod":"GET","path":"/","resourcePath":"/","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"GET","path":"/","resourcePath":"/","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"GET","path":"/","resourcePath":"/"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v6 (REST API mode): get /nature/hiking | |
| ✓ resource matches: "/nature/{activities}" | |
| ✓ path matches: "/nature/hiking" | |
| ✓ httpMethod matches: "GET" | |
| ✗ [608] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [609] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: {"activities":"hiking"} | |
| ✓ body matches: null | |
| ✓ isBase64Encoded matches: false | |
| ✗ [615] requestContext matches: {"httpMethod":"GET","path":"/nature/hiking","resourcePath":"/nature/{activities}","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"GET","path":"/nature/hiking","resourcePath":"/nature/{activities}","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"GET","path":"/nature/hiking","resourcePath":"/nature/{activities}"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v6 (REST API mode): get /{proxy+} | |
| ✓ resource matches: "/{proxy+}" | |
| ✓ path matches: "/nature/hiking" | |
| ✓ httpMethod matches: "GET" | |
| ✗ [621] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [622] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: {"proxy":"nature/hiking"} | |
| ✓ body matches: null | |
| ✓ isBase64Encoded matches: false | |
| ✗ [628] requestContext matches: {"httpMethod":"GET","path":"/nature/hiking","resourcePath":"/{proxy+}","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"GET","path":"/nature/hiking","resourcePath":"/{proxy+}","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"GET","path":"/nature/hiking","resourcePath":"/{proxy+}"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v6 (REST API mode): post /form (JSON) | |
| ✓ resource matches: "/form" | |
| ✓ path matches: "/form" | |
| ✓ httpMethod matches: "POST" | |
| ✗ [634] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [635] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: "eyJoaSI6InRoZXJlIn0=" | |
| ✓ isBase64Encoded matches: true | |
| ✗ [641] requestContext matches: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"POST","path":"/form","resourcePath":"/form"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v6 (REST API mode): post /form (form URL encoded) | |
| ✓ resource matches: "/form" | |
| ✓ path matches: "/form" | |
| ✓ httpMethod matches: "POST" | |
| ✗ [647] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/x-www-form-urlencoded","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/x-www-form-urlencoded","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/x-www-form-urlencoded"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [648] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/x-www-form-urlencoded"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/x-www-form-urlencoded"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/x-www-form-urlencoded"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: "aGk9dGhlcmU=" | |
| ✓ isBase64Encoded matches: true | |
| ✗ [654] requestContext matches: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"POST","path":"/form","resourcePath":"/form"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v6 (REST API mode): post /form (multipart form data) | |
| ✓ resource matches: "/form" | |
| ✓ path matches: "/form" | |
| ✓ httpMethod matches: "POST" | |
| ✗ [660] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"multipart/form-data","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"multipart/form-data","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"multipart/form-data"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [661] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["multipart/form-data"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["multipart/form-data"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["multipart/form-data"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: "aGkgdGhlcmU=" | |
| ✓ isBase64Encoded matches: true | |
| ✗ [667] requestContext matches: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"POST","path":"/form","resourcePath":"/form"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v6 (REST API mode): post /form (octet stream) | |
| ✓ resource matches: "/form" | |
| ✓ path matches: "/form" | |
| ✓ httpMethod matches: "POST" | |
| ✗ [673] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/octet-stream","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/octet-stream","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/octet-stream"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [674] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/octet-stream"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/octet-stream"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/octet-stream"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: "aGkgdGhlcmUK" | |
| ✓ isBase64Encoded matches: true | |
| ✗ [680] requestContext matches: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"POST","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"POST","path":"/form","resourcePath":"/form"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v6 (REST API mode): put /form (JSON) | |
| ✓ resource matches: "/form" | |
| ✓ path matches: "/form" | |
| ✓ httpMethod matches: "PUT" | |
| ✗ [686] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [687] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: "eyJoaSI6InRoZXJlIn0=" | |
| ✓ isBase64Encoded matches: true | |
| ✗ [693] requestContext matches: {"httpMethod":"PUT","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"PUT","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"PUT","path":"/form","resourcePath":"/form"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v6 (REST API mode): patch /form (JSON) | |
| ✓ resource matches: "/form" | |
| ✓ path matches: "/form" | |
| ✓ httpMethod matches: "PATCH" | |
| ✗ [699] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [700] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: "eyJoaSI6InRoZXJlIn0=" | |
| ✓ isBase64Encoded matches: true | |
| ✗ [706] requestContext matches: {"httpMethod":"PATCH","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"PATCH","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"PATCH","path":"/form","resourcePath":"/form"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Architect v6 (REST API mode): delete /form (JSON) | |
| ✓ resource matches: "/form" | |
| ✓ path matches: "/form" | |
| ✓ httpMethod matches: "DELETE" | |
| ✗ [712] headers matches: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Actual: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| Expected: {"accept-encoding":"gzip","cookie":"_idx=abc123DEF456","content-type":"application/json"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✗ [713] multiValueHeaders matches: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Actual: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"],"X-Forwarded-For":[null],"X-Forwarded-Proto":["http"]} | |
| Expected: {"accept-encoding":["gzip"],"cookie":["_idx=abc123DEF456"],"content-type":["application/json"]} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ queryStringParameters matches: null | |
| ✓ multiValueQueryStringParameters matches: null | |
| ✓ pathParameters matches: null | |
| ✓ body matches: "eyJoaSI6InRoZXJlIn0=" | |
| ✓ isBase64Encoded matches: true | |
| ✗ [719] requestContext matches: {"httpMethod":"DELETE","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Actual: {"httpMethod":"DELETE","path":"/form","resourcePath":"/form","protocol":"HTTP/1.1","identity":{"sourceIp":null,"userAgent":null}} | |
| Expected: {"httpMethod":"DELETE","path":"/form","resourcePath":"/form"} | |
| At: <anonymous> (/test/unit/src/http/invoke-http/index-req-test.js:394:7) | |
| ✓ multiValueHeaders checked out | |
| ✓ multiValueQueryStringParameters checked out | |
| Unknown invocation error | |
| ✓ Invocation error passes along error message | |
| ✓ Responded with: 502 | |
| Architect v7 dependency-free responses (HTTP API mode) | |
| ✓ Returned string: 'null' | |
| ✓ Returned correct content-type: application/json | |
| ✓ Responded with: 200 | |
| ✓ Returned empty string: | |
| ✓ Returned correct content-type: application/json | |
| ✓ Responded with: 200 | |
| ✓ Returned string: hi | |
| ✓ Returned correct content-type: application/json | |
| ✓ Responded with: 200 | |
| ✓ Returned JSON-serialized object: {"ok":true} | |
| ✓ Returned correct content-type: application/json | |
| ✓ Responded with: 200 | |
| ✓ Returned JSON-serialized array: ["howdy"] | |
| ✓ Returned correct content-type: application/json | |
| ✓ Responded with: 200 | |
| ✓ Returned JSON-serialized buffer: {"type":"Buffer","data":[104,105]} | |
| ✓ Returned correct content-type: application/json | |
| ✓ Responded with: 200 | |
| ✓ Returned string: 42 | |
| ✓ Returned correct content-type: application/json | |
| ✓ Responded with: 200 | |
| ✓ Returned string: {"body":"hi there"} | |
| ✓ Returned correct content-type: application/json | |
| ✓ Responded with: 200 | |
| ✓ Returned string: hi there | |
| ✓ Returned correct content-type: text/plain; charset=utf-8 | |
| ✓ Responded with: 200 | |
| ✓ Returned string: hi there | |
| ✓ Returned correct content-type: application/json | |
| ✓ Responded with: 200 | |
| ✓ Body is a buffer | |
| ✓ Passed back same buffer | |
| ✓ Returned correct content-type: application/pdf | |
| ✓ isBase64Encoded param passed through | |
| ✓ Responded with 200 | |
| ✓ Returned string: hi there | |
| ✓ Returned correct cookies: ["foo","bar"] | |
| ✓ Responded with 200 | |
| ✓ Returned string: hi there | |
| ✓ Returned correct secure cookies: ["hi=there; Path=/","hi=there; Path=/"] | |
| ✓ Responded with 200 | |
| ✓ Returned string: hi there | |
| ✓ Returned correct secure cookies from header: ["hi=there; Path=/"] | |
| ✓ Responded with 200 | |
| ✓ Invalid statusCode causes error | |
| ✓ Responded with 502 | |
| Architect v7 dependency-free responses (HTTP API + Lambda v1.0) | |
| ✓ res.body matches: hi there | |
| ✓ Returned correct content-type: application/json; charset=utf-8 | |
| ✓ isBase64Encoded param NOT set automatically | |
| ✓ Responded with 200 | |
| ✓ res.body matches: hi there | |
| ✓ Returned correct content-type: application/json; charset=utf-8 | |
| ✓ isBase64Encoded param passed through | |
| ✓ Responded with 200 | |
| ✓ Raw buffer response causes error | |
| ✓ Returned correct content-type: text/html; charset=utf-8; | |
| ✓ Responded with 502 | |
| ✓ Body is (likely) base64 encoded | |
| ✓ Body still base64 encoded | |
| ✓ Returned correct content-type: application/pdf | |
| ✓ isBase64Encoded param NOT set automatically | |
| ✓ Responded with 200 | |
| ✓ Body is a buffer | |
| ✓ Passed back same buffer | |
| ✓ Returned correct content-type: application/pdf | |
| ✓ isBase64Encoded param passed through | |
| ✓ Responded with 200 | |
| ✓ Cookie SSL replaced with local path modification: hi=there; Path=/ | |
| ✓ Responded with 200 | |
| ✓ Cookie 1 SSL replaced with local path modification: hi=there; Path=/ | |
| ✓ Cookie 2 SSL replaced with local path modification: hi=there; Path=/ | |
| ✓ Responded with 200 | |
| ✓ Header values set | |
| ✓ Content-Type favors multiValueHeaders | |
| ✓ Invalid multiValueHeaders causes error | |
| ✓ Responded with 502 | |
| Architect v6 dependency-free responses (REST API mode) | |
| ✓ res.body matches: hi there | |
| ✓ Returned correct content-type: application/json; charset=utf-8 | |
| ✓ isBase64Encoded param NOT set automatically | |
| ✓ Responded with 200 | |
| ✓ res.body matches: hi there | |
| ✓ Returned correct content-type: application/json; charset=utf-8 | |
| ✓ isBase64Encoded param passed through | |
| ✓ Responded with 200 | |
| ✓ Raw buffer response causes error | |
| ✓ Returned correct content-type: text/html; charset=utf-8; | |
| ✓ Responded with 502 | |
| ✓ Body is (likely) base64 encoded | |
| ✓ Body still base64 encoded | |
| ✓ Returned correct content-type: application/pdf | |
| ✓ isBase64Encoded param NOT set automatically | |
| ✓ Responded with 200 | |
| ✓ Body is a buffer | |
| ✓ Passed back same buffer | |
| ✓ Returned correct content-type: application/pdf | |
| ✓ isBase64Encoded param passed through | |
| ✓ Responded with 200 | |
| ✓ Cookie SSL replaced with local path modification: hi=there; Path=/ | |
| ✓ Responded with 200 | |
| ✓ Cookie 1 SSL replaced with local path modification: hi=there; Path=/ | |
| ✓ Cookie 2 SSL replaced with local path modification: hi=there; Path=/ | |
| ✓ Responded with 200 | |
| ✓ Header values set | |
| ✓ Content-Type favors multiValueHeaders | |
| ✓ Invalid multiValueHeaders causes error | |
| ✓ Responded with 502 | |
| Live reload passes through | |
| ✓ JSON body is unmutated | |
| ✓ JSON body is unmutated with live reload enabled | |
| ✓ HTML body is unmutated | |
| ✓ HTML body is unmutated with live reload enabled | |
| Live reload injects script when enabled | |
| ✓ HTML body mutated with live reload enabled | |
| ✓ Headers are unmutated | |
| ✓ Added script tag | |
| ✓ Script tag includes _arc WS URL | |
| ✓ Retained original body | |
| ✓ HTML body mutated with live reload enabled | |
| ✓ Headers are unmutated | |
| ✓ Added script tag | |
| ✓ Script tag includes _arc WS URL | |
| ✓ Retained original body | |
| Set up env | |
| ✓ Module is present | |
| Basics | |
| ✓ Got back headers | |
| ✓ Got back multiValueHeaders | |
| Header mangling (HTTP + Lambda 1.0 payload) | |
| ✓ Got back lowcased authorization | |
| ✓ Got back upcased Host | |
| ✓ Got back upcased User-Agent | |
| ✓ Got back upcased X-Forwarded-For | |
| ✓ Got back upcased X-Forwarded-Port | |
| ✓ Got back upcased X-Forwarded-Proto | |
| ✓ Got back lowcased date | |
| ✓ Got back lowcased foo | |
| ✓ Got back lowcased authorization | |
| ✓ Got back upcased Host | |
| ✓ Got back upcased User-Agent | |
| ✓ Got back upcased X-Forwarded-For | |
| ✓ Got back upcased X-Forwarded-Port | |
| ✓ Got back upcased X-Forwarded-Proto | |
| ✓ Got back lowcased date | |
| ✓ Got back lowcased foo | |
| ✓ Did not get back upcased Authorization | |
| ✓ Did not get back lowcased host | |
| ✓ Did not get back lowcased user-agent | |
| ✓ Did not get back lowcased x-forwarded-for | |
| ✓ Did not get back lowcased x-forwarded-port | |
| ✓ Did not get back lowcased x-forwarded-proto | |
| ✓ Did not get back upcased Date | |
| ✓ Did not get back upcased Authorization | |
| ✓ Did not get back lowcased host | |
| ✓ Did not get back lowcased user-agent | |
| ✓ Did not get back lowcased x-forwarded-for | |
| ✓ Did not get back lowcased x-forwarded-port | |
| ✓ Did not get back lowcased x-forwarded-proto | |
| ✓ Did not get back upcased Date | |
| Header drops (HTTP + Lambda 1.0 payload) | |
| ✓ Dropped appropriate headers | |
| ✓ Dropped appropriate multiValueHeaders | |
| Header mangling (REST) | |
| ✓ Got back upcased Authorization | |
| ✓ Got back upcased Host | |
| ✓ Got back upcased User-Agent | |
| ✓ Got back upcased X-Forwarded-For | |
| ✓ Got back upcased X-Forwarded-Port | |
| ✓ Got back upcased X-Forwarded-Proto | |
| ✓ Got back upased Date | |
| ✓ Got back lowcased foo | |
| ✓ Got back upcased Authorization | |
| ✓ Got back upcased Host | |
| ✓ Got back upcased User-Agent | |
| ✓ Got back upcased X-Forwarded-For | |
| ✓ Got back upcased X-Forwarded-Port | |
| ✓ Got back upcased X-Forwarded-Proto | |
| ✓ Got back upased Date | |
| ✓ Got back lowcased foo | |
| ✓ Did not get back lowcased authorization | |
| ✓ Did not get back lowcased host | |
| ✓ Did not get back lowcased user-agent | |
| ✓ Did not get back lowcased x-forwarded-for | |
| ✓ Did not get back lowcased x-forwarded-port | |
| ✓ Did not get back lowcased x-forwarded-proto | |
| ✓ Did not get back lowcased date | |
| ✓ Did not get back lowcased authorization | |
| ✓ Did not get back lowcased host | |
| ✓ Did not get back lowcased user-agent | |
| ✓ Did not get back lowcased x-forwarded-for | |
| ✓ Did not get back lowcased x-forwarded-port | |
| ✓ Did not get back lowcased x-forwarded-proto | |
| ✓ Did not get back lowcased date | |
| Header drops (REST) | |
| ✓ Dropped appropriate headers | |
| ✓ Dropped appropriate multiValueHeaders | |
| Set up env | |
| ✓ Module is present | |
| Header mangling (HTTP + Lambda 1.0 payload) | |
| ✓ Got back the correct number of response headers | |
| ✓ Lowercased and got back correct response header for: accept-charset | |
| ✓ Lowercased and got back correct response header for: accept-encoding | |
| ✓ Lowercased and got back correct response header for: accept | |
| ✓ Lowercased and got back correct response header for: age | |
| ✓ Lowercased and got back correct response header for: content-encoding | |
| ✓ Lowercased and got back correct response header for: content-type | |
| ✓ Lowercased and got back correct response header for: pragma | |
| ✓ Lowercased and got back correct response header for: range | |
| ✓ Lowercased and got back correct response header for: referer | |
| ✓ Lowercased and got back correct response header for: te | |
| ✓ Lowercased and got back correct response header for: via | |
| ✓ Lowercased and got back correct response header for: warn | |
| Header passthrough (HTTP + Lambda 1.0 payload) | |
| ✓ Got back the correct number of response headers | |
| ✓ Lowercased and got back correct response header for: authorization | |
| ✓ Lowercased and got back correct response header for: content-length | |
| ✓ Lowercased and got back correct response header for: content-md5 | |
| ✓ Lowercased and got back correct response header for: date | |
| ✓ Lowercased and got back correct response header for: expect | |
| ✓ Lowercased and got back correct response header for: host | |
| ✓ Lowercased and got back correct response header for: max-forwards | |
| ✓ Lowercased and got back correct response header for: proxy-authenticate | |
| ✓ Lowercased and got back correct response header for: server | |
| ✓ Lowercased and got back correct response header for: trailer | |
| ✓ Lowercased and got back correct response header for: user-agent | |
| ✓ Lowercased and got back correct response header for: www-authenticate | |
| Header drops (HTTP + Lambda 1.0 payload) | |
| ✓ Dropped appropriate headers | |
| Header mangling (REST) | |
| ✓ Got back the correct number of response headers | |
| ✓ Lowercased and got back correct response header for: accept-charset | |
| ✓ Lowercased and got back correct response header for: accept-encoding | |
| ✓ Lowercased and got back correct response header for: accept | |
| ✓ Lowercased and got back correct response header for: age | |
| ✓ Lowercased and got back correct response header for: content-encoding | |
| ✓ Lowercased and got back correct response header for: content-type | |
| ✓ Lowercased and got back correct response header for: pragma | |
| ✓ Lowercased and got back correct response header for: range | |
| ✓ Lowercased and got back correct response header for: referer | |
| ✓ Lowercased and got back correct response header for: te | |
| ✓ Lowercased and got back correct response header for: via | |
| ✓ Lowercased and got back correct response header for: warn | |
| Header remapping (REST) | |
| ✓ Got back the correct number of response headers | |
| ✓ Remapped and got back correct response header for: x-amzn-remapped-authorization | |
| ✓ Remapped and got back correct response header for: x-amzn-remapped-connection | |
| ✓ Remapped and got back correct response header for: x-amzn-remapped-content-length | |
| ✓ Remapped and got back correct response header for: x-amzn-remapped-content-md5 | |
| ✓ Remapped and got back correct response header for: x-amzn-remapped-date | |
| ✓ Remapped and got back correct response header for: x-amzn-remapped-expect | |
| ✓ Remapped and got back correct response header for: x-amzn-remapped-host | |
| ✓ Remapped and got back correct response header for: x-amzn-remapped-max-forwards | |
| ✓ Remapped and got back correct response header for: x-amzn-remapped-proxy-authenticate | |
| ✓ Remapped and got back correct response header for: x-amzn-remapped-server | |
| ✓ Remapped and got back correct response header for: x-amzn-remapped-trailer | |
| ✓ Remapped and got back correct response header for: x-amzn-remapped-user-agent | |
| ✓ Remapped and got back correct response header for: x-amzn-remapped-www-authenticate | |
| Header drops (REST) | |
| ✓ Dropped appropriate headers | |
| Set up env | |
| ✓ Got responseValidator module | |
| Arc v6 control response (HTTP + Lambda 1.0 payload) | |
| ✓ Valid response did not set error statusCode: undefined | |
| ✓ Valid response returned valid: true | |
| Arc v6 response validity (HTTP + Lambda 1.0 payload) | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Handler must return an object</h1> <p>HTTP handlers must return an <code>object</code>.<p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>statusCode</code> parameters must be <code>Number</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Cannot respond with a raw buffer</h1> <p>Please base64 encode your response and include a <code>isBase64Encoded: true</code> parameter, or run your response through <code>@architect/functions</code><p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>body</code> parameters must be <code>String</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Valid response did not set error statusCode: undefined | |
| ✓ Valid response returned valid: true | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>headers</code> parameters must be <code>Object</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>headers</code> parameters must be <code>Object</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>multiValueHeaders</code> parameters must be <code>Object</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>multiValueHeaders</code> parameters must be <code>Object</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>multiValueHeaders</code> parameters must be <code>Arrays</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>isBase64Encoded</code> parameters must be <code>Boolean</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid params are ignored, and do not set error statusCode: undefined | |
| ✓ Valid response returned valid: true | |
| Arc v6 control response (REST API mode) | |
| ✓ Valid response did not set error statusCode: undefined | |
| ✓ Valid response returned valid: true | |
| Arc v6 response validity (REST API mode) | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Handler must return an object</h1> <p>HTTP handlers must return an <code>object</code>.<p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>statusCode</code> parameters must be <code>Number</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Cannot respond with a raw buffer</h1> <p>Please base64 encode your response and include a <code>isBase64Encoded: true</code> parameter, or run your response through <code>@architect/functions</code><p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>body</code> parameters must be <code>String</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Valid response did not set error statusCode: undefined | |
| ✓ Valid response returned valid: true | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>headers</code> parameters must be <code>Object</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>headers</code> parameters must be <code>Object</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>multiValueHeaders</code> parameters must be <code>Object</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>multiValueHeaders</code> parameters must be <code>Object</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>multiValueHeaders</code> parameters must be <code>Arrays</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response type</h1> <p><code>isBase64Encoded</code> parameters must be <code>Boolean</code></p> | |
| ✓ Invalid response returned valid: false | |
| ✓ Invalid response did not set error statusCode: 502 | |
| ✓ Got relevant error message: <head> <style> body { font-family: sans-serif; } code, pre { font-family: monospace; color: #00c26e; } </style> </head> <h1>Invalid response parameter</h1> <p>Only the following parameters are valid in a response: <code>statusCode</code>, <code>body</code>, <code>headers</code>, <code>multiValueHeaders</code>, <code>isBase64Encoded</code></p>Recieved:<pre> { "hi": "there" }</pre> | |
| ✓ Invalid response returned valid: false | |
| Internal WebSocket events: no req, no body | |
| ✓ Lambda matches: {"src":"src/ws/default"} | |
| ✓ connectionId matches: "much-unique-uuid" | |
| ✓ isBase64Encoded set to false | |
| ✓ req.body not present | |
| ✓ req.headers not present | |
| ✓ req.query not present | |
| Internal WebSocket events: body (WS message), no req | |
| ✓ Lambda matches: {"name":"default","src":"src/ws/default"} | |
| ✓ body matches: "{\"message\":\"howdy\"}" | |
| ✓ isBase64Encoded set to false | |
| ✓ req.headers not present | |
| ✓ req.query not present | |
| ✓ connectedAt returned | |
| ✓ connectionId matches: "much-unique-uuid" | |
| ✓ domainName matches: "space.cat" | |
| ✓ eventType matches: "MESSAGE" | |
| ✓ routeKey matches: "$default" | |
| WebSocket connect / disconnect event: get / | |
| ✓ Lambda matches: {"name":"connect","src":"src/ws/connect"} | |
| ✓ connectionId matches: "much-unique-uuid" | |
| ✓ req.headers matches: {"accept-encoding":"gzip","Cookie":"_idx=abc123DEF456","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| ✓ isBase64Encoded set to false | |
| WebSocket connect / disconnect event: get /?whats=up | |
| ✓ Lambda matches: {"name":"connect","src":"src/ws/connect"} | |
| ✓ connectionId matches: "much-unique-uuid" | |
| ✓ req.headers matches: {"accept-encoding":"gzip","X-Forwarded-For":null,"X-Forwarded-Proto":"http"} | |
| ✓ isBase64Encoded set to false | |
| Set up env | |
| ✓ Got binary handler | |
| Arc v6 (HTTP): base64 encode body & flag | |
| ✓ Got base64 body back | |
| ✓ Decoded body matches request | |
| ✓ isBase64Encoded param set | |
| Arc v6 (HTTP): do not encode JSON | |
| ✓ Got body back | |
| ✓ Body matches request | |
| ✓ isBase64Encoded param not set | |
| Arc v6 (HTTP): do not encode vendored JSON | |
| ✓ Got body back | |
| ✓ Body matches request | |
| ✓ isBase64Encoded param not set | |
| Arc v6 (REST): base64 encode body & flag | |
| ✓ Got base64 body back | |
| ✓ Decoded body matches request | |
| ✓ isBase64Encoded param set | |
| Arc v6 (REST): handle empty body | |
| ✓ Got body back | |
| ✓ Body object is empty | |
| ✓ isBase64Encoded param NOT set | |
| Skip if missing content-length header | |
| ✓ Did not get base64 body object back | |
| ✓ Body object is empty | |
| ✓ isBase64Encoded param NOT set | |
| Skip if content-length is 0 | |
| ✓ Did not get base64 body object back | |
| ✓ Body object is empty | |
| ✓ isBase64Encoded param NOT set | |
| _static should invoke next() if url does not start with _static | |
| ✓ next() invoked | |
| Start Sandbox | |
| ✓ Sandbox started | |
| Test plugin invoke() method | |
| ✓ Successful execution returned undefined | |
| ✓ Successful execution returned result | |
| ✓ Could not invoke missing Lambda | |
| ReferenceError: bar is not defined | |
| at exports.handler (/Users/lpsinger/src/@architect/sandbox/test/mock/plugins-invoke/src/events/fail-userland/index.js:2:13) | |
| at run ([eval]:1:6752) | |
| at process.processTicksAndRejections (node:internal/process/task_queues:95:5) | |
| at async main ([eval]:1:6967) | |
| ✓ Error included correct name: ReferenceError | |
| ✓ Error included correct message: bar is not defined | |
| ✓ Error included valid stacktrace | |
| ✓ Error included correct message: Plugin invoke: @events fail-missing-handler missing Lambda handler file | |
| Lambda init error: exports is not defined in ES module scope | |
| ✓ Error included correct name: ReferenceError | |
| ✓ Error included correct message: exports is not defined in ES module scope | |
| ✓ Error included valid stacktrace | |
| Shut down Sandbox | |
| ✓ Sandbox shut down | |
| Set up env | |
| ✓ Got invoke | |
| Get inventory | |
| ✓ Got inventory | |
| ✓ Got inventory getter | |
| Test runtime invocations | |
| ✓ Default runtime passed correct path | |
| ✓ Default runtime ran with correct timeout | |
| ✓ Default runtime received event | |
| ✓ nodejs18.x passed correct path | |
| ✓ nodejs18.x ran with correct timeout | |
| ✓ nodejs18.x received event | |
| ✓ nodejs14.x passed correct path | |
| ✓ nodejs14.x ran with correct timeout | |
| ✓ nodejs14.x received event | |
| ✓ python3.8 passed correct path | |
| ✓ python3.8 ran with correct timeout | |
| ✓ python3.8 received event | |
| ✓ python3.7 passed correct path | |
| ✓ python3.7 ran with correct timeout | |
| ✓ python3.7 received event | |
| ✓ ruby2.7 passed correct path | |
| ✓ ruby2.7 ran with correct timeout | |
| ✓ ruby2.7 received event | |
| ✓ deno passed correct path | |
| ✓ deno ran with correct timeout | |
| ✓ deno received event | |
| Test body size limits | |
| ✓ POST: > 6MB request bodies return an error | |
| Maximum event body exceeded: Lambda allows up to 6MB payloads (base64-encoded) | |
| ✓ POST: sub 6MB request bodies are fine | |
| ✓ Event: > 6MB request bodies return an error | |
| Maximum event body exceeded: Lambda allows up to 6MB payloads (base64-encoded) | |
| ✓ Event: sub 6MB request bodies are fine | |
| Get inventory again to exercise ASAP | |
| ✓ Got inventory | |
| ✓ Got inventory getter | |
| Test ASAP invocation | |
| ✓ Default runtime passed correct path | |
| ✓ Default runtime ran with correct timeout | |
| ✓ Default runtime received event | |
| Verify call counts from runtime invocations | |
| ✓ ASAP called correct number of times | |
| ✓ Deno called correct number of times | |
| ✓ Node called correct number of times | |
| ✓ Python called correct number of times | |
| ✓ Ruby called correct number of times | |
| Set up env | |
| ✓ Found sandbox | |
| ✓ Found sandbox.start | |
| ✓ Found sandbox.end | |
| Sandbox returns a Promise | |
| ✓ sandbox.start returned Promise (without params) | |
| ✓ sandbox.end returned Promise (without params) | |
| ✓ sandbox.end resolved and returned string: Sandbox successfully shut down | |
| ✓ Sandbox successfully shut down (sandbox.end()) | |
| App ⌁ app-default | |
| Region ⌁ us-west-2 | |
| Profile ⌁ @aws profile / AWS_PROFILE not configured | |
| Version ⌁ – | |
| cwd ⌁ /Users/lpsinger/src/@architect/sandbox | |
| ⚠️ Warning: No Architect project manifest found, using default project | |
| ✓ Sandbox @http (HTTP API mode / Lambda proxy v2.0 format / live reload) routes | |
| get /* .......................................... public/ | |
| http://localhost:3333 | |
| ✓ Sandbox Started in 13ms | |
| ❤︎ Local environment ready! | |
| ✓ sandbox.start returned Promise (with params) | |
| ✓ sandbox.end returned Promise (without params) | |
| ✓ sandbox.end resolved and returned string: Sandbox successfully shut down | |
| ✓ Sandbox successfully shut down (sandbox.end()) | |
| Sandbox uses continuation passing | |
| App ⌁ app-default | |
| Region ⌁ us-west-2 | |
| Profile ⌁ @aws profile / AWS_PROFILE not configured | |
| Version ⌁ – | |
| cwd ⌁ /Users/lpsinger/src/@architect/sandbox | |
| ⚠️ Warning: No Architect project manifest found, using default project | |
| ✓ Sandbox @http (HTTP API mode / Lambda proxy v2.0 format / live reload) routes | |
| get /* .......................................... public/ | |
| http://localhost:3333 | |
| ✓ Sandbox Started in 9ms | |
| ❤︎ Local environment ready! | |
| ✓ sandbox.start executed callback (null params) | |
| ✓ sandbox.end executed callback | |
| ✓ Sandbox successfully shut down (sandbox.end()) | |
| App ⌁ app-default | |
| Region ⌁ us-west-2 | |
| Profile ⌁ @aws profile / AWS_PROFILE not configured | |
| Version ⌁ – | |
| cwd ⌁ /Users/lpsinger/src/@architect/sandbox | |
| ⚠️ Warning: No Architect project manifest found, using default project | |
| ✓ Sandbox @http (HTTP API mode / Lambda proxy v2.0 format / live reload) routes | |
| get /* .......................................... public/ | |
| http://localhost:3333 | |
| ✓ Sandbox Started in 6ms | |
| ❤︎ Local environment ready! | |
| ✓ sandbox.start executed callback (with params) | |
| ✓ sandbox.end executed callback | |
| ✓ Sandbox successfully shut down (sandbox.end()) | |
| Sandbox only minimally mutates env vars | |
| ✓ Sandbox env vars cleaned | |
| ✗ [1156] ReferenceError: AWS credentials file found without a 'default' profile; you must add a default profile, specify a different profile, or remove your credentials file | |
| Expected error to be falsy | |
| ✗ [1157] plan != count | |
| Explicit fail | |
| Teardown | |
| ✓ Sandbox env vars cleaned | |
| Set up env | |
| ✓ Version check module is present | |
| Project global runtime config | |
| ✓ Control: no runtime configuration did not return any issues | |
| ✓ Control: compatible runtime configuration did not return any issues | |
| Project global runtime - configured version: nodejs16.x (aliased to node), local version: 10.0.0 | |
| ✓ Reported issue with project global runtime | |
| ✓ Reported issue with alias | |
| ✓ Compatible runtime configuration did not return any issues | |
| Project global runtime - configured version: nodejs18.x, local version: 16.0.0 | |
| ✓ Reported issue with project global runtime | |
| Project global runtime - configured version: python3.9 (aliased to python), local version: 10.0.0 | |
| ✓ Reported issue with project global runtime | |
| ✓ Reported issue with alias | |
| Project global runtime - configured version: python3.8, local version: 3.7.0 | |
| ✓ Reported issue with project global runtime | |
| Project global runtime - configured version: python3.8, local version: 2.8.0 | |
| ✓ Reported issue with project global runtime | |
| Project global runtime - configured version: ruby2.7 (aliased to ruby), local version: 10.0.0 | |
| ✓ Reported issue with project global runtime | |
| ✓ Reported issue with alias | |
| Project global runtime - configured version: ruby2.7, local version: 2.6.0 | |
| ✓ Reported issue with project global runtime | |
| Project global runtime - configured version: ruby2.7, local version: 1.7.0 | |
| ✓ Reported issue with project global runtime | |
| Per-Lambda runtime config | |
| ✓ Control: no runtime configuration did not return any issues | |
| ✓ Control: compatible runtime configuration did not return any issues | |
| ✓ Compatible runtime configuration did not return any issues | |
| src/http/get-index - configured version: nodejs18.x, local version: 16.0.0 | |
| ✓ Reported issue with Lambda runtime | |
| src/http/get-index - configured version: python3.8, local version: 3.7.0 | |
| ✓ Reported issue with Lambda runtime | |
| src/http/get-index - configured version: python3.8, local version: 2.8.0 | |
| ✓ Reported issue with Lambda runtime | |
| src/http/get-index - configured version: ruby2.7, local version: 2.6.0 | |
| ✓ Reported issue with Lambda runtime | |
| src/http/get-index - configured version: ruby2.7, local version: 1.7.0 | |
| ✓ Reported issue with Lambda runtime | |
| Set up env | |
| ✓ Env var swap module is present | |
| Swap + restore env vars without conflict | |
| ✓ Swapped in env vars | |
| ✓ Restored env vars | |
| Swap + restore env vars with conflict | |
| ✓ Swapped in env vars | |
| ✓ Restored env vars | |
| Set up env | |
| ✓ Port module is present | |
| Ports do (almost) nothing | |
| ✗ [1188] Got back internal _arc services port | |
| Object { | |
| "_arc": 2223 | |
| "_arc": 2222 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:51:5) | |
| HTTP port selection | |
| ✗ [1189] Got back default HTTP port | |
| Object { | |
| "_arc": 2223, | |
| "_arc": 2222, | |
| "http": 3333 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:62:5) | |
| ✗ [1190] Got back HTTP port from prefs.arc | |
| Object { | |
| "_arc": 2223, | |
| "_arc": 2222, | |
| "http": 1234 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:70:5) | |
| ✗ [1191] Got back default port API option | |
| Object { | |
| "_arc": 2223, | |
| "_arc": 2222, | |
| "http": 1234 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:76:5) | |
| ✗ [1192] Got back HTTP from ARC_HTTP_PORT env var | |
| Object { | |
| "_arc": 2223, | |
| "_arc": 2222, | |
| "http": 2345 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:82:5) | |
| ✗ [1193] Got back HTTP from PORT env var | |
| Object { | |
| "_arc": 2223, | |
| "_arc": 2222, | |
| "http": 2345 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:88:5) | |
| ✗ [1194] Got back default HTTP port for @static | |
| Object { | |
| "_arc": 2223, | |
| "_arc": 2222, | |
| "http": 3333 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:95:5) | |
| ✗ [1195] Got back default HTTP port for @ws | |
| Object { | |
| "_arc": 2223, | |
| "_arc": 2222, | |
| "http": 3333 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:101:5) | |
| ✓ Got error: Port 3333 (http) is already in use, please select another with prefs.arc See https://arc.codes/docs/en/reference/configuration/local-preferences#ports---list for config | |
| Events port selection | |
| ✗ [1197] Got back default events port | |
| Object { | |
| "_arc": 2223, | |
| "_arc": 2222, | |
| "events": 4444 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:124:5) | |
| ✗ [1198] Got back events port from prefs.arc | |
| Object { | |
| "_arc": 2223, | |
| "_arc": 2222, | |
| "events": 1234 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:132:5) | |
| ✗ [1199] Got back queues port from prefs.arc | |
| Object { | |
| "_arc": 2223, | |
| "_arc": 2222, | |
| "events": 1234 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:139:5) | |
| ✗ [1200] Got back default queues port | |
| Object { | |
| "_arc": 2223, | |
| "_arc": 2222, | |
| "events": 4444 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:145:5) | |
| ✗ [1201] Automatically found port when default events port was occupied | |
| Object { | |
| "_arc": 2223, | |
| "_arc": 2222, | |
| "events": 4445 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:152:5) | |
| ✓ Got error: Port 4444 (events) is already in use, please select another with prefs.arc See https://arc.codes/docs/en/reference/configuration/local-preferences#ports---list for config | |
| Tables port selection | |
| ✗ [1203] Got back default tables port | |
| Object { | |
| "_arc": 2223, | |
| "tables": 5556 | |
| "_arc": 2222, | |
| "tables": 5555 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:177:5) | |
| ✗ [1204] Got back default tables port when default manifest is used | |
| Object { | |
| "_arc": 2223, | |
| "tables": 5556 | |
| "_arc": 2222, | |
| "tables": 5555 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:183:5) | |
| ✗ [1205] Got back tables port from prefs.arc | |
| Object { | |
| "_arc": 2223, | |
| "_arc": 2222, | |
| "tables": 1234 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:191:5) | |
| ✗ [1206] Got back occupied tables port for external DB | |
| Object { | |
| "_arc": 2223, | |
| "_arc": 2222, | |
| "tables": 2345 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:200:5) | |
| ✗ [1207] Error: listen EADDRINUSE: address already in use :::5555 | |
| Explicit fail | |
| At: Server.<anonymous> (/test/unit/src/sandbox/ports-test.js:17:9) | |
| ✗ [1208] (unnamed assert) | |
| Explicit fail | |
| _arc port selection | |
| ✗ [1209] Got back default _arc port | |
| Object { | |
| "_arc": 2223 | |
| "_arc": 2222 | |
| } | |
| At: Test.<anonymous> (/test/unit/src/sandbox/ports-test.js:236:5) | |
| ✗ [1210] Error: listen EADDRINUSE: address already in use :::2222 | |
| Explicit fail | |
| At: Server.<anonymous> (/test/unit/src/sandbox/ports-test.js:17:9) | |
| ✗ [1211] (unnamed assert) | |
| Explicit fail | |
| ✗ [1212] plan != count | |
| Explicit fail | |
| Specified port conflict |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment