SeedCompany / cord-api-v3

Bible translation project management API
MIT License
18 stars 4 forks source link

[Tests] E2E File upload/download #3214

Closed CarsonF closed 1 month ago

CarsonF commented 1 month ago

Previously we were faking the upload/download process by talking to the assumed LocalBucket storage. Where as in actual usage we are expecting PUT/GET HTTP requests.

This changes the tests to actually use that code path.

The reasoning for this previous decision was because we weren't actually serving the GQL API over a server, but executing the operations directly. So without a web server setup, we couldn't do these requests either. That has since changed.

The last hard part here was that we use a unix socket for the test web server which assigns a random port when we start listening. The app needs to know where it is hosting/listening on so it can generate those PUT/GET urls. But app boot happens before listening so the port can't be known ahead of time. I switched the ConfigService.hostUrl to be a BehaviorSubject so we can adjust the url later, after listening starts. Here's where it is set in the test suite setup. It's worth noting that Nest's usage of this, like global prefix, does not listen for changes to this value, and only uses the initial one. I've updated all of our usages to respect the current value.