From 2696a7eb5b762fd9149ebf68ef433259e230ee0a Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 7 Oct 2021 00:11:23 +0200 Subject: [PATCH 01/46] feat: Setup Unit Tests for Resolvers --- backend/package.json | 1 + .../resolver/CommunityResolver.test.ts | 39 +++++++++++++++++++ .../src/graphql/resolver/CommunityResolver.ts | 7 +--- backend/src/test-server.ts | 29 ++++++++++++++ backend/yarn.lock | 7 ++++ 5 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 backend/src/graphql/resolver/CommunityResolver.test.ts create mode 100644 backend/src/test-server.ts diff --git a/backend/package.json b/backend/package.json index 4719595bb..01952bf69 100644 --- a/backend/package.json +++ b/backend/package.json @@ -18,6 +18,7 @@ "dependencies": { "@types/jest": "^27.0.2", "apollo-server-express": "^2.25.2", + "apollo-server-testing": "^2.25.2", "axios": "^0.21.1", "class-validator": "^0.13.1", "cors": "^2.8.5", diff --git a/backend/src/graphql/resolver/CommunityResolver.test.ts b/backend/src/graphql/resolver/CommunityResolver.test.ts new file mode 100644 index 000000000..fa295c82f --- /dev/null +++ b/backend/src/graphql/resolver/CommunityResolver.test.ts @@ -0,0 +1,39 @@ +import { createTestClient } from 'apollo-server-testing' +import createTestServer from '../../test-server' + +let query: any + +beforeAll(async () => { + const apollo = createTestServer() + + query = createTestClient(await apollo).query +}) + +describe('CommunityResolver', () => { + + const getCommunityInfoQuery = ` + query { + getCommunityInfo() { + name + description + url + registerUrl + } + } + ` + + describe('getCommunityInfo', () => { + it('returns the default values', async () => { + await expect(query({ query: getCommunityInfoQuery })).resolves.toMatchObject({ + data: { + getCommunityInfo: { + name: 'Gradido Entwicklung', + description: 'Die lokale Entwicklungsumgebung von Gradido.', + url: 'http://localhost/vue/', + registerUrl: 'http://localhost/vue/register', + }, + }, + }) + }) + }) +}) diff --git a/backend/src/graphql/resolver/CommunityResolver.ts b/backend/src/graphql/resolver/CommunityResolver.ts index 563c73d24..836c61b66 100644 --- a/backend/src/graphql/resolver/CommunityResolver.ts +++ b/backend/src/graphql/resolver/CommunityResolver.ts @@ -19,9 +19,7 @@ export class CommunityResolver { @Query(() => [Community]) async communities(): Promise { - const communities: Community[] = [] - - communities.push( + return [ new Community({ id: 1, name: 'Gradido Entwicklung', @@ -43,7 +41,6 @@ export class CommunityResolver { url: 'https://gradido.net', registerUrl: 'https://gdd1.gradido.com/vue/register-community', }), - ) - return communities + ] } } diff --git a/backend/src/test-server.ts b/backend/src/test-server.ts new file mode 100644 index 000000000..ab6edd0df --- /dev/null +++ b/backend/src/test-server.ts @@ -0,0 +1,29 @@ +import { ApolloServer } from 'apollo-server-express' +import express from 'express' +import cors from './server/cors' +import context from './server/context' +import plugins from './server/plugins' +import CONFIG from './config' + +// graphql +import schema from './graphql/schema' + +const createTestServer = async () => { + // Express Server + const server = express() + + // cors + server.use(cors) + + // Apollo Server + const apollo = new ApolloServer({ + schema: await schema(), + playground: CONFIG.GRAPHIQL, + context, + plugins, + }) + apollo.applyMiddleware({ app: server }) + return apollo +} + +export default createTestServer diff --git a/backend/yarn.lock b/backend/yarn.lock index 714823fe9..7b3310a02 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -1328,6 +1328,13 @@ apollo-server-plugin-base@^0.13.0: dependencies: apollo-server-types "^0.9.0" +apollo-server-testing@^2.25.2: + version "2.25.2" + resolved "https://registry.yarnpkg.com/apollo-server-testing/-/apollo-server-testing-2.25.2.tgz#0043e98b1a03720352e94b409215fb4782ae2e50" + integrity sha512-HjQV9wPbi/ZqpRbyyhNwCbaDnfjDM0hTRec5TOoOjurEZ/vh4hTPHwGkDZx3kbcWowhGxe2qoHM6KANSB/SxuA== + dependencies: + apollo-server-core "^2.25.2" + apollo-server-types@^0.9.0: version "0.9.0" resolved "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.9.0.tgz" From d8265b0c2714ebc78f1ca272f8dcade73a4c48ef Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 7 Oct 2021 15:36:40 +0200 Subject: [PATCH 02/46] got the test working --- backend/src/graphql/resolver/CommunityResolver.test.ts | 4 ++-- backend/src/test-server.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/graphql/resolver/CommunityResolver.test.ts b/backend/src/graphql/resolver/CommunityResolver.test.ts index fa295c82f..fdc161a49 100644 --- a/backend/src/graphql/resolver/CommunityResolver.test.ts +++ b/backend/src/graphql/resolver/CommunityResolver.test.ts @@ -13,7 +13,7 @@ describe('CommunityResolver', () => { const getCommunityInfoQuery = ` query { - getCommunityInfo() { + getCommunityInfo { name description url @@ -24,7 +24,7 @@ describe('CommunityResolver', () => { describe('getCommunityInfo', () => { it('returns the default values', async () => { - await expect(query({ query: getCommunityInfoQuery })).resolves.toMatchObject({ + expect(query({ query: getCommunityInfoQuery })).resolves.toMatchObject({ data: { getCommunityInfo: { name: 'Gradido Entwicklung', diff --git a/backend/src/test-server.ts b/backend/src/test-server.ts index ab6edd0df..7e75651da 100644 --- a/backend/src/test-server.ts +++ b/backend/src/test-server.ts @@ -19,7 +19,7 @@ const createTestServer = async () => { const apollo = new ApolloServer({ schema: await schema(), playground: CONFIG.GRAPHIQL, - context, +// context, plugins, }) apollo.applyMiddleware({ app: server }) From c6a373d24ded3981beb8f1eacd0641319d32911a Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 7 Oct 2021 19:46:42 +0200 Subject: [PATCH 03/46] pass CI tests --- .github/workflows/test.yml | 2 +- .../src/graphql/resolver/CommunityResolver.test.ts | 6 ++++-- backend/src/test-server.ts | 11 +++++++---- frontend/src/routes/router.test.js | 4 ++-- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c3687cc5a..bb6da5bb8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -386,7 +386,7 @@ jobs: report_name: Coverage Backend type: lcov result_path: ./coverage/lcov.info - min_coverage: 4 + min_coverage: 46 token: ${{ github.token }} ############################################################################## diff --git a/backend/src/graphql/resolver/CommunityResolver.test.ts b/backend/src/graphql/resolver/CommunityResolver.test.ts index fdc161a49..34a6b81aa 100644 --- a/backend/src/graphql/resolver/CommunityResolver.test.ts +++ b/backend/src/graphql/resolver/CommunityResolver.test.ts @@ -1,3 +1,6 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ + import { createTestClient } from 'apollo-server-testing' import createTestServer from '../../test-server' @@ -8,9 +11,8 @@ beforeAll(async () => { query = createTestClient(await apollo).query }) - -describe('CommunityResolver', () => { +describe('CommunityResolver', () => { const getCommunityInfoQuery = ` query { getCommunityInfo { diff --git a/backend/src/test-server.ts b/backend/src/test-server.ts index 7e75651da..4a0e75342 100644 --- a/backend/src/test-server.ts +++ b/backend/src/test-server.ts @@ -1,25 +1,28 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ + import { ApolloServer } from 'apollo-server-express' import express from 'express' import cors from './server/cors' -import context from './server/context' +// import context from './server/context' import plugins from './server/plugins' import CONFIG from './config' // graphql import schema from './graphql/schema' -const createTestServer = async () => { +const createTestServer = async (): Promise => { // Express Server const server = express() // cors server.use(cors) - + // Apollo Server const apollo = new ApolloServer({ schema: await schema(), playground: CONFIG.GRAPHIQL, -// context, + // context, plugins, }) apollo.applyMiddleware({ app: server }) diff --git a/frontend/src/routes/router.test.js b/frontend/src/routes/router.test.js index 57fca142b..7ea6e367a 100644 --- a/frontend/src/routes/router.test.js +++ b/frontend/src/routes/router.test.js @@ -55,8 +55,8 @@ describe('router', () => { expect(routes.find((r) => r.path === '/').redirect()).toEqual({ path: '/login' }) }) - it('has ten routes defined', () => { - expect(routes).toHaveLength(10) + it('has 12 routes defined', () => { + expect(routes).toHaveLength(12) }) describe('overview', () => { From 10b65487eeea7cc57340537f59467d0f9017a7f0 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 18 Oct 2021 20:17:17 +0200 Subject: [PATCH 04/46] createServer for application and tests --- .github/workflows/test.yml | 8 +-- .../resolver/CommunityResolver.test.ts | 6 +- backend/src/graphql/schema.ts | 3 +- backend/src/index.ts | 55 +--------------- backend/src/server/createServer.ts | 63 +++++++++++++++++++ 5 files changed, 75 insertions(+), 60 deletions(-) create mode 100644 backend/src/server/createServer.ts diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5e2bb16a9..e3f20fe09 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -373,10 +373,10 @@ jobs: ########################################################################## # UNIT TESTS BACKEND ##################################################### ########################################################################## - - name: backend | Unit tests - run: | - docker run -v ~/coverage:/app/coverage --rm gradido/backend:test yarn run test - cp -r ~/coverage ./coverage + - name: backend database | docker-compose + run: docker-compose -f docker-compose.yml up --detach mariadb + - name: backend Unit tests | up + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml run -T backend yarn run test ########################################################################## # COVERAGE CHECK BACKEND ################################################# ########################################################################## diff --git a/backend/src/graphql/resolver/CommunityResolver.test.ts b/backend/src/graphql/resolver/CommunityResolver.test.ts index 34a6b81aa..e1556b9fc 100644 --- a/backend/src/graphql/resolver/CommunityResolver.test.ts +++ b/backend/src/graphql/resolver/CommunityResolver.test.ts @@ -2,14 +2,14 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import { createTestClient } from 'apollo-server-testing' -import createTestServer from '../../test-server' +import createServer from '../../server/createServer' let query: any beforeAll(async () => { - const apollo = createTestServer() + const { apollo } = await createServer({}) - query = createTestClient(await apollo).query + query = createTestClient(apollo).query }) describe('CommunityResolver', () => { diff --git a/backend/src/graphql/schema.ts b/backend/src/graphql/schema.ts index 0a570ae82..5789f75ec 100644 --- a/backend/src/graphql/schema.ts +++ b/backend/src/graphql/schema.ts @@ -6,7 +6,8 @@ import isAuthorized from './directive/isAuthorized' const schema = async (): Promise => { return buildSchema({ - resolvers: [path.join(__dirname, 'resolver', `*.{js,ts}`)], + // ?!.*\.test\.js$ + resolvers: [path.join(__dirname, 'resolver', `!(*.test).{js,ts}`)], authChecker: isAuthorized, }) } diff --git a/backend/src/index.ts b/backend/src/index.ts index 916fe0550..a2e533e34 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -1,63 +1,14 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import 'reflect-metadata' -import express from 'express' -import { ApolloServer } from 'apollo-server-express' +import createServer from './server/createServer' // config import CONFIG from './config' -// database -import connection from './typeorm/connection' -import getDBVersion from './typeorm/getDBVersion' - -// server -import cors from './server/cors' -import context from './server/context' -import plugins from './server/plugins' - -// graphql -import schema from './graphql/schema' - -// TODO implement -// import queryComplexity, { simpleEstimator, fieldConfigEstimator } from "graphql-query-complexity"; - -const DB_VERSION = '0002-add_settings' - async function main() { - // open mysql connection - const con = await connection() - if (!con || !con.isConnected) { - throw new Error(`Couldn't open connection to database`) - } + const { app } = await createServer() - // check for correct database version - const dbVersion = await getDBVersion() - if (!dbVersion || dbVersion.indexOf(DB_VERSION) === -1) { - throw new Error( - `Wrong database version - the backend requires '${DB_VERSION}' but found '${ - dbVersion || 'None' - }'`, - ) - } - - // Express Server - const server = express() - - // cors - server.use(cors) - - // Apollo Server - const apollo = new ApolloServer({ - schema: await schema(), - playground: CONFIG.GRAPHIQL, - context, - plugins, - }) - apollo.applyMiddleware({ app: server }) - - // Start Server - server.listen(CONFIG.PORT, () => { + app.listen(CONFIG.PORT, () => { // eslint-disable-next-line no-console console.log(`Server is running at http://localhost:${CONFIG.PORT}`) if (CONFIG.GRAPHIQL) { diff --git a/backend/src/server/createServer.ts b/backend/src/server/createServer.ts new file mode 100644 index 000000000..db841ab11 --- /dev/null +++ b/backend/src/server/createServer.ts @@ -0,0 +1,63 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ + +import 'reflect-metadata' + +import { ApolloServer } from 'apollo-server-express' +import express from 'express' + +// database +import connection from '../typeorm/connection' +import getDBVersion from '../typeorm/getDBVersion' + +// server +import cors from './cors' +import serverContext from './context' +import plugins from './plugins' + +// config +import CONFIG from '../config' + +// graphql +import schema from '../graphql/schema' + +// TODO implement +// import queryComplexity, { simpleEstimator, fieldConfigEstimator } from "graphql-query-complexity"; + +const DB_VERSION = '0002-add_settings' + +const createServer = async (context: any = serverContext): Promise => { + // open mysql connection + const con = await connection() + if (!con || !con.isConnected) { + throw new Error(`Couldn't open connection to database`) + } + + // check for correct database version + const dbVersion = await getDBVersion() + if (!dbVersion || dbVersion.indexOf(DB_VERSION) === -1) { + throw new Error( + `Wrong database version - the backend requires '${DB_VERSION}' but found '${ + dbVersion || 'None' + }'`, + ) + } + + // Express Server + const app = express() + + // cors + app.use(cors) + + // Apollo Server + const apollo = new ApolloServer({ + schema: await schema(), + playground: CONFIG.GRAPHIQL, + context, + plugins, + }) + apollo.applyMiddleware({ app }) + return { apollo, app } +} + +export default createServer From 4be256575f48dada015029b55d08654ad61c09d0 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 18 Oct 2021 23:42:47 +0200 Subject: [PATCH 05/46] new try with docker compose --- .github/workflows/test.yml | 15 +++++++++++---- backend/src/graphql/schema.ts | 1 - backend/src/test-server.ts | 32 -------------------------------- 3 files changed, 11 insertions(+), 37 deletions(-) delete mode 100644 backend/src/test-server.ts diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e3f20fe09..1060eb9d7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -353,7 +353,7 @@ jobs: unit_test_backend: name: Unit tests - Backend runs-on: ubuntu-latest - needs: [build_test_backend] + needs: [build_test_backend, build_test_database_up] steps: ########################################################################## # CHECKOUT CODE ########################################################## @@ -363,6 +363,13 @@ jobs: ########################################################################## # DOWNLOAD DOCKER IMAGES ################################################# ########################################################################## + - name: Download Docker Image (Database) + uses: actions/download-artifact@v2 + with: + name: docker-database-test_up + path: /tmp + - name: Load Docker Image + run: docker load < /tmp/database_up.tar - name: Download Docker Image (Backend) uses: actions/download-artifact@v2 with: @@ -373,10 +380,10 @@ jobs: ########################################################################## # UNIT TESTS BACKEND ##################################################### ########################################################################## - - name: backend database | docker-compose - run: docker-compose -f docker-compose.yml up --detach mariadb + - name: backend | docker-compose + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database backend - name: backend Unit tests | up - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml run -T backend yarn run test + run: docker-compose exec -T backend yarn run test ########################################################################## # COVERAGE CHECK BACKEND ################################################# ########################################################################## diff --git a/backend/src/graphql/schema.ts b/backend/src/graphql/schema.ts index 5789f75ec..02caf2784 100644 --- a/backend/src/graphql/schema.ts +++ b/backend/src/graphql/schema.ts @@ -6,7 +6,6 @@ import isAuthorized from './directive/isAuthorized' const schema = async (): Promise => { return buildSchema({ - // ?!.*\.test\.js$ resolvers: [path.join(__dirname, 'resolver', `!(*.test).{js,ts}`)], authChecker: isAuthorized, }) diff --git a/backend/src/test-server.ts b/backend/src/test-server.ts deleted file mode 100644 index 4a0e75342..000000000 --- a/backend/src/test-server.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ - -import { ApolloServer } from 'apollo-server-express' -import express from 'express' -import cors from './server/cors' -// import context from './server/context' -import plugins from './server/plugins' -import CONFIG from './config' - -// graphql -import schema from './graphql/schema' - -const createTestServer = async (): Promise => { - // Express Server - const server = express() - - // cors - server.use(cors) - - // Apollo Server - const apollo = new ApolloServer({ - schema: await schema(), - playground: CONFIG.GRAPHIQL, - // context, - plugins, - }) - apollo.applyMiddleware({ app: server }) - return apollo -} - -export default createTestServer From 7e48e4f8509e0e958e0539d35f00e4f461207e08 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 19 Oct 2021 00:08:52 +0200 Subject: [PATCH 06/46] full test for communities, another try for docker compose --- .github/workflows/test.yml | 2 +- .../resolver/CommunityResolver.test.ts | 75 +++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1060eb9d7..c93c75f3a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -383,7 +383,7 @@ jobs: - name: backend | docker-compose run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database backend - name: backend Unit tests | up - run: docker-compose exec -T backend yarn run test + run: docker-compose exec -T backend yarn test ########################################################################## # COVERAGE CHECK BACKEND ################################################# ########################################################################## diff --git a/backend/src/graphql/resolver/CommunityResolver.test.ts b/backend/src/graphql/resolver/CommunityResolver.test.ts index e1556b9fc..9fb062f31 100644 --- a/backend/src/graphql/resolver/CommunityResolver.test.ts +++ b/backend/src/graphql/resolver/CommunityResolver.test.ts @@ -3,6 +3,9 @@ import { createTestClient } from 'apollo-server-testing' import createServer from '../../server/createServer' +import CONFIG from '../../config' + +jest.mock('../../config') let query: any @@ -24,6 +27,18 @@ describe('CommunityResolver', () => { } ` + const communities = ` + query { + communities { + id + name + url + description + registerUrl + } + } + ` + describe('getCommunityInfo', () => { it('returns the default values', async () => { expect(query({ query: getCommunityInfoQuery })).resolves.toMatchObject({ @@ -38,4 +53,64 @@ describe('CommunityResolver', () => { }) }) }) + + describe('communities', () => { + describe('PRODUCTION = false', () => { + beforeEach(() => { + CONFIG.PRODUCTION = false + }) + + it('returns three communities', async () => { + expect(query({ query: communities })).resolves.toMatchObject({ + data: { + communities: [ + { + id: 1, + name: 'Gradido Entwicklung', + description: 'Die lokale Entwicklungsumgebung von Gradido.', + url: 'http://localhost/vue/', + registerUrl: 'http://localhost/vue/register-community', + }, + { + id: 2, + name: 'Gradido Staging', + description: 'Der Testserver der Gradido-Akademie.', + url: 'https://stage1.gradido.net/vue/', + registerUrl: 'https://stage1.gradido.net/vue/register-community', + }, + { + id: 3, + name: 'Gradido-Akademie', + description: 'Freies Institut für Wirtschaftsbionik.', + url: 'https://gradido.net', + registerUrl: 'https://gdd1.gradido.com/vue/register-community', + }, + ], + }, + }) + }) + }) + + describe('PRODUCTION = true', () => { + beforeEach(() => { + CONFIG.PRODUCTION = true + }) + + it('returns one community', async () => { + expect(query({ query: communities })).resolves.toMatchObject({ + data: { + communities: [ + { + id: 3, + name: 'Gradido-Akademie', + description: 'Freies Institut für Wirtschaftsbionik.', + url: 'https://gradido.net', + registerUrl: 'https://gdd1.gradido.com/vue/register-community', + }, + ], + }, + }) + }) + }) + }) }) From 979262e96154927d3ef658527a41289be03c9a25 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 19 Oct 2021 14:01:56 +0200 Subject: [PATCH 07/46] try without detach --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c93c75f3a..15aec2807 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -381,7 +381,7 @@ jobs: # UNIT TESTS BACKEND ##################################################### ########################################################################## - name: backend | docker-compose - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database backend + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --no-deps database backend - name: backend Unit tests | up run: docker-compose exec -T backend yarn test ########################################################################## From 5d45a8d13f09961828f67f4b96326a82cffa9da4 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 19 Oct 2021 14:18:37 +0200 Subject: [PATCH 08/46] try with database up --- .github/workflows/test.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 15aec2807..8951f8b37 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -381,8 +381,10 @@ jobs: # UNIT TESTS BACKEND ##################################################### ########################################################################## - name: backend | docker-compose - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --no-deps database backend - - name: backend Unit tests | up + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database backend + - name: backend Unit tests | database up + run: docker-compose exec -T database yarn up + - name: backend Unit tests | test run: docker-compose exec -T backend yarn test ########################################################################## # COVERAGE CHECK BACKEND ################################################# From f8942f048bdce2cd779cf1e90c895d22f7e18ffd Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 19 Oct 2021 14:37:44 +0200 Subject: [PATCH 09/46] try run instead of exec --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8951f8b37..44792cdd3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -383,7 +383,7 @@ jobs: - name: backend | docker-compose run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database backend - name: backend Unit tests | database up - run: docker-compose exec -T database yarn up + run: docker-compose run -T database yarn up - name: backend Unit tests | test run: docker-compose exec -T backend yarn test ########################################################################## From 1def630e3b200f365caa6260cf301ffb0505ab87 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 19 Oct 2021 18:48:21 +0200 Subject: [PATCH 10/46] hack to close the dn connection after tests --- .../src/graphql/resolver/CommunityResolver.test.ts | 13 ++++++++++--- backend/src/server/createServer.ts | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/backend/src/graphql/resolver/CommunityResolver.test.ts b/backend/src/graphql/resolver/CommunityResolver.test.ts index 9fb062f31..20a06c2b8 100644 --- a/backend/src/graphql/resolver/CommunityResolver.test.ts +++ b/backend/src/graphql/resolver/CommunityResolver.test.ts @@ -9,10 +9,17 @@ jest.mock('../../config') let query: any -beforeAll(async () => { - const { apollo } = await createServer({}) +// to do: We need a setup for the tests that closes the connection +let con: any - query = createTestClient(apollo).query +beforeAll(async () => { + const server = await createServer({}) + con = server.con + query = createTestClient(server.apollo).query +}) + +afterAll(async () => { + await con.close() }) describe('CommunityResolver', () => { diff --git a/backend/src/server/createServer.ts b/backend/src/server/createServer.ts index db841ab11..6c5149ce6 100644 --- a/backend/src/server/createServer.ts +++ b/backend/src/server/createServer.ts @@ -57,7 +57,7 @@ const createServer = async (context: any = serverContext): Promise => { plugins, }) apollo.applyMiddleware({ app }) - return { apollo, app } + return { apollo, app, con } } export default createServer From 669e7fbe3cabc1792410acb31a7b74b2f2567f01 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 19 Oct 2021 18:56:03 +0200 Subject: [PATCH 11/46] load mariadb instead of database --- .github/workflows/test.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 44792cdd3..d19184fd9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -353,7 +353,7 @@ jobs: unit_test_backend: name: Unit tests - Backend runs-on: ubuntu-latest - needs: [build_test_backend, build_test_database_up] + needs: [build_test_backend,build_test_mariadb] steps: ########################################################################## # CHECKOUT CODE ########################################################## @@ -363,13 +363,13 @@ jobs: ########################################################################## # DOWNLOAD DOCKER IMAGES ################################################# ########################################################################## - - name: Download Docker Image (Database) + - name: Download Docker Image (Mariadb) uses: actions/download-artifact@v2 with: - name: docker-database-test_up + name: docker-mariadb-test path: /tmp - name: Load Docker Image - run: docker load < /tmp/database_up.tar + run: docker load < /tmp/mariadb.tar - name: Download Docker Image (Backend) uses: actions/download-artifact@v2 with: @@ -381,9 +381,7 @@ jobs: # UNIT TESTS BACKEND ##################################################### ########################################################################## - name: backend | docker-compose - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database backend - - name: backend Unit tests | database up - run: docker-compose run -T database yarn up + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb backend - name: backend Unit tests | test run: docker-compose exec -T backend yarn test ########################################################################## From 878d1dcff9c95ec5863363f045678b9b670d9ac9 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 19 Oct 2021 19:05:27 +0200 Subject: [PATCH 12/46] test without compose override --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d19184fd9..9e69b8fd1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -381,7 +381,7 @@ jobs: # UNIT TESTS BACKEND ##################################################### ########################################################################## - name: backend | docker-compose - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb backend + run: docker-compose -f docker-compose.yml up --detach --no-deps mariadb backend - name: backend Unit tests | test run: docker-compose exec -T backend yarn test ########################################################################## From 0bc8115e0dc3392e667f751fc91587421de43aed Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 20 Oct 2021 02:22:51 +0200 Subject: [PATCH 13/46] run tests with docker-compose.test.yml environment --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9e69b8fd1..d19184fd9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -381,7 +381,7 @@ jobs: # UNIT TESTS BACKEND ##################################################### ########################################################################## - name: backend | docker-compose - run: docker-compose -f docker-compose.yml up --detach --no-deps mariadb backend + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb backend - name: backend Unit tests | test run: docker-compose exec -T backend yarn test ########################################################################## From 089732862ca8d21803a8e426d160e4c30654c9dc Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 20 Oct 2021 02:55:48 +0200 Subject: [PATCH 14/46] fix workflow - run test environment - use start instead of dev to enforce restarts - migrate database - log database connection errors --- .github/workflows/test.yml | 2 +- backend/Dockerfile | 2 +- backend/src/typeorm/connection.ts | 5 ++++- docker-compose.test.yml | 14 ++++++++++++++ 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d19184fd9..087602c21 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -381,7 +381,7 @@ jobs: # UNIT TESTS BACKEND ##################################################### ########################################################################## - name: backend | docker-compose - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb backend + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database backend - name: backend Unit tests | test run: docker-compose exec -T backend yarn test ########################################################################## diff --git a/backend/Dockerfile b/backend/Dockerfile index fc853eb63..a65ddaa92 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -73,7 +73,7 @@ RUN yarn run build FROM build as test # Run command -CMD /bin/sh -c "yarn run dev" +CMD /bin/sh -c "yarn run start" ################################################################################## # PRODUCTION (Does contain only "binary"- and static-files to reduce image size) # diff --git a/backend/src/typeorm/connection.ts b/backend/src/typeorm/connection.ts index 0fcd6aac3..857e76d47 100644 --- a/backend/src/typeorm/connection.ts +++ b/backend/src/typeorm/connection.ts @@ -16,7 +16,10 @@ const connection = async (): Promise => { entities: [path.join(__dirname, 'entity', '*.{ts,js}')], synchronize: false, }) - } catch (error) {} + } catch (error) { + // eslint-disable-next-line no-console + console.log(error) + } return con } diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 457faf950..34a2cafd1 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -2,6 +2,20 @@ version: "3.4" services: + ######################################################## + # BACKEND ############################################## + ######################################################## + backend: + image: gradido/backend:test + build: + target: test + networks: + - external-net + - internal-net + environment: + - NODE_ENV="test" + - DB_HOST=mariadb + ######################################################### ## MARIADB ############################################## ######################################################### From 71fc40bccf177071ff4c4a3416a1366df0eb7682 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 20 Oct 2021 15:31:59 +0200 Subject: [PATCH 15/46] show console --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 087602c21..758189799 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -383,7 +383,7 @@ jobs: - name: backend | docker-compose run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database backend - name: backend Unit tests | test - run: docker-compose exec -T backend yarn test + run: docker-compose exec backend yarn test ########################################################################## # COVERAGE CHECK BACKEND ################################################# ########################################################################## From 1bacbda3d6e14b5299383f801f0c0a5a1c961903 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 20 Oct 2021 15:37:34 +0200 Subject: [PATCH 16/46] disabled tty again --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 758189799..087602c21 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -383,7 +383,7 @@ jobs: - name: backend | docker-compose run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database backend - name: backend Unit tests | test - run: docker-compose exec backend yarn test + run: docker-compose exec -T backend yarn test ########################################################################## # COVERAGE CHECK BACKEND ################################################# ########################################################################## From 40e438e2b0cee046010060187d11282b6926da8b Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 20 Oct 2021 20:25:16 +0200 Subject: [PATCH 17/46] module alias in create server --- backend/src/server/createServer.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/server/createServer.ts b/backend/src/server/createServer.ts index 6c5149ce6..4644d982e 100644 --- a/backend/src/server/createServer.ts +++ b/backend/src/server/createServer.ts @@ -2,6 +2,7 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import 'reflect-metadata' +import 'module-alias/register' import { ApolloServer } from 'apollo-server-express' import express from 'express' From 669c805acc773f8d0b0ab94268361d935aca9c88 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 20 Oct 2021 20:34:19 +0200 Subject: [PATCH 18/46] coverage backend unit tests to 45% --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d55328acb..3ffbfc182 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -393,7 +393,7 @@ jobs: report_name: Coverage Backend type: lcov result_path: ./coverage/lcov.info - min_coverage: 1 + min_coverage: 45 token: ${{ github.token }} ############################################################################## From 097f1a33f9ef10e03a1c429ad7b2819cde623811 Mon Sep 17 00:00:00 2001 From: Dario via Pythagoras Date: Sun, 31 Oct 2021 10:54:51 +0100 Subject: [PATCH 19/46] fix user search --- login_server/src/cpp/controller/User.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login_server/src/cpp/controller/User.cpp b/login_server/src/cpp/controller/User.cpp index 576b2b8c8..0ff299309 100644 --- a/login_server/src/cpp/controller/User.cpp +++ b/login_server/src/cpp/controller/User.cpp @@ -69,7 +69,7 @@ namespace controller { using namespace Poco::Data::Keywords; Poco::Data::Statement select(session); - select << "SELECT id, first_name, last_name, email, username, description, pubkey, created, email_checked, disabled, group_id FROM " << db->getTableName(); + select << "SELECT id, first_name, last_name, email, username, description, pubkey, created, email_checked, disabled, group_id, publisher_id FROM " << db->getTableName(); select << " where email_checked = 0 "; select, into(resultFromDB); if (searchString != "") { From 823265771877094bba4def60705baff79487cc52 Mon Sep 17 00:00:00 2001 From: Dario via Pythagoras Date: Sun, 31 Oct 2021 11:09:31 +0100 Subject: [PATCH 20/46] fix defekt abort transaction button --- login_server/src/cpsp/CheckTransaction.cpsp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/login_server/src/cpsp/CheckTransaction.cpsp b/login_server/src/cpsp/CheckTransaction.cpsp index d866384b7..d303db8c3 100644 --- a/login_server/src/cpsp/CheckTransaction.cpsp +++ b/login_server/src/cpsp/CheckTransaction.cpsp @@ -74,7 +74,8 @@ enum PageState { { //mSession->finalizeTransaction(false, true); // - if(!transaction.isNull() && transaction->getModel()->getUserId() == user_model->getID()) + if(!transaction.isNull() && + (transaction_body->isCreation() || transaction->getModel()->getUserId() == user_model->getID())) { if(pt->removeTask(transaction)) { transaction->deleteFromDB(); @@ -150,7 +151,7 @@ enum PageState { transaction_body = transaction->getTransactionBody(); // user can only delete there own transactions // TODO: Auto timeout for community transactions - if(transaction->getModel()->getUserId() == user_model->getID()) { + if(transaction_body->isCreation() || transaction->getModel()->getUserId() == user_model->getID()) { transaction_removeable = true; } } @@ -354,4 +355,4 @@ enum PageState { -<%@ include file="include/footer_chr.cpsp" %> \ No newline at end of file +<%@ include file="include/footer_chr.cpsp" %> From 41137626bea484b89467d5c9d6a989751401f116 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Mon, 1 Nov 2021 03:45:46 +0100 Subject: [PATCH 21/46] suggest some extensions --- .vscode/extensions.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .vscode/extensions.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 000000000..a6dc06683 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "streetsidesoftware.code-spell-checker", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode" + ] +} \ No newline at end of file From 5bf98f20eb691d30c706281b63e11c359268c3ef Mon Sep 17 00:00:00 2001 From: Dario via Pythagoras Date: Wed, 3 Nov 2021 09:57:48 +0100 Subject: [PATCH 22/46] move skip button before abort button --- login_server/src/cpsp/CheckTransaction.cpsp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/login_server/src/cpsp/CheckTransaction.cpsp b/login_server/src/cpsp/CheckTransaction.cpsp index d303db8c3..f0c56c100 100644 --- a/login_server/src/cpsp/CheckTransaction.cpsp +++ b/login_server/src/cpsp/CheckTransaction.cpsp @@ -339,16 +339,15 @@ enum PageState { <%= gettext("Transaktion unterzeichnen") %> <% } %> + <% if(transaction_removeable) { %> - <% } else { %> - <% } %> <% } %> From 4f99a111f20ee154cc374f1b7d0bb3cfc27ad7a3 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 20 Oct 2021 20:25:16 +0200 Subject: [PATCH 23/46] module alias in create server --- backend/src/server/createServer.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/server/createServer.ts b/backend/src/server/createServer.ts index 6c5149ce6..4644d982e 100644 --- a/backend/src/server/createServer.ts +++ b/backend/src/server/createServer.ts @@ -2,6 +2,7 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import 'reflect-metadata' +import 'module-alias/register' import { ApolloServer } from 'apollo-server-express' import express from 'express' From 114cbb30701e712ab9c58d61974c8c58e75da011 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 21 Oct 2021 21:03:10 +0200 Subject: [PATCH 24/46] try not to start backend but execute it directly later on --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 209e39af8..9f86d17d4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -381,7 +381,7 @@ jobs: # UNIT TESTS BACKEND ##################################################### ########################################################################## - name: backend | docker-compose - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database backend + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database - name: backend Unit tests | test run: docker-compose exec -T backend yarn test ########################################################################## From fbc8b9c7ebd7766c2eabc31d5d0821ff503d0482 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 21 Oct 2021 21:23:36 +0200 Subject: [PATCH 25/46] use the same compose files for docker-exec --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9f86d17d4..c06b5ccdd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -383,7 +383,7 @@ jobs: - name: backend | docker-compose run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database - name: backend Unit tests | test - run: docker-compose exec -T backend yarn test + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec -T backend yarn test ########################################################################## # COVERAGE CHECK BACKEND ################################################# ########################################################################## From 29b9936fc782dc84b26490688be35dc02a800217 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 21 Oct 2021 21:39:04 +0200 Subject: [PATCH 26/46] try with a shellmask --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c06b5ccdd..90aed8b57 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -383,7 +383,8 @@ jobs: - name: backend | docker-compose run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database - name: backend Unit tests | test - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec -T backend yarn test + shell: 'script -q -e -c "bash {0}"' + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec backend yarn test ########################################################################## # COVERAGE CHECK BACKEND ################################################# ########################################################################## From ddc16876996624914984db5e430ef7b99c3a893f Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 21 Oct 2021 21:46:17 +0200 Subject: [PATCH 27/46] without shell mask or tty mask --- .github/workflows/test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 90aed8b57..e0e3ba381 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -383,7 +383,6 @@ jobs: - name: backend | docker-compose run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database - name: backend Unit tests | test - shell: 'script -q -e -c "bash {0}"' run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec backend yarn test ########################################################################## # COVERAGE CHECK BACKEND ################################################# From 5fcca07836481a58b3b7f166bc5e41f9ffd40909 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 21 Oct 2021 21:52:41 +0200 Subject: [PATCH 28/46] also start backend with docker-compose --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e0e3ba381..94dcdee22 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -381,7 +381,7 @@ jobs: # UNIT TESTS BACKEND ##################################################### ########################################################################## - name: backend | docker-compose - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database backend - name: backend Unit tests | test run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec backend yarn test ########################################################################## From 6504e54db123500baa48bfc0d905a475241ec5de Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 21 Oct 2021 22:31:21 +0200 Subject: [PATCH 29/46] tty disabled --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 94dcdee22..0c5335dbc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -383,7 +383,7 @@ jobs: - name: backend | docker-compose run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database backend - name: backend Unit tests | test - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec backend yarn test + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec -T backend yarn test ########################################################################## # COVERAGE CHECK BACKEND ################################################# ########################################################################## From eff239eeee471b5bd1523927a52f1f741d70602a Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 21 Oct 2021 22:38:56 +0200 Subject: [PATCH 30/46] check if we can avoid memory limit without coverage report --- backend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/package.json b/backend/package.json index 7b08be989..193a46f31 100644 --- a/backend/package.json +++ b/backend/package.json @@ -13,7 +13,7 @@ "start": "node build/index.js", "dev": "nodemon -w src --ext ts --exec ts-node src/index.ts", "lint": "eslint . --ext .js,.ts", - "test": "jest --coverage" + "test": "jest" }, "dependencies": { "@types/jest": "^27.0.2", From 9f264f7ad35a39aef9e0f7e50a8b318c7097362e Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 21 Oct 2021 22:45:45 +0200 Subject: [PATCH 31/46] jest coverage again --- backend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/package.json b/backend/package.json index 193a46f31..7b08be989 100644 --- a/backend/package.json +++ b/backend/package.json @@ -13,7 +13,7 @@ "start": "node build/index.js", "dev": "nodemon -w src --ext ts --exec ts-node src/index.ts", "lint": "eslint . --ext .js,.ts", - "test": "jest" + "test": "jest --coverage" }, "dependencies": { "@types/jest": "^27.0.2", From e1d1a05be50cd76614e3a22ad24f5d6be64cf139 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 21 Oct 2021 22:49:32 +0200 Subject: [PATCH 32/46] try to split command --- .github/workflows/test.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0c5335dbc..7575154f7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -380,8 +380,12 @@ jobs: ########################################################################## # UNIT TESTS BACKEND ##################################################### ########################################################################## - - name: backend | docker-compose - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database backend + - name: backend | docker-compose mariadb database + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database + - name: backend | docker-compose stop database + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml stop database + - name: backend | docker-compose backend + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps backend - name: backend Unit tests | test run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec -T backend yarn test ########################################################################## From a8b74073ceae94ff86669588247e898cad712ada Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 21 Oct 2021 23:00:29 +0200 Subject: [PATCH 33/46] revert stuff --- .github/workflows/test.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7575154f7..0c5335dbc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -380,12 +380,8 @@ jobs: ########################################################################## # UNIT TESTS BACKEND ##################################################### ########################################################################## - - name: backend | docker-compose mariadb database - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database - - name: backend | docker-compose stop database - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml stop database - - name: backend | docker-compose backend - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps backend + - name: backend | docker-compose + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database backend - name: backend Unit tests | test run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec -T backend yarn test ########################################################################## From 18b52663897a374713f4695a1bc3bbeb32466353 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 3 Nov 2021 23:25:49 +0100 Subject: [PATCH 34/46] adjuested database version accoridng to master --- backend/src/server/createServer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/server/createServer.ts b/backend/src/server/createServer.ts index 4644d982e..4350483ff 100644 --- a/backend/src/server/createServer.ts +++ b/backend/src/server/createServer.ts @@ -25,7 +25,7 @@ import schema from '../graphql/schema' // TODO implement // import queryComplexity, { simpleEstimator, fieldConfigEstimator } from "graphql-query-complexity"; -const DB_VERSION = '0002-add_settings' +const DB_VERSION = '0004-login_server_data' const createServer = async (context: any = serverContext): Promise => { // open mysql connection From f2b5155f1cd1ba82d2e42847fb09223cef8fc6cb Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 3 Nov 2021 23:31:41 +0100 Subject: [PATCH 35/46] merge error --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0c5335dbc..b3d9d997b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -47,7 +47,7 @@ jobs: ########################################################################## - name: Backend | Build `test` image run: | - docker build -f ./backend/Dockerfile --target test -t "gradido/backend:test" backend/ + docker build -f ./backend/Dockerfile --target test -t "gradido/backend:test" . docker save "gradido/backend:test" > /tmp/backend.tar - name: Upload Artifact uses: actions/upload-artifact@v2 From 153264b1ef45f895d8a4e2d72a4055e28beedf2d Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 3 Nov 2021 23:44:27 +0100 Subject: [PATCH 36/46] do not start the backend --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b3d9d997b..b4ec548a9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -381,7 +381,7 @@ jobs: # UNIT TESTS BACKEND ##################################################### ########################################################################## - name: backend | docker-compose - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database backend + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database - name: backend Unit tests | test run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec -T backend yarn test ########################################################################## From 9aecae227fa56ede80056e419f79a44c51ba9637 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 4 Nov 2021 00:10:37 +0100 Subject: [PATCH 37/46] run tests in band --- .github/workflows/test.yml | 2 +- backend/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b4ec548a9..b3d9d997b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -381,7 +381,7 @@ jobs: # UNIT TESTS BACKEND ##################################################### ########################################################################## - name: backend | docker-compose - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database backend - name: backend Unit tests | test run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec -T backend yarn test ########################################################################## diff --git a/backend/package.json b/backend/package.json index 7b08be989..c253f4178 100644 --- a/backend/package.json +++ b/backend/package.json @@ -13,7 +13,7 @@ "start": "node build/index.js", "dev": "nodemon -w src --ext ts --exec ts-node src/index.ts", "lint": "eslint . --ext .js,.ts", - "test": "jest --coverage" + "test": "jest --coverage --runInBand" }, "dependencies": { "@types/jest": "^27.0.2", From 33bbf4688a7c52146f534ee06414290bbd874f3b Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 4 Nov 2021 00:16:44 +0100 Subject: [PATCH 38/46] without coverage --- backend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/package.json b/backend/package.json index c253f4178..f60706996 100644 --- a/backend/package.json +++ b/backend/package.json @@ -13,7 +13,7 @@ "start": "node build/index.js", "dev": "nodemon -w src --ext ts --exec ts-node src/index.ts", "lint": "eslint . --ext .js,.ts", - "test": "jest --coverage --runInBand" + "test": "jest --runInBand" }, "dependencies": { "@types/jest": "^27.0.2", From 03d198183dcc87d13f45dcefa2c033105c6c73e5 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 4 Nov 2021 00:32:46 +0100 Subject: [PATCH 39/46] coverage again --- .github/workflows/test.yml | 3 ++- backend/package.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b3d9d997b..e1d5426e0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -383,7 +383,8 @@ jobs: - name: backend | docker-compose run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database backend - name: backend Unit tests | test - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec -T backend yarn test + run: cd backend && yarn && yarn test + # run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec -T backend yarn test ########################################################################## # COVERAGE CHECK BACKEND ################################################# ########################################################################## diff --git a/backend/package.json b/backend/package.json index f60706996..dda91d754 100644 --- a/backend/package.json +++ b/backend/package.json @@ -13,7 +13,7 @@ "start": "node build/index.js", "dev": "nodemon -w src --ext ts --exec ts-node src/index.ts", "lint": "eslint . --ext .js,.ts", - "test": "jest --runInBand" + "test": "jest --runInBand --coverage " }, "dependencies": { "@types/jest": "^27.0.2", From 8b047dfffe4064182b80f369bc27af8b99e760f3 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 4 Nov 2021 00:40:46 +0100 Subject: [PATCH 40/46] checkout database project aswell --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e1d5426e0..b00926dc8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -383,7 +383,7 @@ jobs: - name: backend | docker-compose run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database backend - name: backend Unit tests | test - run: cd backend && yarn && yarn test + run: cd database && yarn && cd ../backend && yarn && yarn test # run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec -T backend yarn test ########################################################################## # COVERAGE CHECK BACKEND ################################################# From 574ea377dbfda53f91b40ded3f4d6a20459138b9 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 4 Nov 2021 00:41:18 +0100 Subject: [PATCH 41/46] do not start the backend --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b00926dc8..68414b022 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -381,7 +381,7 @@ jobs: # UNIT TESTS BACKEND ##################################################### ########################################################################## - name: backend | docker-compose - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database backend + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb database - name: backend Unit tests | test run: cd database && yarn && cd ../backend && yarn && yarn test # run: docker-compose -f docker-compose.yml -f docker-compose.test.yml exec -T backend yarn test From 1f4058e5e556c41094fcb32e686e174ce0335921 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 4 Nov 2021 00:51:39 +0100 Subject: [PATCH 42/46] expose mariadb to external-net in test environment --- docker-compose.test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose.test.yml b/docker-compose.test.yml index b6ad3eb1f..9fc5eede8 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -29,6 +29,7 @@ services: - MARIADB_USER=root networks: - internal-net + - external-net ports: - 3306:3306 volumes: From aa40d4efbfa32e3cde5666e591930c3ac87d604a Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 4 Nov 2021 01:08:39 +0100 Subject: [PATCH 43/46] restart database project --- docker-compose.test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 9fc5eede8..740f62958 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -33,7 +33,8 @@ services: ports: - 3306:3306 volumes: - - db_test_vol:/var/lib/mysql + - db_test_vol:/var/lib/mysql + restart: always # this is very dangerous, but worth a test for the delayed mariadb startup at first run ######################################################### ## LOGIN SERVER ######################################### From d700c30dd1c8bd476069445e499900ecab1b2b28 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 4 Nov 2021 01:19:46 +0100 Subject: [PATCH 44/46] restart database not mariadb --- docker-compose.test.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 740f62958..e7b0e9849 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -16,6 +16,12 @@ services: - NODE_ENV="test" - DB_HOST=mariadb + ######################################################## + # DATABASE ############################################# + ######################################################## + database: + restart: always # this is very dangerous, but worth a test for the delayed mariadb startup at first run + ######################################################### ## MARIADB ############################################## ######################################################### @@ -34,7 +40,6 @@ services: - 3306:3306 volumes: - db_test_vol:/var/lib/mysql - restart: always # this is very dangerous, but worth a test for the delayed mariadb startup at first run ######################################################### ## LOGIN SERVER ######################################### From 2b99e1668142d96b417a0bb1cd86e93bd44f8b09 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 4 Nov 2021 01:30:39 +0100 Subject: [PATCH 45/46] correct coverage path --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 68414b022..75fd46a08 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -393,7 +393,7 @@ jobs: with: report_name: Coverage Backend type: lcov - result_path: ./coverage/lcov.info + result_path: ./backend/coverage/lcov.info min_coverage: 45 token: ${{ github.token }} From fc0dafeeb81661a83ee55447ab09206d179a62c9 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 4 Nov 2021 11:45:34 +0100 Subject: [PATCH 46/46] test dashboard plugin to increase coverage --- .github/workflows/test.yml | 2 +- frontend/jest.config.js | 3 ++- frontend/src/assets/mocks/styleMock.js | 1 + frontend/src/plugins/dashboard-plugin.test.js | 25 +++++++++++++++++++ 4 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 frontend/src/assets/mocks/styleMock.js create mode 100644 frontend/src/plugins/dashboard-plugin.test.js diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 75fd46a08..1e8d53acc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -344,7 +344,7 @@ jobs: report_name: Coverage Frontend type: lcov result_path: ./coverage/lcov.info - min_coverage: 83 + min_coverage: 85 token: ${{ github.token }} ############################################################################## diff --git a/frontend/jest.config.js b/frontend/jest.config.js index dc44ca43e..774aa6bf9 100644 --- a/frontend/jest.config.js +++ b/frontend/jest.config.js @@ -9,8 +9,9 @@ module.exports = { ], // coverageReporters: ['lcov', 'text'], moduleNameMapper: { - '^@/(.*)$': '/src/$1', '\\.(css|less)$': 'identity-obj-proxy', + '\\.(scss)$': '/src/assets/mocks/styleMock.js', + '^@/(.*)$': '/src/$1', }, transform: { '^.+\\.vue$': 'vue-jest', diff --git a/frontend/src/assets/mocks/styleMock.js b/frontend/src/assets/mocks/styleMock.js new file mode 100644 index 000000000..4ba52ba2c --- /dev/null +++ b/frontend/src/assets/mocks/styleMock.js @@ -0,0 +1 @@ +module.exports = {} diff --git a/frontend/src/plugins/dashboard-plugin.test.js b/frontend/src/plugins/dashboard-plugin.test.js new file mode 100644 index 000000000..3792ad2c4 --- /dev/null +++ b/frontend/src/plugins/dashboard-plugin.test.js @@ -0,0 +1,25 @@ +import dashboardPlugin from './dashboard-plugin.js' +import Vue from 'vue' + +import GlobalComponents from './globalComponents' +import GlobalDirectives from './globalDirectives' + +jest.mock('./globalComponents') +jest.mock('./globalDirectives') + +jest.mock('vue') + +const vueUseMock = jest.fn() +Vue.use = vueUseMock + +describe('dashboard plugin', () => { + dashboardPlugin.install(Vue) + + it('installs the global components', () => { + expect(vueUseMock).toBeCalledWith(GlobalComponents) + }) + + it('installs the global directives', () => { + expect(vueUseMock).toBeCalledWith(GlobalDirectives) + }) +})