Skip to content

Failing backend test: appendText without authorId still attributes one author #7790

@JohnMcLear

Description

@JohnMcLear

Failing test: appendText without authorId does not attribute to any author
File: src/tests/backend/specs/api/appendTextAuthor.ts:65-89
Status on develop HEAD (b96e262): failing — reproducible locally.

Surfaced by #7789 (which un-skips the tests/backend/specs/api/ subtree from CI). Same shape as #7785listAuthorsOfPad reports one author when the test expected zero.

What the test does

it('appendText without authorId does not attribute to any author', async function () {
  const newPadId = `appendTextNoAuthor_${makeid()}`;
  await agent.get(`${endPoint('createPad')}?padID=${newPadId}`)
      .set('Authorization', await common.generateJWTToken()).expect(200);

  await agent.post(endPoint('appendText'))
      .set('Authorization', await common.generateJWTToken())
      .send({padID: newPadId, text: 'anonymous text'}).expect(200);

  const authorsRes = await agent.get(`${endPoint('listAuthorsOfPad')}?padID=${newPadId}`)
      .set('Authorization', await common.generateJWTToken()).expect(200);
  // No authors should be listed for anonymous text
  assert.equal(authorsRes.body.data.authorIDs.length, 0);
});

appendText is called without an authorId in the body. The test expects listAuthorsOfPad to return zero authors afterwards.

What happens

AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
1 !== 0

authorIDs.length === 1. The appendText API path is attributing the inserted text to some author even though the caller didn't supply one — probably the JWT subject, the default system author, or whatever appendText's handler falls back to when authorId is missing.

Why this is likely a test bug, not a code bug

Cross-reference #7785. Same surface: an API path that mutates content is implicitly attributing the content to an author when none is provided. The test assertion of zero authors is the stale expectation; the code's behaviour (attributing under some author so revisions remain anchored) is consistent across the API surface.

Suggested fixes (choose one)

  • Update the assertion to assert.equal(authorsRes.body.data.authorIDs.length, 1) (and optionally assert which author — the JWT subject vs. the default).
  • Or, if anonymous-author behaviour is desired, change appendText to skip author attribution when no authorId is supplied. This is the larger change and probably wants its own discussion.

Reproduction

NODE_ENV=production npx mocha --import=tsx --require ./tests/backend/diagnostics.ts \
    --timeout 60000 tests/backend/specs/api/appendTextAuthor.ts

(Note: invisible in CI on develop until #7789 lands. The current pnpm test glob skips the entire tests/backend/specs/api/ subtree.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions