Skip to content

Uncaught Error: FIRESTORE (5.5.9) INTERNAL ASSERTION FAILED for two server timestamps #47

@dennis-tra

Description

@dennis-tra

Hey there,

I'm playing around with the firestore-emulator typescript test setup. Unfortunately when I add another server timestamp to one of the assertions I get an error. I changed the following test case to have an additional updatedAt field (line 92 in quickstart-nodejs/firestore-emulator/typescript-quickstart/test.ts):

  @test
  async "should only let users create their own profile"() {
    const db = authedApp({ uid: "alice" });
    await firebase.assertSucceeds(
      db
        .collection("users")
        .doc("alice")
        .set({
          birthday: "January 1",
          createdAt: firebase.firestore.FieldValue.serverTimestamp(),
          updatedAt: firebase.firestore.FieldValue.serverTimestamp(), <---- this is new
        })
    );
    await firebase.assertFails(
      db
        .collection("users")
        .doc("bob")
        .set({
          birthday: "January 1",
          createdAt: firebase.firestore.FieldValue.serverTimestamp()
        })
    );
  }

When running npm test I get the following error:


> cloud-firestore-emulator-typescript-quickstart@1.0.1 pretest /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart
> tsc


> cloud-firestore-emulator-typescript-quickstart@1.0.1 test /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart
> FIREBASE_FIRESTORE_EMULATOR_ADDRESS='127.0.0.1:8080' mocha



  MyApp
    ✓ require users to log in before creating a profile (76ms)
    ✓ should enforce the createdAt date in user profiles (90ms)
    1) should only let users create their own profile
    2) "after each" hook for "should only let users create their own profile"


  2 passing (310ms)
  2 failing

  1) MyApp
       should only let users create their own profile:
     Uncaught Error: FIRESTORE (5.5.9) INTERNAL ASSERTION FAILED: server transform result count (1) should match field transform count (2)
      at fail (node_modules/@firebase/firestore/dist/index.node.cjs.js:153:11)
      at assert (node_modules/@firebase/firestore/dist/index.node.cjs.js:161:9)
      at TransformMutation.serverTransformResults (node_modules/@firebase/firestore/dist/index.node.cjs.js:3867:9)
      at TransformMutation.applyToRemoteDocument (node_modules/@firebase/firestore/dist/index.node.cjs.js:3819:37)
      at MutationBatch.applyToRemoteDocument (node_modules/@firebase/firestore/dist/index.node.cjs.js:7501:37)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:12302:33
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:63
      at PersistencePromise.wrapUserFunction (node_modules/@firebase/firestore/dist/index.node.cjs.js:7750:26)
      at PersistencePromise.wrapSuccess (node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:25)
      at PersistencePromise.next (node_modules/@firebase/firestore/dist/index.node.cjs.js:7725:29)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:12297:18
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:4320:13
      at LLRBNode.inorderTraversal (node_modules/@firebase/firestore/dist/index.node.cjs.js:1832:13)
      at SortedMap.inorderTraversal (node_modules/@firebase/firestore/dist/index.node.cjs.js:1708:26)
      at SortedSet.forEach (node_modules/@firebase/firestore/dist/index.node.cjs.js:4319:19)
      at LocalStore.applyWriteToRemoteDocuments (node_modules/@firebase/firestore/dist/index.node.cjs.js:12292:17)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:11950:30
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:63
      at PersistencePromise.wrapUserFunction (node_modules/@firebase/firestore/dist/index.node.cjs.js:7750:26)
      at PersistencePromise.wrapSuccess (node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:25)
      at PersistencePromise.next (node_modules/@firebase/firestore/dist/index.node.cjs.js:7725:29)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:11949:18
      at MemoryPersistence.runTransaction (node_modules/@firebase/firestore/dist/index.node.cjs.js:12999:16)
      at LocalStore.acknowledgeBatch (node_modules/@firebase/firestore/dist/index.node.cjs.js:11944:33)
      at SyncEngine.applySuccessfulWrite (node_modules/@firebase/firestore/dist/index.node.cjs.js:16159:14)
      at RemoteStore.onMutationResult (node_modules/@firebase/firestore/dist/index.node.cjs.js:14876:32)
      at PersistentWriteStream.onMessage (node_modules/@firebase/firestore/dist/index.node.cjs.js:13866:34)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:13697:30
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:13737:28
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:7227:20
      at process._tickCallback (internal/process/next_tick.js:68:7)

  2) MyApp
       "after each" hook for "should only let users create their own profile":
     Error: FIRESTORE (5.5.9) INTERNAL ASSERTION FAILED: AsyncQueue is already failed: Error: FIRESTORE (5.5.9) INTERNAL ASSERTION FAILED: server transform result count (1) should match field transform count (2)
    at fail (node_modules/@firebase/firestore/dist/index.node.cjs.js:153:11)
    at assert (node_modules/@firebase/firestore/dist/index.node.cjs.js:161:9)
    at TransformMutation.serverTransformResults (node_modules/@firebase/firestore/dist/index.node.cjs.js:3867:9)
    at TransformMutation.applyToRemoteDocument (node_modules/@firebase/firestore/dist/index.node.cjs.js:3819:37)
    at MutationBatch.applyToRemoteDocument (node_modules/@firebase/firestore/dist/index.node.cjs.js:7501:37)
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:12302:33
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:63
    at PersistencePromise.wrapUserFunction (node_modules/@firebase/firestore/dist/index.node.cjs.js:7750:26)
    at PersistencePromise.wrapSuccess (node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:25)
    at PersistencePromise.next (node_modules/@firebase/firestore/dist/index.node.cjs.js:7725:29)
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:12297:18
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:4320:13
    at LLRBNode.inorderTraversal (node_modules/@firebase/firestore/dist/index.node.cjs.js:1832:13)
    at SortedMap.inorderTraversal (node_modules/@firebase/firestore/dist/index.node.cjs.js:1708:26)
    at SortedSet.forEach (node_modules/@firebase/firestore/dist/index.node.cjs.js:4319:19)
    at LocalStore.applyWriteToRemoteDocuments (node_modules/@firebase/firestore/dist/index.node.cjs.js:12292:17)
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:11950:30
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:63
    at PersistencePromise.wrapUserFunction (node_modules/@firebase/firestore/dist/index.node.cjs.js:7750:26)
    at PersistencePromise.wrapSuccess (node_modules/@firebase/firestore/dist/index.node.cjs.js:7764:25)
    at PersistencePromise.next (node_modules/@firebase/firestore/dist/index.node.cjs.js:7725:29)
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:11949:18
    at MemoryPersistence.runTransaction (node_modules/@firebase/firestore/dist/index.node.cjs.js:12999:16)
    at LocalStore.acknowledgeBatch (node_modules/@firebase/firestore/dist/index.node.cjs.js:11944:33)
    at SyncEngine.applySuccessfulWrite (node_modules/@firebase/firestore/dist/index.node.cjs.js:16159:14)
    at RemoteStore.onMutationResult (node_modules/@firebase/firestore/dist/index.node.cjs.js:14876:32)
    at PersistentWriteStream.onMessage (node_modules/@firebase/firestore/dist/index.node.cjs.js:13866:34)
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:13697:30
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:13737:28
    at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/firestore/dist/index.node.cjs.js:7227:20
    at process._tickCallback (internal/process/next_tick.js:68:7)
      at fail (node_modules/@firebase/firestore/dist/index.node.cjs.js:153:11)
      at AsyncQueue.verifyNotFailed (node_modules/@firebase/firestore/dist/index.node.cjs.js:7272:13)
      at AsyncQueue.enqueue (node_modules/@firebase/firestore/dist/index.node.cjs.js:7224:14)
      at FirestoreClient.shutdown (node_modules/@firebase/firestore/dist/index.node.cjs.js:17779:32)
      at Firestore.<anonymous> (node_modules/@firebase/firestore/dist/index.node.cjs.js:19024:69)
      at step (node_modules/tslib/tslib.js:133:27)
      at Object.next (node_modules/tslib/tslib.js:114:57)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/tslib/tslib.js:107:75
      at new Promise (<anonymous>)
      at Object.__awaiter (node_modules/tslib/tslib.js:103:16)
      at Object.delete (node_modules/@firebase/firestore/dist/index.node.cjs.js:19021:57)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/app/dist/index.node.cjs.js:102:47
      at Array.map (<anonymous>)
      at /Users/XXXXXX/quickstart-nodejs/firestore-emulator/typescript-quickstart/node_modules/@firebase/app/dist/index.node.cjs.js:101:41

What am I doing wrong? 🤔

Thanks in advance!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions