matrix-public-archive/test
Eric Eastwood 36925cd603
Add test to make sure the archive doesn't fail when event for event relation is missing and not included in list of provided events (#43)
Add test to make sure the archive doesn't fail when event for event relation is missing and not included in list of provided events. Like if someone is replying to an event that was from long ago out of our range.

In the case of missing relations, Hydrogen does `_loadContextEntryNotInTimeline` because it can't find the event locally which throws an `uncaughtException`. Before https://github.com/matrix-org/matrix-public-archive/pull/51, the `uncaughtException` killed the Hydrogen `child_process` before it could pass back the HTML. Now this PR mainly just adds a test to make sure it works.
```
TypeError: Cannot read properties of undefined (reading 'storeNames')
    at TimelineReader.readById (hydrogen-web\target\lib-build\hydrogen.cjs.js:12483:33)
    at Timeline._getEventFromStorage (hydrogen-web\target\lib-build\hydrogen.cjs.js:12762:46)
    at Timeline._loadContextEntryNotInTimeline (hydrogen-web\target\lib-build\hydrogen.cjs.js:12747:35)
    at Timeline._loadContextEntriesWhereNeeded (hydrogen-web\target\lib-build\hydrogen.cjs.js:12741:14)
    at Timeline.addEntries (hydrogen-web\target\lib-build\hydrogen.cjs.js:12699:10)
    at mountHydrogen (4-hydrogen-vm-render-script.js:204:12)
    at 4-hydrogen-vm-render-script.js:353:1
    at Script.runInContext (node:vm:139:12)
    at _renderHydrogenToStringUnsafe (matrix-public-archive\server\hydrogen-render\3-render-hydrogen-to-string-unsafe.js:102:41)
    at async process.<anonymous> (matrix-public-archive\server\hydrogen-render\2-render-hydrogen-to-string-fork-script.js:18:27)
```
2022-08-29 19:42:18 -05:00
..
dockerfiles Containerize app (make a Docker image for `matrix-public-archive`) (#22) 2022-06-15 02:28:18 -05:00
fixtures Remove `matrix-bot-sdk` usage in tests (#15) 2022-06-09 20:44:57 -05:00
.eslintrc.json WIP: start of tests 2022-02-22 16:06:29 -06:00
README.md Better explain how to get the project and tests to run at this point (#19) 2022-06-10 18:52:12 -05:00
client-utils.js Add test to make sure the archive doesn't fail when event for event relation is missing and not included in list of provided events (#43) 2022-08-29 19:42:18 -05:00
docker-compose.yml Federated homeservers in Docker for e2e tests 2022-02-22 20:25:24 -06:00
e2e-tests.js Add test to make sure the archive doesn't fail when event for event relation is missing and not included in list of provided events (#43) 2022-08-29 19:42:18 -05:00

README.md

Testing

Setup

If you haven't setup matrix-public-archive yet, see the Setup section in the root README.md

Sorry, this isn't automated yet when you run the tests 🙇

$ docker pull matrixdotorg/synapse:latest
$ docker build -t matrix-public-archive-test-homeserver -f test/dockerfiles/Synapse.Dockerfile test/dockerfiles/

$ docker-compose --project-name matrix_public_archive_test -f test/docker-compose.yml up -d --no-recreate

Running the tests

$ npm run test

Or if you want to keep matrix-public-archive server running after the tests run and explore the output from the interactive URL's printed on the screen, use:

$ npm run test-interactive

Developer utility

$ docker ps --all | grep test_hs
$ docker logs -f --tail 10 matrix_public_archive_test_hs1_1
$ docker logs -f --tail 10 matrix_public_archive_test_hs2_1

$ docker stop matrix_public_archive_test_hs1_1 matrix_public_archive_test_hs2_1
$ docker rm matrix_public_archive_test_hs1_1 matrix_public_archive_test_hs2_1