From 5e4c4b274ca9b235132482e0b79a66a66e8d997a Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 18 May 2023 11:45:18 +0200 Subject: [PATCH 1/7] removed all test resolvers --- .../api/1_0/resolver/TestResolver.test.ts | 41 ----------------- .../graphql/api/1_0/resolver/TestResolver.ts | 14 ------ .../api/1_1/resolver/TestResolver.test.ts | 44 ------------------- .../graphql/api/1_1/resolver/TestResolver.ts | 14 ------ .../api/2_0/resolver/TestResolver.test.ts | 44 ------------------- .../graphql/api/2_0/resolver/TestResolver.ts | 14 ------ .../src/graphql/api/GetTestApiResult.ts | 13 ------ 7 files changed, 184 deletions(-) delete mode 100644 federation/src/graphql/api/1_0/resolver/TestResolver.test.ts delete mode 100644 federation/src/graphql/api/1_0/resolver/TestResolver.ts delete mode 100644 federation/src/graphql/api/1_1/resolver/TestResolver.test.ts delete mode 100644 federation/src/graphql/api/1_1/resolver/TestResolver.ts delete mode 100644 federation/src/graphql/api/2_0/resolver/TestResolver.test.ts delete mode 100644 federation/src/graphql/api/2_0/resolver/TestResolver.ts delete mode 100644 federation/src/graphql/api/GetTestApiResult.ts diff --git a/federation/src/graphql/api/1_0/resolver/TestResolver.test.ts b/federation/src/graphql/api/1_0/resolver/TestResolver.test.ts deleted file mode 100644 index e236ee5d8..000000000 --- a/federation/src/graphql/api/1_0/resolver/TestResolver.test.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { createTestClient } from 'apollo-server-testing' -import createServer from '@/server/createServer' - -let query: any - -// to do: We need a setup for the tests that closes the connection -let con: any - -beforeAll(async () => { - const server = await createServer() - con = server.con - query = createTestClient(server.apollo).query -}) - -afterAll(async () => { - await con.close() -}) - -describe('TestResolver', () => { - const getTestQuery = ` - query { - test { - api - } - } - ` - - describe('getTestApi', () => { - it('returns 1_0', async () => { - await expect(query({ query: getTestQuery })).resolves.toMatchObject({ - data: { - test: { - api: '1_0', - }, - }, - }) - }) - }) -}) diff --git a/federation/src/graphql/api/1_0/resolver/TestResolver.ts b/federation/src/graphql/api/1_0/resolver/TestResolver.ts deleted file mode 100644 index 9fb2fc797..000000000 --- a/federation/src/graphql/api/1_0/resolver/TestResolver.ts +++ /dev/null @@ -1,14 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { Query, Resolver } from 'type-graphql' -import { federationLogger as logger } from '@/server/logger' -import { GetTestApiResult } from '../../GetTestApiResult' - -@Resolver() -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export class TestResolver { - @Query(() => GetTestApiResult) - async test(): Promise { - logger.info(`test api 1_0`) - return new GetTestApiResult('1_0') - } -} diff --git a/federation/src/graphql/api/1_1/resolver/TestResolver.test.ts b/federation/src/graphql/api/1_1/resolver/TestResolver.test.ts deleted file mode 100644 index ad08345a7..000000000 --- a/federation/src/graphql/api/1_1/resolver/TestResolver.test.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { createTestClient } from 'apollo-server-testing' -import createServer from '@/server/createServer' -import CONFIG from '@/config' - -CONFIG.FEDERATION_API = '1_1' - -let query: any - -// to do: We need a setup for the tests that closes the connection -let con: any - -beforeAll(async () => { - const server = await createServer() - con = server.con - query = createTestClient(server.apollo).query -}) - -afterAll(async () => { - await con.close() -}) - -describe('TestResolver', () => { - const getTestQuery = ` - query { - test { - api - } - } - ` - - describe('getTestApi', () => { - it('returns 1_1', async () => { - await expect(query({ query: getTestQuery })).resolves.toMatchObject({ - data: { - test: { - api: '1_1', - }, - }, - }) - }) - }) -}) diff --git a/federation/src/graphql/api/1_1/resolver/TestResolver.ts b/federation/src/graphql/api/1_1/resolver/TestResolver.ts deleted file mode 100644 index 74e02b74a..000000000 --- a/federation/src/graphql/api/1_1/resolver/TestResolver.ts +++ /dev/null @@ -1,14 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { Query, Resolver } from 'type-graphql' -import { federationLogger as logger } from '@/server/logger' -import { GetTestApiResult } from '../../GetTestApiResult' - -@Resolver() -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export class TestResolver { - @Query(() => GetTestApiResult) - async test(): Promise { - logger.info(`test api 1_1`) - return new GetTestApiResult('1_1') - } -} diff --git a/federation/src/graphql/api/2_0/resolver/TestResolver.test.ts b/federation/src/graphql/api/2_0/resolver/TestResolver.test.ts deleted file mode 100644 index 02fd8c358..000000000 --- a/federation/src/graphql/api/2_0/resolver/TestResolver.test.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { createTestClient } from 'apollo-server-testing' -import createServer from '@/server/createServer' -import CONFIG from '@/config' - -CONFIG.FEDERATION_API = '2_0' - -let query: any - -// to do: We need a setup for the tests that closes the connection -let con: any - -beforeAll(async () => { - const server = await createServer() - con = server.con - query = createTestClient(server.apollo).query -}) - -afterAll(async () => { - await con.close() -}) - -describe('TestResolver', () => { - const getTestQuery = ` - query { - test { - api - } - } - ` - - describe('getTestApi', () => { - it('returns 2_0', async () => { - await expect(query({ query: getTestQuery })).resolves.toMatchObject({ - data: { - test: { - api: '2_0', - }, - }, - }) - }) - }) -}) diff --git a/federation/src/graphql/api/2_0/resolver/TestResolver.ts b/federation/src/graphql/api/2_0/resolver/TestResolver.ts deleted file mode 100644 index 4202bbbfe..000000000 --- a/federation/src/graphql/api/2_0/resolver/TestResolver.ts +++ /dev/null @@ -1,14 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { Query, Resolver } from 'type-graphql' -import { federationLogger as logger } from '@/server/logger' -import { GetTestApiResult } from '../../GetTestApiResult' - -@Resolver() -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export class TestResolver { - @Query(() => GetTestApiResult) - async test(): Promise { - logger.info(`test api 2_0`) - return new GetTestApiResult('2_0') - } -} diff --git a/federation/src/graphql/api/GetTestApiResult.ts b/federation/src/graphql/api/GetTestApiResult.ts deleted file mode 100644 index 942ff7b6c..000000000 --- a/federation/src/graphql/api/GetTestApiResult.ts +++ /dev/null @@ -1,13 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { Field, ObjectType } from 'type-graphql' - -@ObjectType() -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export class GetTestApiResult { - constructor(apiVersion: string) { - this.api = apiVersion - } - - @Field(() => String) - api: string -} From 15ca48a3321f53b9a5fecab93ac7e5da05af7221 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 18 May 2023 11:45:51 +0200 Subject: [PATCH 2/7] implement PublicKeyResolver for 1.1 using inheritance --- .../src/graphql/api/1_1/resolver/PublicKeyResolver.ts | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 federation/src/graphql/api/1_1/resolver/PublicKeyResolver.ts diff --git a/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.ts b/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.ts new file mode 100644 index 000000000..b285cbba8 --- /dev/null +++ b/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.ts @@ -0,0 +1,7 @@ +import { Resolver } from 'type-graphql' +// eslint-disable-next-line camelcase +import { PublicKeyResolver as PublicKeyResolver_1_0 } from '../../1_0/resolver/PublicKeyResolver' + +@Resolver() +// eslint-disable-next-line camelcase, @typescript-eslint/no-unused-vars +export class PublicKeyResolver extends PublicKeyResolver_1_0 {} From 403c0f1f646cd4df8cd2d9cc359ead67f545a1ae Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 18 May 2023 11:48:01 +0200 Subject: [PATCH 3/7] removed Decimal Scalar to meet coverage requirement, no decimal is used yet --- .../src/graphql/scalar/{Decimal.ts => Decimal.ts.unused} | 0 federation/src/graphql/schema.ts | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) rename federation/src/graphql/scalar/{Decimal.ts => Decimal.ts.unused} (100%) diff --git a/federation/src/graphql/scalar/Decimal.ts b/federation/src/graphql/scalar/Decimal.ts.unused similarity index 100% rename from federation/src/graphql/scalar/Decimal.ts rename to federation/src/graphql/scalar/Decimal.ts.unused diff --git a/federation/src/graphql/schema.ts b/federation/src/graphql/schema.ts index 92977882b..015ea124f 100644 --- a/federation/src/graphql/schema.ts +++ b/federation/src/graphql/schema.ts @@ -2,15 +2,15 @@ import { GraphQLSchema } from 'graphql' import { buildSchema } from 'type-graphql' // import isAuthorized from './directive/isAuthorized' -import DecimalScalar from './scalar/Decimal' -import Decimal from 'decimal.js-light' +// import DecimalScalar from './scalar/Decimal' +// import Decimal from 'decimal.js-light' import { getApiResolvers } from './api/schema' const schema = async (): Promise => { return await buildSchema({ resolvers: [getApiResolvers()], // authChecker: isAuthorized, - scalarsMap: [{ type: Decimal, scalar: DecimalScalar }], + // scalarsMap: [{ type: Decimal, scalar: DecimalScalar }], }) } From 74b9c86e6650dc59c00c6df29d301956b9dff5d5 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 18 May 2023 11:54:36 +0200 Subject: [PATCH 4/7] remove reference to api 2.0 from bare_metal .env.dist --- deployment/bare_metal/.env.dist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/bare_metal/.env.dist b/deployment/bare_metal/.env.dist index f20a8c2d1..f81c62eca 100644 --- a/deployment/bare_metal/.env.dist +++ b/deployment/bare_metal/.env.dist @@ -68,7 +68,7 @@ FEDERATION_COMMUNITY_API_PORT=5000 FEDERATION_CONFIG_VERSION=v1.2023-01-09 # comma separated list of api-versions, which cause starting several federation modules -FEDERATION_COMMUNITY_APIS=1_0,1_1,2_0 +FEDERATION_COMMUNITY_APIS=1_0,1_1 # database DATABASE_CONFIG_VERSION=v1.2022-03-18 From cf941518ed88283a16e012bc34599bdc4e7f8e4b Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 18 May 2023 11:56:50 +0200 Subject: [PATCH 5/7] lint fixes --- federation/src/graphql/api/1_1/resolver/PublicKeyResolver.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.ts b/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.ts index b285cbba8..e03b36075 100644 --- a/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.ts +++ b/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars import { Resolver } from 'type-graphql' // eslint-disable-next-line camelcase import { PublicKeyResolver as PublicKeyResolver_1_0 } from '../../1_0/resolver/PublicKeyResolver' From 97513c1b2564951cf9f9e5a34f992a2dc6e34e07 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 18 May 2023 12:24:12 +0200 Subject: [PATCH 6/7] enforce FEDERATION_API 1.0 on getpublicKey Resolver --- .../src/graphql/api/1_0/resolver/PublicKeyResolver.test.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/federation/src/graphql/api/1_0/resolver/PublicKeyResolver.test.ts b/federation/src/graphql/api/1_0/resolver/PublicKeyResolver.test.ts index 18d2a7599..83c024c9f 100644 --- a/federation/src/graphql/api/1_0/resolver/PublicKeyResolver.test.ts +++ b/federation/src/graphql/api/1_0/resolver/PublicKeyResolver.test.ts @@ -3,12 +3,15 @@ import { createTestClient } from 'apollo-server-testing' import createServer from '@/server/createServer' import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity' +import CONFIG from '@/config' let query: any // to do: We need a setup for the tests that closes the connection let con: any +CONFIG.FEDERATION_API = '1_0' + beforeAll(async () => { const server = await createServer() con = server.con From 33375c347ff69b2f8d7fe0a7d8ffce1fe19040ac Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 18 May 2023 12:24:49 +0200 Subject: [PATCH 7/7] also test getPublicKey for 1.1 --- .../1_1/resolver/PublicKeyResolver.test.ts | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 federation/src/graphql/api/1_1/resolver/PublicKeyResolver.test.ts diff --git a/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.test.ts b/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.test.ts new file mode 100644 index 000000000..d41b53263 --- /dev/null +++ b/federation/src/graphql/api/1_1/resolver/PublicKeyResolver.test.ts @@ -0,0 +1,56 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ +import { createTestClient } from 'apollo-server-testing' +import createServer from '@/server/createServer' +import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity' +import CONFIG from '@/config' + +let query: any + +// to do: We need a setup for the tests that closes the connection +let con: any + +CONFIG.FEDERATION_API = '1_1' + +beforeAll(async () => { + const server = await createServer() + con = server.con + query = createTestClient(server.apollo).query + DbFederatedCommunity.clear() +}) + +afterAll(async () => { + await con.close() +}) + +describe('PublicKeyResolver', () => { + const getPublicKeyQuery = ` + query { + getPublicKey + { + publicKey + } + } + ` + + describe('getPublicKey', () => { + beforeEach(async () => { + const homeCom = new DbFederatedCommunity() + homeCom.foreign = false + homeCom.apiVersion = '1_0' + homeCom.endPoint = 'endpoint-url' + homeCom.publicKey = Buffer.from('homeCommunity-publicKey') + await DbFederatedCommunity.insert(homeCom) + }) + + it('returns homeCommunity-publicKey', async () => { + await expect(query({ query: getPublicKeyQuery })).resolves.toMatchObject({ + data: { + getPublicKey: { + publicKey: expect.stringMatching('homeCommunity-publicKey'), + }, + }, + }) + }) + }) +})