diff --git a/backend/src/config/test-mock.ts b/backend/src/config/test-mock.ts deleted file mode 100644 index 4c6509617..000000000 --- a/backend/src/config/test-mock.ts +++ /dev/null @@ -1,52 +0,0 @@ -import type CONFIG from '.' - -export const TEST_CONFIG: typeof CONFIG = { - NODE_ENV: 'test', - DEBUG: undefined, - TEST: true, - PRODUCTION: false, - PRODUCTION_DB_CLEAN_ALLOW: false, - DISABLED_MIDDLEWARES: [], - SEND_MAIL: false, - - CLIENT_URI: 'http://localhost:3000', - GRAPHQL_URI: 'http://localhost:4000', - JWT_EXPIRES: '2y', - - MAPBOX_TOKEN: undefined, - JWT_SECRET: undefined, - PRIVATE_KEY_PASSPHRASE: undefined, - - NEO4J_URI: 'bolt://localhost:7687', - NEO4J_USERNAME: 'neo4j', - NEO4J_PASSWORD: 'neo4j', - - SENTRY_DSN_BACKEND: undefined, - COMMIT: undefined, - - REDIS_DOMAIN: undefined, - REDIS_PORT: undefined, - REDIS_PASSWORD: undefined, - - AWS_ACCESS_KEY_ID: 'AWS_ACCESS_KEY_ID', - AWS_SECRET_ACCESS_KEY: 'AWS_SECRET_ACCESS_KEY', - AWS_ENDPOINT: 'AWS_ENDPOINT', - AWS_REGION: 'AWS_REGION', - AWS_BUCKET: 'AWS_BUCKET', - S3_PUBLIC_GATEWAY: undefined, - IMAGOR_SECRET: undefined, - - EMAIL_DEFAULT_SENDER: '', - SUPPORT_EMAIL: '', - SUPPORT_URL: '', - APPLICATION_NAME: '', - ORGANIZATION_URL: '', - PUBLIC_REGISTRATION: false, - INVITE_REGISTRATION: true, - INVITE_CODES_PERSONAL_PER_USER: 7, - INVITE_CODES_GROUP_PER_USER: 7, - CATEGORIES_ACTIVE: false, - MAX_PINNED_POSTS: 1, - - LANGUAGE_DEFAULT: 'en', -} diff --git a/backend/src/graphql/resolvers/images.spec.ts b/backend/src/graphql/resolvers/images.spec.ts index a5c6708ec..00c824d5b 100644 --- a/backend/src/graphql/resolvers/images.spec.ts +++ b/backend/src/graphql/resolvers/images.spec.ts @@ -1,5 +1,3 @@ -import { TEST_CONFIG } from '@src/config/test-mock' - import ImageResolver from './images' describe('Image', () => { @@ -8,7 +6,6 @@ describe('Image', () => { const Location = 'https://fsn1.your-objectstorage.com/ocelot-social-staging/original/f965ea15-1f6b-43aa-a535-927410e2585e-dsc02586.jpg' const defaultConfig = { - ...TEST_CONFIG, AWS_ENDPOINT: 'https://fsn1.your-objectstorage.com', S3_PUBLIC_GATEWAY: 'https://your-public-gateway.com', IMAGOR_SECRET: 'IMAGOR_SECRET', diff --git a/backend/src/graphql/resolvers/images.ts b/backend/src/graphql/resolvers/images.ts index f978d504e..2b0e5226b 100644 --- a/backend/src/graphql/resolvers/images.ts +++ b/backend/src/graphql/resolvers/images.ts @@ -1,7 +1,7 @@ import crypto from 'node:crypto' import { join as joinPath } from 'node:path/posix' -import type { Context } from '@src/server' +import type { Config } from '@src/config' import Resolver from './helpers/Resolver' @@ -10,7 +10,7 @@ type UrlResolver = ( args: { width?: number; height?: number }, { config: { S3_PUBLIC_GATEWAY }, - }: Pick, + }: { config: Pick }, ) => string const changeDomain: (opts: { transformations: UrlResolver[] }) => UrlResolver = diff --git a/backend/src/graphql/resolvers/rooms.spec.ts b/backend/src/graphql/resolvers/rooms.spec.ts index 1adecc7a4..023ac9be6 100644 --- a/backend/src/graphql/resolvers/rooms.spec.ts +++ b/backend/src/graphql/resolvers/rooms.spec.ts @@ -1,38 +1,38 @@ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ -import { createTestClient } from 'apollo-server-testing' - -import databaseContext from '@context/database' +/* eslint-disable @typescript-eslint/no-explicit-any */ import Factory, { cleanDatabase } from '@db/factories' import { createMessageMutation } from '@graphql/queries/createMessageMutation' import { createRoomMutation } from '@graphql/queries/createRoomMutation' import { roomQuery } from '@graphql/queries/roomQuery' import { unreadRoomsQuery } from '@graphql/queries/unreadRoomsQuery' -import { TEST_CONFIG } from '@src/config/test-mock' -import createServer, { getContext } from '@src/server' +import type { ApolloTestSetup } from '@root/test/helpers' +import { createApolloTestSetup } from '@root/test/helpers' +import type { Context } from '@src/context' -let query -let mutate -let authenticatedUser let chattingUser, otherChattingUser, notChattingUser -const database = databaseContext() +let authenticatedUser: Context['user'] +const context = () => ({ authenticatedUser }) +let mutate: ApolloTestSetup['mutate'] +let query: ApolloTestSetup['query'] +let database: ApolloTestSetup['database'] +let server: ApolloTestSetup['server'] -beforeAll(async () => { - await cleanDatabase() - - // eslint-disable-next-line @typescript-eslint/no-unsafe-return - const contextUser = (_req) => authenticatedUser - const context = getContext({ user: contextUser, database, config: TEST_CONFIG }) - const { server } = createServer({ context }) - query = createTestClient(server).query - mutate = createTestClient(server).mutate +beforeAll(() => { + const apolloSetup = createApolloTestSetup({ context }) + mutate = apolloSetup.mutate + query = apolloSetup.query + database = apolloSetup.database + server = apolloSetup.server }) afterAll(async () => { await cleanDatabase() - await database.driver.close() + void server.stop() + void database.driver.close() + database.neode.close() }) describe('Room', () => { @@ -125,13 +125,13 @@ describe('Room', () => { userId: 'other-chatting-user', }, }) - roomId = result.data.CreateRoom.id + roomId = (result as any).data.CreateRoom.id expect(result).toMatchObject({ errors: undefined, data: { CreateRoom: { id: expect.any(String), - roomId: result.data.CreateRoom.id, + roomId: (result as any).data.CreateRoom.id, roomName: 'Other Chatting User', unreadCount: 0, users: expect.arrayContaining([ @@ -207,7 +207,7 @@ describe('Room', () => { Room: [ { id: expect.any(String), - roomId: result.data.Room[0].id, + roomId: (result as any).data.Room[0].id, roomName: 'Other Chatting User', users: expect.arrayContaining([ { @@ -247,7 +247,7 @@ describe('Room', () => { Room: [ { id: expect.any(String), - roomId: result.data.Room[0].id, + roomId: (result as any).data.Room[0].id, roomName: 'Chatting User', unreadCount: 0, users: expect.arrayContaining([ @@ -317,7 +317,7 @@ describe('Room', () => { userId: 'not-chatting-user', }, }) - otherRoomId = result.data.CreateRoom.roomId + otherRoomId = (result as any).data.CreateRoom.roomId await mutate({ mutation: createMessageMutation(), variables: { @@ -346,7 +346,7 @@ describe('Room', () => { userId: 'not-chatting-user', }, }) - otherRoomId = result2.data.CreateRoom.roomId + otherRoomId = (result2 as any).data.CreateRoom.roomId await mutate({ mutation: createMessageMutation(), variables: { @@ -583,7 +583,6 @@ describe('Room', () => { }) describe('query single room', () => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any let result: any = null beforeAll(async () => { diff --git a/backend/src/middleware/softDelete/softDeleteMiddleware.spec.ts b/backend/src/middleware/softDelete/softDeleteMiddleware.spec.ts index 309d3e1f2..ed9dcbf37 100644 --- a/backend/src/middleware/softDelete/softDeleteMiddleware.spec.ts +++ b/backend/src/middleware/softDelete/softDeleteMiddleware.spec.ts @@ -7,19 +7,16 @@ import { createTestClient } from 'apollo-server-testing' import gql from 'graphql-tag' -import databaseContext from '@context/database' import Factory, { cleanDatabase } from '@db/factories' -import { getNeode } from '@db/neo4j' -import { TEST_CONFIG } from '@src/config/test-mock' -import createServer, { getContext } from '@src/server' +import { getNeode, getDriver } from '@db/neo4j' +import createServer from '@src/server' const neode = getNeode() +const driver = getDriver() const categoryIds = ['cat9'] let query, graphqlQuery, authenticatedUser, user, moderator, troll -const database = databaseContext() - const action = () => { return query({ query: graphqlQuery }) } @@ -139,9 +136,15 @@ beforeAll(async () => { ), ]) - const contextUser = async (_req) => authenticatedUser - const context = getContext({ user: contextUser, database, config: TEST_CONFIG }) - const { server } = createServer({ context }) + const { server } = createServer({ + context: () => { + return { + driver, + neode, + user: authenticatedUser, + } + }, + }) const client = createTestClient(server) query = client.query @@ -199,7 +202,7 @@ beforeAll(async () => { afterAll(async () => { await cleanDatabase() - void database.driver.close() + await driver.close() }) describe('softDeleteMiddleware', () => { diff --git a/backend/test/helpers.ts b/backend/test/helpers.ts index 60ebe0f91..efc8afc37 100644 --- a/backend/test/helpers.ts +++ b/backend/test/helpers.ts @@ -54,6 +54,8 @@ export const TEST_CONFIG = { MAX_PINNED_POSTS: 1, LANGUAGE_DEFAULT: 'en', + + IMAGOR_SECRET: undefined, } as const satisfies typeof CONFIG interface OverwritableContextParams {