Skip to content

Instantly share code, notes, and snippets.

@lpsinger
Created November 20, 2023 17:50
Show Gist options
  • Select an option

  • Save lpsinger/d445f68c95614d6c747aa41bc5921d55 to your computer and use it in GitHub Desktop.

Select an option

Save lpsinger/d445f68c95614d6c747aa41bc5921d55 to your computer and use it in GitHub Desktop.
@architect/sandbox test failure
$ 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