Agent config
✔ should get agent instance through custom config
(node:1802) [DEP0112] DeprecationWarning: Socket.prototype._bindState is deprecated
(Use node --trace-deprecation ... to show where the warning was created)
✔ should get agent instance through custom socket
Agent
✔ should exit with no requests in flight
✔ should allow to close the agent
✔ should reuse the same socket for multiple requests
✔ should calculate the messageIds module 16 bytes
✔ should differentiate two requests with different tokens
✔ should differentiate two requests with different messageIds
✔ should forward the response to the correct request
✔ should discard the request after receiving the payload for NON requests
✔ should be able to handle undefined Content-Formats
✔ should be able to handle unallowed Content-Formats
✔ should discard the request after receiving the payload for piggyback CON requests
✔ should close the socket if there are no pending requests
✔ should send only RST for unrecognized CON
observe problems
✔ should discard the request after receiving the payload for piggyback CON requests with observe request
✔ should close the socket if there are no pending requests
✔ should allow observe with non-confirmable requests
blockwise2
✔ should server not use blockwise in response when payload fit in one packet
✔ should use blockwise in response when payload bigger than max packet
✔ should blockwise response have etag
✔ should accept early negotation
✔ should receive error when early negotation request block size higher than 1024
✔ should receive error request for out of range block number
✔ should be able to receive part of message
✔ should receive full response payload (45ms)
✔ should two parallel block2 requests should result only two requests to upper level (155ms)
✔ should have code 2.05 for all block2 messages of successful parallel requests (153ms)
✔ should have correct block2 option for parallel requests (152ms)
✔ should have correct payload in block2 messages for parallel requests (155ms)
✔ should support the Size2 option
blockwise1
Generate Block Options
✔ it should return buffer
✔ it should return buffer equal to 1,0,1
✔ it should return buffer equal to 1,1
✔ it should throw Invalid Parameters error
✔ it should throw Sequence error
Parse Block Options
✔ it should return object
✔ it should return object when length is equal to 2
✔ it should return object when length is equal to 3
✔ it should throw Invalid Block Option error
Exponenent to Byte Size
✔ it should return value
Byte Size to Exponenet
✔ it should return value
Cache
Block Cache
✔ Should set up empty cache object
Reset
✔ Should reset all caches
Add
✔ Should add to cache
Remove
✔ Should from cache
Contains
✔ Should check if value exists & return true
✔ Should check if value exists & return false
Get
✔ Should return payload from cache
Get with default insert
✔ Should return payload from cache if it exists
✔ Should add to cache if it doesnt exist
end-to-end
✔ should receive a request at a path with some query
✔ should return code 2.05 by default
✔ should return code using res.code attribute
✔ should return code using res.statusCode attribute
✔ should support observing
✔ should support a 4.04 observe request
✔ should support a 4.04 observe request and emit an end event in the response
✔ should normalize strings using NFC
✔ should allow encoding with 'Content-Format'
✔ should allow option 'Max-Age'
✔ should allow option 'Size2'
✔ should allow option 'Size1'
✔ should provide a writeHead() method
✔ should set and parse 'Location-Path'
✔ should set and parse 'Location-Query'
✔ should support multiple observe to the same destination
✔ should reuse the same socket for two concurrent requests
✔ should create two sockets for two subsequent requests
✔ should use the port binded in the agent
✔ should ignore ignored options
formats
✔ should pass the 'Accept: text/plain' option to the server
✔ should pass the 'Accept: text/plain' option to the server if passed alongside the url
✔ should pass the 'Accept: text/plain' headers to the server if passed alongside the url
✔ should pass the 'Accept: text/plain' header to the server
✔ should pass the 'Accept: application/link-format' option to the server
✔ should pass the 'Accept: application/link-format' option to the server if passed alongside the url
✔ should pass the 'Accept: application/link-format' headers to the server if passed alongside the url
✔ should pass the 'Accept: application/link-format' header to the server
✔ should pass the 'Accept: application/xml' option to the server
✔ should pass the 'Accept: application/xml' option to the server if passed alongside the url
✔ should pass the 'Accept: application/xml' headers to the server if passed alongside the url
✔ should pass the 'Accept: application/xml' header to the server
✔ should pass the 'Accept: application/octet-stream' option to the server
✔ should pass the 'Accept: application/octet-stream' option to the server if passed alongside the url
✔ should pass the 'Accept: application/octet-stream' headers to the server if passed alongside the url
✔ should pass the 'Accept: application/octet-stream' header to the server
✔ should pass the 'Accept: application/exi' option to the server
✔ should pass the 'Accept: application/exi' option to the server if passed alongside the url
✔ should pass the 'Accept: application/exi' headers to the server if passed alongside the url
✔ should pass the 'Accept: application/exi' header to the server
✔ should pass the 'Accept: application/json' option to the server
✔ should pass the 'Accept: application/json' option to the server if passed alongside the url
✔ should pass the 'Accept: application/json' headers to the server if passed alongside the url
✔ should pass the 'Accept: application/json' header to the server
✔ should pass the 'Accept: application/cbor' option to the server
✔ should pass the 'Accept: application/cbor' option to the server if passed alongside the url
✔ should pass the 'Accept: application/cbor' headers to the server if passed alongside the url
✔ should pass the 'Accept: application/cbor' header to the server
✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' option to the server
✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' option to the server if passed alongside the url
✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' headers to the server if passed alongside the url
✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' header to the server
✔ should pass the 'Content-Format: text/plain' option to the server
✔ should pass the 'Content-Format: text/plain' option to the server if passed alongside the url
✔ should pass the 'Content-Format: text/plain' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: text/plain' header to the server
✔ should pass the 'Content-Format: application/link-format' option to the server
✔ should pass the 'Content-Format: application/link-format' option to the server if passed alongside the url
✔ should pass the 'Content-Format: application/link-format' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: application/link-format' header to the server
✔ should pass the 'Content-Format: application/xml' option to the server
✔ should pass the 'Content-Format: application/xml' option to the server if passed alongside the url
✔ should pass the 'Content-Format: application/xml' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: application/xml' header to the server
✔ should pass the 'Content-Format: application/octet-stream' option to the server
✔ should pass the 'Content-Format: application/octet-stream' option to the server if passed alongside the url
✔ should pass the 'Content-Format: application/octet-stream' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: application/octet-stream' header to the server
✔ should pass the 'Content-Format: application/exi' option to the server
✔ should pass the 'Content-Format: application/exi' option to the server if passed alongside the url
✔ should pass the 'Content-Format: application/exi' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: application/exi' header to the server
✔ should pass the 'Content-Format: application/json' option to the server
✔ should pass the 'Content-Format: application/json' option to the server if passed alongside the url
✔ should pass the 'Content-Format: application/json' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: application/json' header to the server
✔ should pass the 'Content-Format: application/cbor' option to the server
✔ should pass the 'Content-Format: application/cbor' option to the server if passed alongside the url
✔ should pass the 'Content-Format: application/cbor' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: application/cbor' header to the server
✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' option to the server
✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' option to the server if passed alongside the url
✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' header to the server
✔ should pass the 'Content-Format: text/plain' option to the client
✔ should pass the 'Content-Format: application/link-format' option to the client (58ms)
✔ should pass the 'Content-Format: application/xml' option to the client
✔ should pass the 'Content-Format: application/octet-stream' option to the client
✔ should pass the 'Content-Format: application/exi' option to the client
✔ should pass the 'Content-Format: application/json' option to the client
✔ should pass the 'Content-Format: application/cbor' option to the client
✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' option to the client
Helpers
Has Options
✔ Should return true
✔ Should return null
Get Options
✔ Should return option value
✔ Should return null
Remove Options
✔ Should return true
✔ Should return false
Parse Block2
✔ Should have case 3 equal 4128
✔ Should return null
✔ Should parse a zero length buffer
Create Block2
✔ Should return a buffer carrying a block 2 value
✔ Should return null
Convert Codes
✔ Should keep codes with type string
✔ Should convert numeric codes with zeros inbetween
✔ Should convert numeric codes
IPv6
server
✔ should receive a CoAP message specifying the type
✔ should automatically discover the type based on the host
request
✔ should send the data to the server (URL param)
✔ should send the data to the server (hostname + port in object)
✔ should send the data to the server (host + port in object)
end-to-end
✔ should receive a request at a path with some query
Parameters
✔ should ignore empty parameter
✔ should verify custom timings
✔ should verify default timings
proxy
✔ should resend the message to its destination specified in the Proxy-Uri option
✔ should resend notifications in an observe connection (502ms)
✔ should not process the request as a standard server request
✔ should return the target response to the original requestor
with a proxied request initiated by an agent
✔ should forward the request to the URI specified in proxyUri
✔ should forward the response to the request back to the agent
with a proxied request with a wrong destination
✔ should return an error to the caller (1019ms)
with a non-proxied request
✔ should call the handler as usual
with an observe request to a proxied server
✔ should call the handler as usual
✔ should allow all the responses
request
✔ should return a pipeable stream
✔ should send the data to the server
✔ should send a confirmable message by default
✔ should emit the errors in the req
✔ should error if the message is too big
✔ should imply a default port
✔ should send the path to the server
✔ should send a longer path to the server
✔ should accept an object instead of a string
✔ should send a query string to the server
✔ should accept a method parameter
✔ should accept a token parameter
✔ should ignore empty token parameter
✔ should reject too long token
✔ should emit a response with a piggyback CON message
✔ should emit a response with a delayed CON message
✔ should send an ACK back after receiving a CON response
✔ should not emit a response with an ack
✔ should emit a response with a NON message
✔ should emit a response on reset
✔ should stop retrying on reset
✔ should not send response to invalid packets
✔ should allow to add an option
✔ should attempt to normalize option case
✔ should be able to include accept and Content-Format parameters
✔ should overwrite the option
✔ should alias setOption to setHeader
✔ should set multiple options
✔ should alias the 'Content-Format' option to 'Content-Type'
✔ should not crash with two CON responses with the same messageId & token
✔ should include 'ETag' in the response headers
✔ should include original and destination socket information in the response
with the 'Content-Format' header in the outgoing message
✔ should parse text/plain
✔ should parse application/link-format
✔ should parse application/xml
✔ should parse application/octet-stream
✔ should parse application/exi
✔ should parse application/json
✔ should parse application/cbor
with the 'Accept' header in the outgoing message
✔ should parse text/plain
✔ should parse application/link-format
✔ should parse application/xml
✔ should parse application/octet-stream
✔ should parse application/exi
✔ should parse application/json
✔ should parse application/cbor
with the 'Content-Format' in the response
✔ should parse text/plain
✔ should include text/plain in the headers
✔ should parse application/link-format
✔ should include application/link-format in the headers
✔ should parse application/xml
✔ should include application/xml in the headers
✔ should parse application/octet-stream
✔ should include application/octet-stream in the headers
✔ should parse application/exi
✔ should include application/exi in the headers
✔ should parse application/json
✔ should include application/json in the headers
✔ should parse application/cbor
✔ should include application/cbor in the headers
non-confirmable retries
✔ should timeout after ~202 seconds
✔ should not retry before timeout
✔ should not retry before 45s
✔ should stop retrying if it receives a message
confirmable retries
✔ should error after ~247 seconds
✔ should retry four times before erroring
✔ should retry with the same message id
✔ should retry four times before 45s
✔ should stop retrying if it receives an ack
observe
✔ should ack the update
✔ should emit any more data after close
✔ should send origin and destination socket data along with the response
✔ should emit any more data after close
✔ should send deregister request if close(eager=true)
✔ should send an empty Observe option
✔ should allow user to send Observe=1
✔ should allow multiple notifications
✔ should drop out of order notifications
✔ should allow repeating order after 128 seconds
✔ should allow Observe option 24bit overflow
token
✔ should timeout if the response token size doesn't match the request's
✔ should timeout if the response token content doesn't match the request's
multicast
✔ should be non-confirmable
✔ should be responsed with the same token
✔ should allow for differing MIDs for non-confirmable requests
✔ should allow for block-wise transfer when using multicast
✔ should preserve all listeners when using block-wise transfer and multicast
✔ should ignore multiple responses from the same hostname when using block2 multicast (58ms)
RetrySend
✔ should use the default retry count
✔ should use a custom retry count
✔ should use default retry count, using the retry_send factory method
✔ should use a custom retry count, using the retry_send factory method
Segmentation
Segmented Transmission
✔ Should throw invalid block size error
Set Block Size Exponent
✔ should set bytesize to value
Is Correct Acknowledgement
✔ Should return true
✔ Should return false
Resend Previous Packet
✔ Should increment resend count
✔ Should throw error
Recieve Acknowledgement
✔ Should set resend count to 0
Remaining
✔ Should return a value
server
✔ should receive a CoAP message
✔ should listen when listen() has no argument
✔ should use a custom socket passed to listen()
✔ should use the listener passed as a parameter in the creation
✔ should listen by default to 5683
✔ should receive a request that can be piped
✔ should expose the payload
✔ should include an URL in the request
✔ should include the code
✔ should include a rsinfo
✔ should include the 'GET' method
✔ should include the 'POST' method
✔ should include the 'PUT' method
✔ should include the 'DELETE' method
✔ should include the 'PATCH' method
✔ should include the 'iPATCH' method
✔ should include the FETCH method when a Content-Format is present
✔ should respond with an error to a FETCH request when no Content-Format is present
✔ should include the path in the URL
✔ should include the query in the URL
✔ should include the path and the query in the URL
✔ should expose the options
✔ should include a reset() function in the response
✔ should only close once
✔ should not overwrite existing socket
with the 'Content-Format' header in the request
✔ should parse 'Content-Format: text/plain'
✔ should include 'Content-Format: text/plain' in the headers
✔ should parse 'Accept: text/plain'
✔ should include 'Accept: text/plain' in the headers
✔ should parse 'Content-Format: application/link-format'
✔ should include 'Content-Format: application/link-format' in the headers
✔ should parse 'Accept: application/link-format'
✔ should include 'Accept: application/link-format' in the headers
✔ should parse 'Content-Format: application/xml'
✔ should include 'Content-Format: application/xml' in the headers
✔ should parse 'Accept: application/xml'
✔ should include 'Accept: application/xml' in the headers
✔ should parse 'Content-Format: application/octet-stream'
✔ should include 'Content-Format: application/octet-stream' in the headers
✔ should parse 'Accept: application/octet-stream'
✔ should include 'Accept: application/octet-stream' in the headers
✔ should parse 'Content-Format: application/exi'
✔ should include 'Content-Format: application/exi' in the headers
✔ should parse 'Accept: application/exi'
✔ should include 'Accept: application/exi' in the headers
✔ should parse 'Content-Format: application/json'
✔ should include 'Content-Format: application/json' in the headers
✔ should parse 'Accept: application/json'
✔ should include 'Accept: application/json' in the headers
✔ should parse 'Content-Format: application/cbor'
✔ should include 'Content-Format: application/cbor' in the headers
✔ should parse 'Accept: application/cbor'
✔ should include 'Accept: application/cbor' in the headers
with the 'Content-Format' header and an unknown value in the request
✔ should use the numeric format if the option value is in range
✔ should ignore the option if the option value is not in range
with a non-confirmable message
✔ should reply with a payload to a NON message
✔ should include the original messageId
✔ should include the token
✔ should respond with a different code
✔ should respond with a numeric code
✔ should allow to add an option
✔ should overwrite the option
✔ should alias setOption to setHeader
✔ should set multiple options
✔ should calculate the response only once
✔ should calculate the response twice after the interval
✔ should include 'ETag' in the response options
✔ should include 'Content-Format' in the response options
✔ should reply with a '5.00' if it cannot parse the packet
✔ should not retry sending the response
with a confirmable message
✔ should reply in piggyback
✔ should ack the message if it does not reply in 50ms (50ms)
✔ should reply with a confirmable after an ack
✔ should retry sending the response if it does not receive an ack four times before 45s
✔ should stop resending after it receives an ack
✔ should not resend with a piggyback response
✔ should error if it does not receive an ack four times before ~247s
close
✔ should emit "close" event when closed
✔ should only emit "close" if the server has not already been closed
observe
✔ should return an error when try to observe in a PUT
✔ should return an error when try to observe in a POST
✔ should return an error when try to observe in a DELETE
✔ should return an error when try to observe in a PATCH
✔ should return an error when try to observe in a iPATCH
✔ should include a rsinfo
✔ should emit a request with 'Observe' in the headers
✔ should send multiple messages for multiple writes
✔ should emit a 'finish' if the client do not ack for ~247s
✔ should emit a 'finish' if the client do a reset
✔ should send a 'RST' to the client if the msg.reset() method is invoked
✔ should correctly generate two-byte long sequence numbers
✔ should correctly generate three-byte long sequence numbers
multicast
✔ receive IPv4 CoAP message
✔ receive IPv6 CoAP message
validate custom server options
✔ use custom piggyBackTimeout time
✔ use default piggyBackTimeout time (50ms)
✔ ignore invalid piggyBackTimeout time and use default (50ms)
✔ use default sendAcksForNonConfirmablePackets
✔ define sendAcksForNonConfirmablePackets: true
✔ define sendAcksForNonConfirmablePackets: false
✔ define invalid sendAcksForNonConfirmablePackets setting
✔ should send ACK for non-confirmable message, sendAcksForNonConfirmablePackets=true
✔ should not send ACK for non-confirmable message, sendAcksForNonConfirmablePackets=false
✔ should send ACK for confirmable message, sendAcksForNonConfirmablePackets=true
server LRU
✔ should remove old packets after < exchangeLifetime x 1.5
server block cache
✔ should have block1Cache return {}
✔ should have block2Cache return null
Client Identifier
✔ should share the cache between two requests of the same client
✔ should not share the cache between requests of different clients
share-socket
✔ should receive a request at a path with some query
✔ should return code 2.05 by default
✔ should return code using res.code attribute
✔ should return code using res.statusCode attribute
✔ should support observing
✔ should support a 4.04 observe request
✔ should support a 4.04 observe request and emit an end event in the response
✔ should allow encoding with 'Content-Format'
✔ should allow option 'Max-Age'
✔ should provide a writeHead() method
✔ should set and parse 'Location-Path'
✔ should set and parse 'Location-Query'
✔ should support multiple observe to the same destination
✔ should reuse the same socket for two concurrent requests
✔ should create two sockets for two subsequent requests
✔ should use the port binded in the agent
✔ should ignore ignored options
✔ should error after ~247 seconds
formats
✔ should pass the 'Accept: text/plain' option to the server
✔ should pass the 'Accept: text/plain' option to the server if passed alongside the url
✔ should pass the 'Accept: text/plain' headers to the server if passed alongside the url
✔ should pass the 'Accept: text/plain' header to the server
✔ should pass the 'Accept: application/link-format' option to the server
✔ should pass the 'Accept: application/link-format' option to the server if passed alongside the url
✔ should pass the 'Accept: application/link-format' headers to the server if passed alongside the url
✔ should pass the 'Accept: application/link-format' header to the server
✔ should pass the 'Accept: application/xml' option to the server
✔ should pass the 'Accept: application/xml' option to the server if passed alongside the url
✔ should pass the 'Accept: application/xml' headers to the server if passed alongside the url
✔ should pass the 'Accept: application/xml' header to the server
✔ should pass the 'Accept: application/octet-stream' option to the server
✔ should pass the 'Accept: application/octet-stream' option to the server if passed alongside the url
✔ should pass the 'Accept: application/octet-stream' headers to the server if passed alongside the url
✔ should pass the 'Accept: application/octet-stream' header to the server
✔ should pass the 'Accept: application/exi' option to the server
✔ should pass the 'Accept: application/exi' option to the server if passed alongside the url
✔ should pass the 'Accept: application/exi' headers to the server if passed alongside the url
✔ should pass the 'Accept: application/exi' header to the server
✔ should pass the 'Accept: application/json' option to the server
✔ should pass the 'Accept: application/json' option to the server if passed alongside the url
✔ should pass the 'Accept: application/json' headers to the server if passed alongside the url
✔ should pass the 'Accept: application/json' header to the server
✔ should pass the 'Accept: application/cbor' option to the server
✔ should pass the 'Accept: application/cbor' option to the server if passed alongside the url
✔ should pass the 'Accept: application/cbor' headers to the server if passed alongside the url
✔ should pass the 'Accept: application/cbor' header to the server
✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' option to the server
✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' option to the server if passed alongside the url
✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' headers to the server if passed alongside the url
✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' header to the server
✔ should pass the 'Content-Format: text/plain' option to the server
✔ should pass the 'Content-Format: text/plain' option to the server if passed alongside the url
✔ should pass the 'Content-Format: text/plain' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: text/plain' header to the server
✔ should pass the 'Content-Format: application/link-format' option to the server
✔ should pass the 'Content-Format: application/link-format' option to the server if passed alongside the url
✔ should pass the 'Content-Format: application/link-format' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: application/link-format' header to the server
✔ should pass the 'Content-Format: application/xml' option to the server
✔ should pass the 'Content-Format: application/xml' option to the server if passed alongside the url
✔ should pass the 'Content-Format: application/xml' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: application/xml' header to the server
✔ should pass the 'Content-Format: application/octet-stream' option to the server
✔ should pass the 'Content-Format: application/octet-stream' option to the server if passed alongside the url
✔ should pass the 'Content-Format: application/octet-stream' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: application/octet-stream' header to the server
✔ should pass the 'Content-Format: application/exi' option to the server
✔ should pass the 'Content-Format: application/exi' option to the server if passed alongside the url
✔ should pass the 'Content-Format: application/exi' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: application/exi' header to the server
✔ should pass the 'Content-Format: application/json' option to the server
✔ should pass the 'Content-Format: application/json' option to the server if passed alongside the url
✔ should pass the 'Content-Format: application/json' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: application/json' header to the server
✔ should pass the 'Content-Format: application/cbor' option to the server
✔ should pass the 'Content-Format: application/cbor' option to the server if passed alongside the url
✔ should pass the 'Content-Format: application/cbor' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: application/cbor' header to the server
✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' option to the server
✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' option to the server if passed alongside the url
✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' headers to the server if passed alongside the url
✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' header to the server
✔ should pass the 'Content-Format: text/plain' option to the client
✔ should pass the 'Content-Format: application/link-format' option to the client
✔ should pass the 'Content-Format: application/xml' option to the client
✔ should pass the 'Content-Format: application/octet-stream' option to the client
✔ should pass the 'Content-Format: application/exi' option to the client
✔ should pass the 'Content-Format: application/json' option to the client
✔ should pass the 'Content-Format: application/cbor' option to the client
✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' option to the client
npm run test
Agent config ✔ should get agent instance through custom config (node:1802) [DEP0112] DeprecationWarning: Socket.prototype._bindState is deprecated (Use
node --trace-deprecation ...
to show where the warning was created) ✔ should get agent instance through custom socketAgent ✔ should exit with no requests in flight ✔ should allow to close the agent ✔ should reuse the same socket for multiple requests ✔ should calculate the messageIds module 16 bytes ✔ should differentiate two requests with different tokens ✔ should differentiate two requests with different messageIds ✔ should forward the response to the correct request ✔ should discard the request after receiving the payload for NON requests ✔ should be able to handle undefined Content-Formats ✔ should be able to handle unallowed Content-Formats ✔ should discard the request after receiving the payload for piggyback CON requests ✔ should close the socket if there are no pending requests ✔ should send only RST for unrecognized CON observe problems ✔ should discard the request after receiving the payload for piggyback CON requests with observe request ✔ should close the socket if there are no pending requests ✔ should allow observe with non-confirmable requests
blockwise2 ✔ should server not use blockwise in response when payload fit in one packet ✔ should use blockwise in response when payload bigger than max packet ✔ should blockwise response have etag ✔ should accept early negotation ✔ should receive error when early negotation request block size higher than 1024 ✔ should receive error request for out of range block number ✔ should be able to receive part of message ✔ should receive full response payload (45ms) ✔ should two parallel block2 requests should result only two requests to upper level (155ms) ✔ should have code 2.05 for all block2 messages of successful parallel requests (153ms) ✔ should have correct block2 option for parallel requests (152ms) ✔ should have correct payload in block2 messages for parallel requests (155ms) ✔ should support the Size2 option
blockwise1 Generate Block Options ✔ it should return buffer ✔ it should return buffer equal to 1,0,1 ✔ it should return buffer equal to 1,1 ✔ it should throw Invalid Parameters error ✔ it should throw Sequence error Parse Block Options ✔ it should return object ✔ it should return object when length is equal to 2 ✔ it should return object when length is equal to 3 ✔ it should throw Invalid Block Option error Exponenent to Byte Size ✔ it should return value Byte Size to Exponenet ✔ it should return value
Cache Block Cache ✔ Should set up empty cache object Reset ✔ Should reset all caches Add ✔ Should add to cache Remove ✔ Should from cache Contains ✔ Should check if value exists & return true ✔ Should check if value exists & return false Get ✔ Should return payload from cache Get with default insert ✔ Should return payload from cache if it exists ✔ Should add to cache if it doesnt exist
end-to-end ✔ should receive a request at a path with some query ✔ should return code 2.05 by default ✔ should return code using res.code attribute ✔ should return code using res.statusCode attribute ✔ should support observing ✔ should support a 4.04 observe request ✔ should support a 4.04 observe request and emit an end event in the response ✔ should normalize strings using NFC ✔ should allow encoding with 'Content-Format' ✔ should allow option 'Max-Age' ✔ should allow option 'Size2' ✔ should allow option 'Size1' ✔ should provide a writeHead() method ✔ should set and parse 'Location-Path' ✔ should set and parse 'Location-Query' ✔ should support multiple observe to the same destination ✔ should reuse the same socket for two concurrent requests ✔ should create two sockets for two subsequent requests ✔ should use the port binded in the agent ✔ should ignore ignored options formats ✔ should pass the 'Accept: text/plain' option to the server ✔ should pass the 'Accept: text/plain' option to the server if passed alongside the url ✔ should pass the 'Accept: text/plain' headers to the server if passed alongside the url ✔ should pass the 'Accept: text/plain' header to the server ✔ should pass the 'Accept: application/link-format' option to the server ✔ should pass the 'Accept: application/link-format' option to the server if passed alongside the url ✔ should pass the 'Accept: application/link-format' headers to the server if passed alongside the url ✔ should pass the 'Accept: application/link-format' header to the server ✔ should pass the 'Accept: application/xml' option to the server ✔ should pass the 'Accept: application/xml' option to the server if passed alongside the url ✔ should pass the 'Accept: application/xml' headers to the server if passed alongside the url ✔ should pass the 'Accept: application/xml' header to the server ✔ should pass the 'Accept: application/octet-stream' option to the server ✔ should pass the 'Accept: application/octet-stream' option to the server if passed alongside the url ✔ should pass the 'Accept: application/octet-stream' headers to the server if passed alongside the url ✔ should pass the 'Accept: application/octet-stream' header to the server ✔ should pass the 'Accept: application/exi' option to the server ✔ should pass the 'Accept: application/exi' option to the server if passed alongside the url ✔ should pass the 'Accept: application/exi' headers to the server if passed alongside the url ✔ should pass the 'Accept: application/exi' header to the server ✔ should pass the 'Accept: application/json' option to the server ✔ should pass the 'Accept: application/json' option to the server if passed alongside the url ✔ should pass the 'Accept: application/json' headers to the server if passed alongside the url ✔ should pass the 'Accept: application/json' header to the server ✔ should pass the 'Accept: application/cbor' option to the server ✔ should pass the 'Accept: application/cbor' option to the server if passed alongside the url ✔ should pass the 'Accept: application/cbor' headers to the server if passed alongside the url ✔ should pass the 'Accept: application/cbor' header to the server ✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' option to the server ✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' option to the server if passed alongside the url ✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' headers to the server if passed alongside the url ✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' header to the server ✔ should pass the 'Content-Format: text/plain' option to the server ✔ should pass the 'Content-Format: text/plain' option to the server if passed alongside the url ✔ should pass the 'Content-Format: text/plain' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: text/plain' header to the server ✔ should pass the 'Content-Format: application/link-format' option to the server ✔ should pass the 'Content-Format: application/link-format' option to the server if passed alongside the url ✔ should pass the 'Content-Format: application/link-format' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: application/link-format' header to the server ✔ should pass the 'Content-Format: application/xml' option to the server ✔ should pass the 'Content-Format: application/xml' option to the server if passed alongside the url ✔ should pass the 'Content-Format: application/xml' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: application/xml' header to the server ✔ should pass the 'Content-Format: application/octet-stream' option to the server ✔ should pass the 'Content-Format: application/octet-stream' option to the server if passed alongside the url ✔ should pass the 'Content-Format: application/octet-stream' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: application/octet-stream' header to the server ✔ should pass the 'Content-Format: application/exi' option to the server ✔ should pass the 'Content-Format: application/exi' option to the server if passed alongside the url ✔ should pass the 'Content-Format: application/exi' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: application/exi' header to the server ✔ should pass the 'Content-Format: application/json' option to the server ✔ should pass the 'Content-Format: application/json' option to the server if passed alongside the url ✔ should pass the 'Content-Format: application/json' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: application/json' header to the server ✔ should pass the 'Content-Format: application/cbor' option to the server ✔ should pass the 'Content-Format: application/cbor' option to the server if passed alongside the url ✔ should pass the 'Content-Format: application/cbor' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: application/cbor' header to the server ✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' option to the server ✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' option to the server if passed alongside the url ✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' header to the server ✔ should pass the 'Content-Format: text/plain' option to the client ✔ should pass the 'Content-Format: application/link-format' option to the client (58ms) ✔ should pass the 'Content-Format: application/xml' option to the client ✔ should pass the 'Content-Format: application/octet-stream' option to the client ✔ should pass the 'Content-Format: application/exi' option to the client ✔ should pass the 'Content-Format: application/json' option to the client ✔ should pass the 'Content-Format: application/cbor' option to the client ✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' option to the client
Helpers Has Options ✔ Should return true ✔ Should return null Get Options ✔ Should return option value ✔ Should return null Remove Options ✔ Should return true ✔ Should return false Parse Block2 ✔ Should have case 3 equal 4128 ✔ Should return null ✔ Should parse a zero length buffer Create Block2 ✔ Should return a buffer carrying a block 2 value ✔ Should return null Convert Codes ✔ Should keep codes with type string ✔ Should convert numeric codes with zeros inbetween ✔ Should convert numeric codes
IPv6 server ✔ should receive a CoAP message specifying the type ✔ should automatically discover the type based on the host request ✔ should send the data to the server (URL param) ✔ should send the data to the server (hostname + port in object) ✔ should send the data to the server (host + port in object) end-to-end ✔ should receive a request at a path with some query
Parameters ✔ should ignore empty parameter ✔ should verify custom timings ✔ should verify default timings
proxy ✔ should resend the message to its destination specified in the Proxy-Uri option ✔ should resend notifications in an observe connection (502ms) ✔ should not process the request as a standard server request ✔ should return the target response to the original requestor with a proxied request initiated by an agent ✔ should forward the request to the URI specified in proxyUri ✔ should forward the response to the request back to the agent with a proxied request with a wrong destination ✔ should return an error to the caller (1019ms) with a non-proxied request ✔ should call the handler as usual with an observe request to a proxied server ✔ should call the handler as usual ✔ should allow all the responses
request ✔ should return a pipeable stream ✔ should send the data to the server ✔ should send a confirmable message by default ✔ should emit the errors in the req ✔ should error if the message is too big ✔ should imply a default port ✔ should send the path to the server ✔ should send a longer path to the server ✔ should accept an object instead of a string ✔ should send a query string to the server ✔ should accept a method parameter ✔ should accept a token parameter ✔ should ignore empty token parameter ✔ should reject too long token ✔ should emit a response with a piggyback CON message ✔ should emit a response with a delayed CON message ✔ should send an ACK back after receiving a CON response ✔ should not emit a response with an ack ✔ should emit a response with a NON message ✔ should emit a response on reset ✔ should stop retrying on reset ✔ should not send response to invalid packets ✔ should allow to add an option ✔ should attempt to normalize option case ✔ should be able to include accept and Content-Format parameters ✔ should overwrite the option ✔ should alias setOption to setHeader ✔ should set multiple options ✔ should alias the 'Content-Format' option to 'Content-Type' ✔ should not crash with two CON responses with the same messageId & token ✔ should include 'ETag' in the response headers ✔ should include original and destination socket information in the response with the 'Content-Format' header in the outgoing message ✔ should parse text/plain ✔ should parse application/link-format ✔ should parse application/xml ✔ should parse application/octet-stream ✔ should parse application/exi ✔ should parse application/json ✔ should parse application/cbor with the 'Accept' header in the outgoing message ✔ should parse text/plain ✔ should parse application/link-format ✔ should parse application/xml ✔ should parse application/octet-stream ✔ should parse application/exi ✔ should parse application/json ✔ should parse application/cbor with the 'Content-Format' in the response ✔ should parse text/plain ✔ should include text/plain in the headers ✔ should parse application/link-format ✔ should include application/link-format in the headers ✔ should parse application/xml ✔ should include application/xml in the headers ✔ should parse application/octet-stream ✔ should include application/octet-stream in the headers ✔ should parse application/exi ✔ should include application/exi in the headers ✔ should parse application/json ✔ should include application/json in the headers ✔ should parse application/cbor ✔ should include application/cbor in the headers non-confirmable retries ✔ should timeout after ~202 seconds ✔ should not retry before timeout ✔ should not retry before 45s ✔ should stop retrying if it receives a message confirmable retries ✔ should error after ~247 seconds ✔ should retry four times before erroring ✔ should retry with the same message id ✔ should retry four times before 45s ✔ should stop retrying if it receives an ack observe ✔ should ack the update ✔ should emit any more data after close ✔ should send origin and destination socket data along with the response ✔ should emit any more data after close ✔ should send deregister request if close(eager=true) ✔ should send an empty Observe option ✔ should allow user to send Observe=1 ✔ should allow multiple notifications ✔ should drop out of order notifications ✔ should allow repeating order after 128 seconds ✔ should allow Observe option 24bit overflow token ✔ should timeout if the response token size doesn't match the request's ✔ should timeout if the response token content doesn't match the request's multicast ✔ should be non-confirmable ✔ should be responsed with the same token ✔ should allow for differing MIDs for non-confirmable requests ✔ should allow for block-wise transfer when using multicast ✔ should preserve all listeners when using block-wise transfer and multicast ✔ should ignore multiple responses from the same hostname when using block2 multicast (58ms)
RetrySend ✔ should use the default retry count ✔ should use a custom retry count ✔ should use default retry count, using the retry_send factory method ✔ should use a custom retry count, using the retry_send factory method
Segmentation Segmented Transmission ✔ Should throw invalid block size error Set Block Size Exponent ✔ should set bytesize to value Is Correct Acknowledgement ✔ Should return true ✔ Should return false Resend Previous Packet ✔ Should increment resend count ✔ Should throw error Recieve Acknowledgement ✔ Should set resend count to 0 Remaining ✔ Should return a value
server ✔ should receive a CoAP message ✔ should listen when listen() has no argument ✔ should use a custom socket passed to listen() ✔ should use the listener passed as a parameter in the creation ✔ should listen by default to 5683 ✔ should receive a request that can be piped ✔ should expose the payload ✔ should include an URL in the request ✔ should include the code ✔ should include a rsinfo ✔ should include the 'GET' method ✔ should include the 'POST' method ✔ should include the 'PUT' method ✔ should include the 'DELETE' method ✔ should include the 'PATCH' method ✔ should include the 'iPATCH' method ✔ should include the FETCH method when a Content-Format is present ✔ should respond with an error to a FETCH request when no Content-Format is present ✔ should include the path in the URL ✔ should include the query in the URL ✔ should include the path and the query in the URL ✔ should expose the options ✔ should include a reset() function in the response ✔ should only close once ✔ should not overwrite existing socket with the 'Content-Format' header in the request ✔ should parse 'Content-Format: text/plain' ✔ should include 'Content-Format: text/plain' in the headers ✔ should parse 'Accept: text/plain' ✔ should include 'Accept: text/plain' in the headers ✔ should parse 'Content-Format: application/link-format' ✔ should include 'Content-Format: application/link-format' in the headers ✔ should parse 'Accept: application/link-format' ✔ should include 'Accept: application/link-format' in the headers ✔ should parse 'Content-Format: application/xml' ✔ should include 'Content-Format: application/xml' in the headers ✔ should parse 'Accept: application/xml' ✔ should include 'Accept: application/xml' in the headers ✔ should parse 'Content-Format: application/octet-stream' ✔ should include 'Content-Format: application/octet-stream' in the headers ✔ should parse 'Accept: application/octet-stream' ✔ should include 'Accept: application/octet-stream' in the headers ✔ should parse 'Content-Format: application/exi' ✔ should include 'Content-Format: application/exi' in the headers ✔ should parse 'Accept: application/exi' ✔ should include 'Accept: application/exi' in the headers ✔ should parse 'Content-Format: application/json' ✔ should include 'Content-Format: application/json' in the headers ✔ should parse 'Accept: application/json' ✔ should include 'Accept: application/json' in the headers ✔ should parse 'Content-Format: application/cbor' ✔ should include 'Content-Format: application/cbor' in the headers ✔ should parse 'Accept: application/cbor' ✔ should include 'Accept: application/cbor' in the headers with the 'Content-Format' header and an unknown value in the request ✔ should use the numeric format if the option value is in range ✔ should ignore the option if the option value is not in range with a non-confirmable message ✔ should reply with a payload to a NON message ✔ should include the original messageId ✔ should include the token ✔ should respond with a different code ✔ should respond with a numeric code ✔ should allow to add an option ✔ should overwrite the option ✔ should alias setOption to setHeader ✔ should set multiple options ✔ should calculate the response only once ✔ should calculate the response twice after the interval ✔ should include 'ETag' in the response options ✔ should include 'Content-Format' in the response options ✔ should reply with a '5.00' if it cannot parse the packet ✔ should not retry sending the response with a confirmable message ✔ should reply in piggyback ✔ should ack the message if it does not reply in 50ms (50ms) ✔ should reply with a confirmable after an ack ✔ should retry sending the response if it does not receive an ack four times before 45s ✔ should stop resending after it receives an ack ✔ should not resend with a piggyback response ✔ should error if it does not receive an ack four times before ~247s close ✔ should emit "close" event when closed ✔ should only emit "close" if the server has not already been closed observe ✔ should return an error when try to observe in a PUT ✔ should return an error when try to observe in a POST ✔ should return an error when try to observe in a DELETE ✔ should return an error when try to observe in a PATCH ✔ should return an error when try to observe in a iPATCH ✔ should include a rsinfo ✔ should emit a request with 'Observe' in the headers ✔ should send multiple messages for multiple writes ✔ should emit a 'finish' if the client do not ack for ~247s ✔ should emit a 'finish' if the client do a reset ✔ should send a 'RST' to the client if the msg.reset() method is invoked ✔ should correctly generate two-byte long sequence numbers ✔ should correctly generate three-byte long sequence numbers multicast ✔ receive IPv4 CoAP message ✔ receive IPv6 CoAP message
validate custom server options ✔ use custom piggyBackTimeout time ✔ use default piggyBackTimeout time (50ms) ✔ ignore invalid piggyBackTimeout time and use default (50ms) ✔ use default sendAcksForNonConfirmablePackets ✔ define sendAcksForNonConfirmablePackets: true ✔ define sendAcksForNonConfirmablePackets: false ✔ define invalid sendAcksForNonConfirmablePackets setting ✔ should send ACK for non-confirmable message, sendAcksForNonConfirmablePackets=true ✔ should not send ACK for non-confirmable message, sendAcksForNonConfirmablePackets=false ✔ should send ACK for confirmable message, sendAcksForNonConfirmablePackets=true
server LRU ✔ should remove old packets after < exchangeLifetime x 1.5
server block cache ✔ should have block1Cache return {} ✔ should have block2Cache return null
Client Identifier ✔ should share the cache between two requests of the same client ✔ should not share the cache between requests of different clients
share-socket ✔ should receive a request at a path with some query ✔ should return code 2.05 by default ✔ should return code using res.code attribute ✔ should return code using res.statusCode attribute ✔ should support observing ✔ should support a 4.04 observe request ✔ should support a 4.04 observe request and emit an end event in the response ✔ should allow encoding with 'Content-Format' ✔ should allow option 'Max-Age' ✔ should provide a writeHead() method ✔ should set and parse 'Location-Path' ✔ should set and parse 'Location-Query' ✔ should support multiple observe to the same destination ✔ should reuse the same socket for two concurrent requests ✔ should create two sockets for two subsequent requests ✔ should use the port binded in the agent ✔ should ignore ignored options ✔ should error after ~247 seconds formats ✔ should pass the 'Accept: text/plain' option to the server ✔ should pass the 'Accept: text/plain' option to the server if passed alongside the url ✔ should pass the 'Accept: text/plain' headers to the server if passed alongside the url ✔ should pass the 'Accept: text/plain' header to the server ✔ should pass the 'Accept: application/link-format' option to the server ✔ should pass the 'Accept: application/link-format' option to the server if passed alongside the url ✔ should pass the 'Accept: application/link-format' headers to the server if passed alongside the url ✔ should pass the 'Accept: application/link-format' header to the server ✔ should pass the 'Accept: application/xml' option to the server ✔ should pass the 'Accept: application/xml' option to the server if passed alongside the url ✔ should pass the 'Accept: application/xml' headers to the server if passed alongside the url ✔ should pass the 'Accept: application/xml' header to the server ✔ should pass the 'Accept: application/octet-stream' option to the server ✔ should pass the 'Accept: application/octet-stream' option to the server if passed alongside the url ✔ should pass the 'Accept: application/octet-stream' headers to the server if passed alongside the url ✔ should pass the 'Accept: application/octet-stream' header to the server ✔ should pass the 'Accept: application/exi' option to the server ✔ should pass the 'Accept: application/exi' option to the server if passed alongside the url ✔ should pass the 'Accept: application/exi' headers to the server if passed alongside the url ✔ should pass the 'Accept: application/exi' header to the server ✔ should pass the 'Accept: application/json' option to the server ✔ should pass the 'Accept: application/json' option to the server if passed alongside the url ✔ should pass the 'Accept: application/json' headers to the server if passed alongside the url ✔ should pass the 'Accept: application/json' header to the server ✔ should pass the 'Accept: application/cbor' option to the server ✔ should pass the 'Accept: application/cbor' option to the server if passed alongside the url ✔ should pass the 'Accept: application/cbor' headers to the server if passed alongside the url ✔ should pass the 'Accept: application/cbor' header to the server ✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' option to the server ✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' option to the server if passed alongside the url ✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' headers to the server if passed alongside the url ✔ should pass the 'Accept: application/pkcs7-mime; smime-type=server-generated-key' header to the server ✔ should pass the 'Content-Format: text/plain' option to the server ✔ should pass the 'Content-Format: text/plain' option to the server if passed alongside the url ✔ should pass the 'Content-Format: text/plain' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: text/plain' header to the server ✔ should pass the 'Content-Format: application/link-format' option to the server ✔ should pass the 'Content-Format: application/link-format' option to the server if passed alongside the url ✔ should pass the 'Content-Format: application/link-format' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: application/link-format' header to the server ✔ should pass the 'Content-Format: application/xml' option to the server ✔ should pass the 'Content-Format: application/xml' option to the server if passed alongside the url ✔ should pass the 'Content-Format: application/xml' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: application/xml' header to the server ✔ should pass the 'Content-Format: application/octet-stream' option to the server ✔ should pass the 'Content-Format: application/octet-stream' option to the server if passed alongside the url ✔ should pass the 'Content-Format: application/octet-stream' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: application/octet-stream' header to the server ✔ should pass the 'Content-Format: application/exi' option to the server ✔ should pass the 'Content-Format: application/exi' option to the server if passed alongside the url ✔ should pass the 'Content-Format: application/exi' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: application/exi' header to the server ✔ should pass the 'Content-Format: application/json' option to the server ✔ should pass the 'Content-Format: application/json' option to the server if passed alongside the url ✔ should pass the 'Content-Format: application/json' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: application/json' header to the server ✔ should pass the 'Content-Format: application/cbor' option to the server ✔ should pass the 'Content-Format: application/cbor' option to the server if passed alongside the url ✔ should pass the 'Content-Format: application/cbor' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: application/cbor' header to the server ✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' option to the server ✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' option to the server if passed alongside the url ✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' headers to the server if passed alongside the url ✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' header to the server ✔ should pass the 'Content-Format: text/plain' option to the client ✔ should pass the 'Content-Format: application/link-format' option to the client ✔ should pass the 'Content-Format: application/xml' option to the client ✔ should pass the 'Content-Format: application/octet-stream' option to the client ✔ should pass the 'Content-Format: application/exi' option to the client ✔ should pass the 'Content-Format: application/json' option to the client ✔ should pass the 'Content-Format: application/cbor' option to the client ✔ should pass the 'Content-Format: application/pkcs7-mime; smime-type=server-generated-key' option to the client
475 passing (26s)
~/work/tmp/node-coap$ node -v v20.10.0