diff --git a/packages/backend/src/config/app.ts b/packages/backend/src/config/app.ts index bfa760885e..24ff5663b3 100644 --- a/packages/backend/src/config/app.ts +++ b/packages/backend/src/config/app.ts @@ -49,6 +49,7 @@ type AppConfig = { smtpPassword: string; fromEmail: string; isCloud: boolean; + isMation: boolean; isSelfHosted: boolean; paddleVendorId: number; paddleVendorAuthCode: string; @@ -127,6 +128,7 @@ const appConfig: AppConfig = { fromEmail: process.env.FROM_EMAIL, isCloud: process.env.AUTOMATISCH_CLOUD === 'true', isSelfHosted: process.env.AUTOMATISCH_CLOUD !== 'true', + isMation: process.env.MATION === 'true', paddleVendorId: Number(process.env.PADDLE_VENDOR_ID), paddleVendorAuthCode: process.env.PADDLE_VENDOR_AUTH_CODE, paddlePublicKey: process.env.PADDLE_PUBLIC_KEY, diff --git a/packages/backend/src/graphql/queries/get-automatisch-info.test.ts b/packages/backend/src/graphql/queries/get-automatisch-info.test.ts index 275a32fa0c..e5c0b24447 100644 --- a/packages/backend/src/graphql/queries/get-automatisch-info.test.ts +++ b/packages/backend/src/graphql/queries/get-automatisch-info.test.ts @@ -9,6 +9,7 @@ describe('graphQL getAutomatischInfo query', () => { query { getAutomatischInfo { isCloud + isMation license { id name @@ -24,6 +25,7 @@ describe('graphQL getAutomatischInfo query', () => { jest.spyOn(license, 'getLicense').mockResolvedValue(false); jest.replaceProperty(appConfig, 'isCloud', false); + jest.replaceProperty(appConfig, 'isMation', false); }); it('should return empty license data', async () => { @@ -36,6 +38,7 @@ describe('graphQL getAutomatischInfo query', () => { data: { getAutomatischInfo: { isCloud: false, + isMation: false, license: { id: null, name: null, @@ -77,6 +80,7 @@ describe('graphQL getAutomatischInfo query', () => { data: { getAutomatischInfo: { isCloud: true, + isMation: false, license: { expireAt: '2025-08-09T10:56:54.144Z', id: '123123', @@ -105,6 +109,69 @@ describe('graphQL getAutomatischInfo query', () => { const expectedResponsePayload = { data: { getAutomatischInfo: { + isCloud: false, + isMation: false, + license: { + expireAt: '2025-08-09T10:56:54.144Z', + id: '123123', + name: 'Test License', + verified: true, + }, + }, + }, + }; + + expect(response.body).toEqual(expectedResponsePayload); + }); + }); + + describe('and with mation flag enabled', () => { + beforeEach(async () => { + jest.replaceProperty(appConfig, 'isCloud', false); + jest.replaceProperty(appConfig, 'isMation', true); + }); + + it('should return all license data', async () => { + const response = await request(app) + .post('/graphql') + .send({ query }) + .expect(200); + + const expectedResponsePayload = { + data: { + getAutomatischInfo: { + isCloud: false, + isMation: true, + license: { + expireAt: '2025-08-09T10:56:54.144Z', + id: '123123', + name: 'Test License', + verified: true, + }, + }, + }, + }; + + expect(response.body).toEqual(expectedResponsePayload); + }); + }); + + describe('and with mation flag disabled', () => { + beforeEach(async () => { + jest.replaceProperty(appConfig, 'isCloud', false); + jest.replaceProperty(appConfig, 'isMation', false); + }); + + it('should return all license data', async () => { + const response = await request(app) + .post('/graphql') + .send({ query }) + .expect(200); + + const expectedResponsePayload = { + data: { + getAutomatischInfo: { + isMation: false, isCloud: false, license: { expireAt: '2025-08-09T10:56:54.144Z', diff --git a/packages/backend/src/graphql/queries/get-automatisch-info.ts b/packages/backend/src/graphql/queries/get-automatisch-info.ts index 0886d563f8..dd89d27364 100644 --- a/packages/backend/src/graphql/queries/get-automatisch-info.ts +++ b/packages/backend/src/graphql/queries/get-automatisch-info.ts @@ -13,6 +13,7 @@ const getAutomatischInfo = async () => { return { isCloud: appConfig.isCloud, + isMation: appConfig.isMation, license: computedLicense, }; }; diff --git a/packages/backend/src/graphql/schema.graphql b/packages/backend/src/graphql/schema.graphql index f5b5050066..895c9dc56a 100644 --- a/packages/backend/src/graphql/schema.graphql +++ b/packages/backend/src/graphql/schema.graphql @@ -646,6 +646,7 @@ type AppHealth { type GetAutomatischInfo { isCloud: Boolean + isMation: Boolean license: License } diff --git a/packages/web/src/graphql/queries/get-automatisch-info.ts b/packages/web/src/graphql/queries/get-automatisch-info.ts index e8dcdd90a8..296986bb9c 100644 --- a/packages/web/src/graphql/queries/get-automatisch-info.ts +++ b/packages/web/src/graphql/queries/get-automatisch-info.ts @@ -4,6 +4,7 @@ export const GET_AUTOMATISCH_INFO = gql` query GetAutomatischInfo { getAutomatischInfo { isCloud + isMation } } `;