From 33b4aa5dab423dac4c4f79acfa9483a5149cb85d Mon Sep 17 00:00:00 2001 From: Ole Langbehn <ole.langbehn@inoio.de> Date: Mon, 4 Sep 2023 11:54:43 +0200 Subject: [PATCH] HOLI-3881 add fake mode for local development without credentials --- app/main.ts | 4 +++- app/server.ts | 12 ++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/main.ts b/app/main.ts index 997360f..8b15cf9 100644 --- a/app/main.ts +++ b/app/main.ts @@ -15,7 +15,7 @@ logger.setUpLogger( ); const required = <T>(name: string, t?: T, fallback?: T): T => { - if (t === undefined && fallback === undefined) { + if (!t && fallback === undefined) { throw Error(`Environment variable "${name}" is required`); } else { return t !== undefined ? t : fallback!; @@ -51,6 +51,8 @@ const serverConfigFromEnv = (): ServerConfig => { (environment === "production" ? "https://images.holi.social" : "https://dev-images.holi.social"), + fake: asBoolean(Deno.env.get("FAKE")) || false, // For local development. If set, the API returns dummy data + }; }; diff --git a/app/server.ts b/app/server.ts index 5928f15..dc2f622 100644 --- a/app/server.ts +++ b/app/server.ts @@ -85,16 +85,16 @@ const createResolvers = (config: ServerConfig) => ({ // deno-lint-ignore no-explicit-any _parent: any, parameters: EngagementOpportunitiesParameters, - ) => fetchEngagementOpportunities(config)(parameters), + ) => config.fake ? Promise.resolve({totalResults: 0, data: []}) : fetchEngagementOpportunities(config)(parameters), engagement: ( // deno-lint-ignore no-explicit-any _parent: any, parameters: EngagementParameters, - ) => fetchEngagement(config)(parameters), + ) => config.fake ? Promise.resolve(null) : fetchEngagement(config)(parameters), categories: ( // deno-lint-ignore no-explicit-any _parent: any, - ) => fetchCategories(config.voltastics), + ) => config.fake ? Promise.resolve({data: []}) : fetchCategories(config.voltastics), engagements: ( // deno-lint-ignore no-explicit-any _parent: any, @@ -110,7 +110,7 @@ const createResolvers = (config: ServerConfig) => ({ // deno-lint-ignore no-explicit-any _parent: any, parameters: TrackEngagementViewParameters, - ) => trackEngagementView(config.voltastics)(parameters), + ) => config.fake ? Promise.resolve({id: parameters.id}) : trackEngagementView(config.voltastics)(parameters), }, }); @@ -128,6 +128,7 @@ export interface ServerConfig { cacheTtlMsVoltastics?: number; // default: 60 seconds voltastics: VoltasticsConfig; imageProxyBaseUrl: string; + fake: boolean; // For local development. If set, the API returns dummy data } export const createGraphQLServer = (config: ServerConfig): GraphQLServer => { @@ -171,6 +172,9 @@ export const startServer = (config: ServerConfig): Promise<void> => { hostname === "0.0.0.0" ? "localhost" : hostname }:${port}/graphql`, ); + if(config.fake) { + logger.info(`Server is serving fake data due to FAKE env var set to true`) + } }, }); }; -- GitLab