Initial Streaming Implementation #232
243 passed, 9 failed and 1 skipped
❌ reports/jest-junit.xml
253 tests were completed in 13s with 243 passed, 9 failed and 1 skipped.
✅ tests/functional/client-configuration.test.ts
ClientConfiguration
✅ Client exposes a default client configuration
✅ can be initialized with an endpoint from the environment
✅ Client respectes passed in client configuration over defaults
✅ A ClientConfiguration setting with no secret throws an error on driver construction
✅ endpoints is extensible
✅ client allows txn time to be set
✅ Setting clientConfiguration linearized leads to it being sent in headers
✅ Setting clientConfiguration max_contention_retries leads to it being sent in headers
✅ Setting clientConfiguration query_tags leads to it being sent in headers
✅ Setting clientConfiguration traceparent leads to it being sent in headers
✅ Setting clientConfiguration typecheck leads to it being sent in headers
✅ can accept endpoints with or without a trailing slash.
✅ throws if client_timeout_buffer_ms provided is undefined
✅ throws if endpoint provided is undefined
✅ throws if format provided is undefined
✅ throws if http2_session_idle_ms provided is undefined
✅ throws if query_timeout_ms provided is undefined
✅ throws if http2_max_streams provided is undefined
✅ throws if fetch_keepalive provided is undefined
✅ throws if long_type provided is undefined
✅ throws a RangeError if 'client_timeout_buffer_ms' is less than or equal to zero
✅ throws a RangeError if 'query_timeout_ms' is less than or equal to zero
✅ throws a RangeError if 'http2_max_streams' is less than or equal to zero
✅ tests/functional/stream-client-configuration.test.ts
StreamClientConfiguration
✅ can be instantiated directly with a token
✅ can be instantiated directly with a lambda
✅ throws a TypeError if long_type provided is undefined
✅ throws a TypeError if httpStreamClient provided is undefined
✅ throws a TypeError if max_backoff provided is undefined
✅ throws a TypeError if max_attempts provided is undefined
✅ throws a TypeError if secret provided is undefined
✅ throws a RangeError if 'max_backoff' is less than or equal to zero
✅ throws a RangeError if 'max_attempts' is less than or equal to zero
✅ tests/integration/client-last-txn-tracking.test.ts
last_txn_ts tracking in client
✅ Tracks the last_txn_ts datetime and send in the headers
✅ Accepts an override of the last_txn_ts datetime and sends in the headers
✅ Ignores overrides of the lastTxnTs that are less than the current value or undefined
✅ tests/integration/doc.test.ts
querying for doc types
✅ can round-trip Module
✅ can round-trip DocumentReference to a non-existent doc
✅ can round-trip DocumentReference to an existent doc
✅ can round-trip Document
✅ can round-trip NamedDocumentReference
✅ can round-trip NamedDocument
✅ get doc types from FQL
✅ tests/integration/existing-collection.test.ts
querying for existing data
✅ Can query an existing index
✅ tests/integration/query-limits.test.ts
Query with limits enabled
⚪ succeeds on retry after getting throttled
✅ tests/integration/query-typings.test.ts
query typings
✅ allows customers to use their own types
paginate typings
✅ allows customers to use their own types
✅ tests/integration/query.test.ts
query
✅ Can query an FQL v10 endpoint
✅ Can query with arguments
✅ Can query with tags
✅ respects QueryRequest field format over ClientConfiguration format
✅ respects QueryRequest field linearized over ClientConfiguration linearized
✅ respects QueryRequest field query_timeout_ms over ClientConfiguration query_timeout_ms
✅ respects QueryRequest field max_contention_retries over ClientConfiguration max_contention_retries
✅ respects QueryRequest field query_tags over ClientConfiguration query_tags
✅ respects QueryRequest field traceparent over ClientConfiguration traceparent
✅ respects QueryRequest field typecheck over ClientConfiguration typecheck
✅ respects typechecked: undefined
✅ can send arguments directly
✅ throws a QueryCheckError if the query is invalid
✅ throws a QueryRuntimeError if the query hits a runtime error
✅ Includes constraint failures when present
✅ throws an InvalidRequestError when request is invalid
✅ throws a AbortError is the `abort` function is called
✅ throws a QueryTimeoutError if the query times out
✅ throws a AuthenticationError creds are invalid
✅ throws a AuthorizationError if creds are not permissioned.
✅ throws a NetworkError if the connection fails.
✅ throws a NetworkError on client timeout
✅ throws a ClientError if the client fails unexpectedly
✅ throws a ProtocolError if the http fails outside Fauna
✅ session is closed regardless of number of clients
✅ can be called after session idle timeout
query can encode / decode QueryValue correctly
✅ treats undefined as unprovided when in object
✅ undefined arguments throw a TypeError
✅ tests/integration/schema-version.test.ts
schema version is returned by the client
✅ returns the schema version
✅ tests/integration/set.test.ts
querying for set
✅ can round-trip Page
SetIterator
✅ can get single page using for..of when the set is small
✅ can get multiple pages using for..of when the set is large
✅ can get pages using next()
✅ can get pages using a loop with next()
✅ can can stop the iterator with the return method
✅ can can stop the iterator with the throw method
✅ can paginate a query that returns a set
✅ can paginate a query that does NOT return a set
✅ can be flattened
✅ each page respects QueryOptions using an existing Page
✅ each page respects QueryOptions using an a query
❌ tests/integration/stream.test.ts
Client
❌ can initiate a stream from a Client
QueryRuntimeError: streams are disabled at the moment.
❌ can initiate a stream from a Client, providing a query
QueryRuntimeError: streams are disabled at the moment.
StreamClient
❌ can initiate a stream
QueryRuntimeError: streams are disabled at the moment.
❌ can initiate a stream with a lambda
QueryRuntimeError: streams are disabled at the moment.
❌ can get events with async iterator
QueryRuntimeError: streams are disabled at the moment.
❌ can get events with callbacks
QueryRuntimeError: streams are disabled at the moment.
✅ catches non 200 responses when establishing a stream
✅ handles non 200 responses via callback when establishing a stream
✅ catches a ServiceError if an error event is received
❌ handles a ServiceError via callback if an error event is received
QueryRuntimeError: streams are disabled at the moment.
❌ decodes values from streams correctly
QueryRuntimeError: streams are disabled at the moment.
❌ yields all events when Fauna sends them as a single chunk
QueryRuntimeError: streams are disabled at the moment.
✅ tests/integration/template-format.test.ts
query using template format
✅ succeeds with no arguments
✅ succeeds with a string variable
✅ succeeds with an Int variable
✅ succeeds with a Long variable
✅ succeeds with a Double variable
✅ succeeds with a boolean variable
✅ succeeds with a null variable
✅ succeeds with an object variable
✅ succeeds with an array variable
✅ succeeds with multiple variables
✅ succeeds with nested expressions
✅ succeeds with deep nested expressions
✅ succeeds with FQL string interpolation
✅ tests/unit/client.test.ts
Client
✅ Allows setting a secret in query
✅ Refuses further requests after close
✅ Refuses calls to close after client is closed.
✅ Allows for creation and usage of a new client after first client closed.
✅ tests/unit/datetime.test.ts
values
✅ can construct TimeStub from strings: Z
✅ can construct TimeStub from strings: - HH:MM
✅ can construct TimeStub from strings: - HHMM
✅ can construct TimeStub from strings: + HH:MM
✅ can construct TimeStub from strings: + HHMM
✅ can construct TimeStub from strings: +yyyyy
✅ can construct TimeStub from strings: -yyyy
✅ can construct DateStub from strings: some date
✅ can construct DateStub from strings: leap year
✅ can construct TimeStub from Date: Z
✅ can construct TimeStub from Date: - HH:MM
✅ can construct TimeStub from Date: + HH:MM
✅ can construct TimeStub from Date: no timezone
✅ can construct TimeStub from Date: no time
✅ can construct DateStub from Date: Z
✅ can construct DateStub from Date: - HH:MM
✅ can construct DateStub from Date: + HH:MM
✅ can construct DateStub from Date: no timezone
✅ can construct DateStub from Date: no time
✅ can deconstruct TimeStub into a Date: Z
✅ can deconstruct TimeStub into a Date: - HH:MM
✅ can deconstruct TimeStub into a Date: - HHMM
✅ can deconstruct TimeStub into a Date: + HH:MM
✅ can deconstruct TimeStub into a Date: + HHMM
✅ can deconstruct TimeStub into a Date: +yyyyy
✅ can deconstruct TimeStub into a Date: -yyyy
✅ can deconstruct DateStub into a Date: some date
✅ can deconstruct DateStub into a Date: leap year
✅ tests/unit/doc.test.ts
Module
✅ can be constructed directly
DocumentReference
✅ can be constructed directly
Document
✅ can be constructed directly
✅ can access user data
NamedDocumentReference
✅ can be constructed directly
NamedDocument
✅ can be constructed without data
✅ can be constructed without data
NullDocument
✅ can be constructed directly with a DocumentReference
✅ can be constructed directly with a NamedDocumentReference
✅ tests/unit/fetch-client.test.ts
fetch client
✅ returns a valid query response on success
✅ returns a valid query response on failure
✅ returns a NetworkError if fetch rejects
✅ returns a NetworkError if client timeout causes an abort
✅ tests/unit/node-http2-client.test.ts
node http2 client
✅ default client for Node.js is the NodeHTTP2Client
✅ tests/unit/package-verison.test.ts
package version
✅ is correct
✅ tests/unit/query-builder.test.ts
fql method producing Querys
✅ parses with no variables
✅ parses with a string variable
✅ parses with a number variable
✅ parses with a boolean variable
✅ parses with a null variable
✅ parses with an object variable
✅ parses with an object variable having a toQuery property
✅ parses with an array variable
✅ parses with multiple variables
✅ parses nested expressions
✅ parses deep nested expressions
✅ adds headers if passed in
✅ parses with FQL string interpolation
✅ tests/unit/query.test.ts
query
✅ throws an [Function AuthorizationError] on a 403
✅ throws an [Function QueryTimeoutError] on a 440
✅ throws an [Function ServiceError] on a 999
✅ throws an [Function ThrottlingError] on a 429
✅ throws an [Function ServiceInternalError] on a 500
✅ throws an [Function ServiceTimeoutError] on a 503
✅ Includes a summary when present in error field
✅ Includes a summary when present in error field
✅ Includes a summary when present in error field
✅ Includes a summary when present in error field
✅ Includes a summary when present in error field
✅ Includes a summary when present in error field
✅ Includes a summary when not present in error field but present at top-level
✅ Includes a summary when not present in error field but present at top-level
✅ Includes a summary when not present in error field but present at top-level
✅ Includes a summary when not present in error field but present at top-level
✅ Includes a summary when not present in error field but present at top-level
✅ Includes a summary when not present in error field but present at top-level
✅ retries throttling errors and then succeeds
✅ Includes a summary in a QueryResult when present at top-level
✅ tests/unit/set.test.ts
Page
✅ can be constructed directly
✅ after is optional
Embedded Set
✅ can be constructed directly
SetIterator
✅ can be constructed from a Page
✅ can be constructed from an EmbeddedSet
✅ can be constructed with an initial thunk for a T
✅ can be constructed with an initial thunk for a Page<T>
✅ can be constructed with an initial thunk for an EmbeddedSet
✅ can be flattened
✅ can flatten a Page
✅ throws if data and after are both undefined
✅ tests/unit/tagged-format.test.ts
tagged format with long_type number
✅ can be decoded
✅ can be encoded
✅ handles conflicts
✅ handles nested conflict types
✅ wraps user-provided `@` fields
✅ Properly encodes and decodes number -(2**63)
✅ Properly encodes and decodes number -(2**53)
✅ Properly encodes and decodes number -(2**53 - 1)
✅ Properly encodes and decodes number -(2**31) - 1
✅ Properly encodes and decodes number -(2**31)
✅ Properly encodes and decodes number 0 (Int)
✅ Properly encodes and decodes number 1 (Int)
✅ Properly encodes and decodes number 0 (Long)
✅ Properly encodes and decodes number 2**31 - 1
✅ Properly encodes and decodes number 2**31
✅ Properly encodes and decodes number 2**53 - 1
✅ Properly encodes and decodes number 2**53
✅ Properly encodes and decodes number 2**64 - 1
✅ Properly encodes and decodes number 1.3**63
✅ Properly encodes and decodes number 1.3
✅ Properly encodes and decodes number 0.000000008
✅ Throws if BigInt value is lower than -(2**63) - 1
✅ Throws if BigInt value is greater than 2**63
✅ Throws if BigInt value is NEGATIVE_INFINITY
✅ Throws if BigInt value is POSITIVE_INFINITY
tagged format with long_type bigint
✅ can be decoded
✅ can be encoded
✅ handles conflicts
✅ handles nested conflict types
✅ wraps user-provided `@` fields
✅ Properly encodes and decodes number -(2**63)
✅ Properly encodes and decodes number -(2**53)
✅ Properly encodes and decodes number -(2**53 - 1)
✅ Properly encodes and decodes number -(2**31) - 1
✅ Properly encodes and decodes number -(2**31)
✅ Properly encodes and decodes number 0 (Int)
✅ Properly encodes and decodes number 1 (Int)
✅ Properly encodes and decodes number 0 (Long)
✅ Properly encodes and decodes number 2**31 - 1
✅ Properly encodes and decodes number 2**31
✅ Properly encodes and decodes number 2**53 - 1
✅ Properly encodes and decodes number 2**53
✅ Properly encodes and decodes number 2**64 - 1
✅ Properly encodes and decodes number 1.3**63
✅ Properly encodes and decodes number 1.3
✅ Properly encodes and decodes number 0.000000008
✅ Throws if BigInt value is lower than -(2**63) - 1
✅ Throws if BigInt value is greater than 2**63
✅ Throws if BigInt value is NEGATIVE_INFINITY
✅ Throws if BigInt value is POSITIVE_INFINITY
Annotations
Check failure on line 496 in src/client.ts
github-actions / Jest Tests 18
__tests__/integration/stream.test.ts ► Client ► can initiate a stream from a Client
Failed test found in:
reports/jest-junit.xml
Error:
QueryRuntimeError: streams are disabled at the moment.
Raw output
QueryRuntimeError: streams are disabled at the moment.
at Client.#getServiceError (/home/runner/work/fauna-js/fauna-js/src/client.ts:496:16)
at Client.#getError (/home/runner/work/fauna-js/fauna-js/src/client.ts:407:37)
at Client.#query (/home/runner/work/fauna-js/fauna-js/src/client.ts:581:29)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at Client.#queryWithRetries (/home/runner/work/fauna-js/fauna-js/src/client.ts:380:14)
at Object.<anonymous> (/home/runner/work/fauna-js/fauna-js/__tests__/integration/stream.test.ts:73:24)
Check failure on line 496 in src/client.ts
github-actions / Jest Tests 18
__tests__/integration/stream.test.ts ► Client ► can initiate a stream from a Client, providing a query
Failed test found in:
reports/jest-junit.xml
Error:
QueryRuntimeError: streams are disabled at the moment.
Raw output
QueryRuntimeError: streams are disabled at the moment.
at Client.#getServiceError (/home/runner/work/fauna-js/fauna-js/src/client.ts:496:16)
at Client.#getError (/home/runner/work/fauna-js/fauna-js/src/client.ts:407:37)
at Client.#query (/home/runner/work/fauna-js/fauna-js/src/client.ts:581:29)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at Client.#queryWithRetries (/home/runner/work/fauna-js/fauna-js/src/client.ts:380:14)
at StreamClient.[Symbol.asyncIterator] (/home/runner/work/fauna-js/fauna-js/src/client.ts:769:27)
at Object.<anonymous> (/home/runner/work/fauna-js/fauna-js/__tests__/integration/stream.test.ts:98:24)
Check failure on line 496 in src/client.ts
github-actions / Jest Tests 18
__tests__/integration/stream.test.ts ► StreamClient ► can initiate a stream
Failed test found in:
reports/jest-junit.xml
Error:
QueryRuntimeError: streams are disabled at the moment.
Raw output
QueryRuntimeError: streams are disabled at the moment.
at Client.#getServiceError (/home/runner/work/fauna-js/fauna-js/src/client.ts:496:16)
at Client.#getError (/home/runner/work/fauna-js/fauna-js/src/client.ts:407:37)
at Client.#query (/home/runner/work/fauna-js/fauna-js/src/client.ts:581:29)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at Client.#queryWithRetries (/home/runner/work/fauna-js/fauna-js/src/client.ts:380:14)
at Object.<anonymous> (/home/runner/work/fauna-js/fauna-js/__tests__/integration/stream.test.ts:114:24)
Check failure on line 496 in src/client.ts
github-actions / Jest Tests 18
__tests__/integration/stream.test.ts ► StreamClient ► can initiate a stream with a lambda
Failed test found in:
reports/jest-junit.xml
Error:
QueryRuntimeError: streams are disabled at the moment.
Raw output
QueryRuntimeError: streams are disabled at the moment.
at Client.#getServiceError (/home/runner/work/fauna-js/fauna-js/src/client.ts:496:16)
at Client.#getError (/home/runner/work/fauna-js/fauna-js/src/client.ts:407:37)
at Client.#query (/home/runner/work/fauna-js/fauna-js/src/client.ts:581:29)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at Client.#queryWithRetries (/home/runner/work/fauna-js/fauna-js/src/client.ts:380:14)
at StreamClient.getToken (/home/runner/work/fauna-js/fauna-js/__tests__/integration/stream.test.ts:139:26)
at StreamClient.[Symbol.asyncIterator] (/home/runner/work/fauna-js/fauna-js/src/client.ts:769:27)
at Object.<anonymous> (/home/runner/work/fauna-js/fauna-js/__tests__/integration/stream.test.ts:150:24)
Check failure on line 496 in src/client.ts
github-actions / Jest Tests 18
__tests__/integration/stream.test.ts ► StreamClient ► can get events with async iterator
Failed test found in:
reports/jest-junit.xml
Error:
QueryRuntimeError: streams are disabled at the moment.
Raw output
QueryRuntimeError: streams are disabled at the moment.
at Client.#getServiceError (/home/runner/work/fauna-js/fauna-js/src/client.ts:496:16)
at Client.#getError (/home/runner/work/fauna-js/fauna-js/src/client.ts:407:37)
at Client.#query (/home/runner/work/fauna-js/fauna-js/src/client.ts:581:29)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at Client.#queryWithRetries (/home/runner/work/fauna-js/fauna-js/src/client.ts:380:14)
at Object.<anonymous> (/home/runner/work/fauna-js/fauna-js/__tests__/integration/stream.test.ts:164:24)
Check failure on line 496 in src/client.ts
github-actions / Jest Tests 18
__tests__/integration/stream.test.ts ► StreamClient ► can get events with callbacks
Failed test found in:
reports/jest-junit.xml
Error:
QueryRuntimeError: streams are disabled at the moment.
Raw output
QueryRuntimeError: streams are disabled at the moment.
at Client.#getServiceError (/home/runner/work/fauna-js/fauna-js/src/client.ts:496:16)
at Client.#getError (/home/runner/work/fauna-js/fauna-js/src/client.ts:407:37)
at Client.#query (/home/runner/work/fauna-js/fauna-js/src/client.ts:581:29)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at Client.#queryWithRetries (/home/runner/work/fauna-js/fauna-js/src/client.ts:380:14)
at Object.<anonymous> (/home/runner/work/fauna-js/fauna-js/__tests__/integration/stream.test.ts:195:22)
Check failure on line 496 in src/client.ts
github-actions / Jest Tests 18
__tests__/integration/stream.test.ts ► StreamClient ► handles a ServiceError via callback if an error event is received
Failed test found in:
reports/jest-junit.xml
Error:
QueryRuntimeError: streams are disabled at the moment.
Raw output
QueryRuntimeError: streams are disabled at the moment.
at Client.#getServiceError (/home/runner/work/fauna-js/fauna-js/src/client.ts:496:16)
at Client.#getError (/home/runner/work/fauna-js/fauna-js/src/client.ts:407:37)
at Client.#query (/home/runner/work/fauna-js/fauna-js/src/client.ts:581:29)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at Client.#queryWithRetries (/home/runner/work/fauna-js/fauna-js/src/client.ts:380:14)
at Object.<anonymous> (/home/runner/work/fauna-js/fauna-js/__tests__/integration/stream.test.ts:302:22)
Check failure on line 496 in src/client.ts
github-actions / Jest Tests 18
__tests__/integration/stream.test.ts ► StreamClient ► decodes values from streams correctly
Failed test found in:
reports/jest-junit.xml
Error:
QueryRuntimeError: streams are disabled at the moment.
Raw output
QueryRuntimeError: streams are disabled at the moment.
at Client.#getServiceError (/home/runner/work/fauna-js/fauna-js/src/client.ts:496:16)
at Client.#getError (/home/runner/work/fauna-js/fauna-js/src/client.ts:407:37)
at Client.#query (/home/runner/work/fauna-js/fauna-js/src/client.ts:581:29)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at Client.#queryWithRetries (/home/runner/work/fauna-js/fauna-js/src/client.ts:380:14)
at Object.<anonymous> (/home/runner/work/fauna-js/fauna-js/__tests__/integration/stream.test.ts:338:24)
Check failure on line 496 in src/client.ts
github-actions / Jest Tests 18
__tests__/integration/stream.test.ts ► StreamClient ► yields all events when Fauna sends them as a single chunk
Failed test found in:
reports/jest-junit.xml
Error:
QueryRuntimeError: streams are disabled at the moment.
Raw output
QueryRuntimeError: streams are disabled at the moment.
at Client.#getServiceError (/home/runner/work/fauna-js/fauna-js/src/client.ts:496:16)
at Client.#getError (/home/runner/work/fauna-js/fauna-js/src/client.ts:407:37)
at Client.#query (/home/runner/work/fauna-js/fauna-js/src/client.ts:581:29)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at Client.#queryWithRetries (/home/runner/work/fauna-js/fauna-js/src/client.ts:380:14)
at Object.<anonymous> (/home/runner/work/fauna-js/fauna-js/__tests__/integration/stream.test.ts:394:24)