setup.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. const chai = require('chai')
  2. const chaiAsPromised = require('chai-as-promised')
  3. const config = require('config')
  4. const fetch = require('node-fetch')
  5. const { knex, mongodb } = require('../storage')
  6. chai.use(chaiAsPromised)
  7. async function setupPostgresDatabase() {
  8. await knex.migrate.latest()
  9. }
  10. async function setupMongoDatabase() {
  11. await mongodb.db.collection('projectHistoryChunks').createIndexes([
  12. {
  13. key: { projectId: 1, startVersion: 1 },
  14. name: 'projectId_1_startVersion_1',
  15. partialFilterExpression: { state: 'active' },
  16. unique: true,
  17. },
  18. {
  19. key: { state: 1 },
  20. name: 'state_1',
  21. partialFilterExpression: { state: 'deleted' },
  22. },
  23. ])
  24. }
  25. async function createGcsBuckets() {
  26. for (const bucket of [
  27. config.get('blobStore.globalBucket'),
  28. config.get('blobStore.projectBucket'),
  29. config.get('chunkStore.bucket'),
  30. config.get('zipStore.bucket'),
  31. ]) {
  32. await fetch('http://gcs:9090/storage/v1/b', {
  33. method: 'POST',
  34. body: JSON.stringify({ name: bucket }),
  35. headers: { 'Content-Type': 'application/json' },
  36. })
  37. }
  38. }
  39. // Tear down the connection pool after all the tests have run, so the process
  40. // can exit.
  41. async function tearDownConnectionPool() {
  42. await knex.destroy()
  43. }
  44. module.exports = {
  45. setupPostgresDatabase,
  46. createGcsBuckets,
  47. tearDownConnectionPool,
  48. mochaHooks: {
  49. beforeAll: [setupPostgresDatabase, setupMongoDatabase, createGcsBuckets],
  50. afterAll: [tearDownConnectionPool],
  51. },
  52. }