From 815c4b2386713566f9607671fc999fa172b5900e Mon Sep 17 00:00:00 2001
From: sandcha <sandcha@users.noreply.github.com>
Date: Tue, 4 Oct 2022 14:46:39 +0200
Subject: [PATCH] Introduce BUDGET_OAUTH2_JWT_TEST_TOKEN env var To set a token
 for tests requesting calculations from Web API

---
 example.env                    |  3 ++-
 src/app.d.ts                   |  1 +
 src/lib/api-budget.test.ts     |  4 ++--
 src/lib/auditors/config.ts     | 12 +++++++++++-
 src/lib/config-csg-activite.ts |  1 -
 src/lib/server/config.ts       |  3 +++
 6 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/example.env b/example.env
index 2ce634892..d4f425249 100644
--- a/example.env
+++ b/example.env
@@ -21,10 +21,11 @@ GITHUB_PERSONAL_ACCESS_TOKEN=null
 OAUTH2_ACCESS_TOKEN_URL="https://IDENTITY_PROVIDER/REALM/token"
 OAUTH2_AUTHORIZATION_URL="https://IDENTITY_PROVIDER/REALM/auth"
 OAUTH2_PROFILE_URL="https://IDENTITY_PROVIDER/REALM/userinfo"
-# different values for developement and production modes
+# set different values for developement and production modes
 OAUTH2_CLIENT_ID="OAUTH2_CLIENT_ID"
 OAUTH2_CLIENT_SECRET="OAUTH2_CLIENT_SECRET"
 OAUTH2_JWT_SECRET="OAUTH2_JWT_SECRET"
+BUDGET_OAUTH2_JWT_TEST_TOKEN="OAUTH2_JWT_TEST_TOKEN__GET_FROM_INTEGRATION_RESPONSE"
 
 # Description of OpenFisca country repository (for edition / contribution)
 OPENFISCA_BRANCH="harmonisation_ui_emmanuel"
diff --git a/src/app.d.ts b/src/app.d.ts
index 384c1e663..b063e0239 100644
--- a/src/app.d.ts
+++ b/src/app.d.ts
@@ -24,6 +24,7 @@ declare namespace App {
       apiBudgetEndpointName: string
       calculationBaseYear: number
       calculationPlfYear: number
+      jwtTestToken?: string
     }
     openfiscaRepository: SessionOpenFiscaRepository
     portalUrl: string
diff --git a/src/lib/api-budget.test.ts b/src/lib/api-budget.test.ts
index d699d9e9a..74d86bbc2 100644
--- a/src/lib/api-budget.test.ts
+++ b/src/lib/api-budget.test.ts
@@ -74,7 +74,7 @@ test("calculateBudget", () => {
     "https://api-simu-etat-integ.leximpact.dev/state_simulation"
   const YEAR_BASE = "2022"
   const YEAR_PLF = ""
-  const UNKNOWN_USER = config.oauth2.jwtSecret
+  const TOKEN_TEST_USER = config.budget.jwtTestToken
   const AMENDEMENT_EXAMPLE = {
     // AmendementRequest
     "prelevements_sociaux.contributions_sociales.csg.activite.imposable.taux": 0.064,
@@ -149,7 +149,7 @@ test("calculateBudget", () => {
   calculateBudget(
     fetch,
     API_ENDPOINT_URL,
-    UNKNOWN_USER,
+    TOKEN_TEST_USER,
     YEAR_BASE,
     YEAR_PLF,
     AMENDEMENT_EXAMPLE_2,
diff --git a/src/lib/auditors/config.ts b/src/lib/auditors/config.ts
index ec2f45f75..9aaac70b4 100644
--- a/src/lib/auditors/config.ts
+++ b/src/lib/auditors/config.ts
@@ -198,8 +198,8 @@ export function auditOpenFiscaRepository(
       true,
       errors,
       remainingKeys,
+      auditString,
       auditTrimString,
-      auditRequire,
     )
   }
   for (const key of ["rawUrlTemplate", "urlTemplate"]) {
@@ -261,6 +261,16 @@ function auditBudget(audit: Audit, dataUnknown: unknown): [unknown, unknown] {
     )
   }
 
+  audit.attribute(
+    data,
+    "jwtTestToken",
+    true,
+    errors,
+    remainingKeys,
+    auditString,
+    auditTrimString,
+  )
+
   return audit.reduceRemaining(data, errors, remainingKeys)
 }
 
diff --git a/src/lib/config-csg-activite.ts b/src/lib/config-csg-activite.ts
index a3452920f..eed537ac8 100644
--- a/src/lib/config-csg-activite.ts
+++ b/src/lib/config-csg-activite.ts
@@ -12,7 +12,6 @@ const API_OUTPUT_VARIABLES: string[] = [
   "assiette_csg_abattue",
   "assiette_csg_non_abattue",
   "csg_imposable_salaire",
-
   "csg_deductible_salaire",
 ]
 const API_QUANTILES_BASE_VARIABLES: string[] = [
diff --git a/src/lib/server/config.ts b/src/lib/server/config.ts
index cf013951b..fe04e51d2 100644
--- a/src/lib/server/config.ts
+++ b/src/lib/server/config.ts
@@ -17,6 +17,7 @@ export interface Config {
     clientId: string
     clientSecret: string
     jwtSecret: string
+    jwtTestToken: string
     profileUrl: string
   }
   openfiscaRepository: {
@@ -36,6 +37,7 @@ export interface Config {
     apiBudgetEndpointName: string
     calculationBaseYear: number
     calculationPlfYear: number
+    jwtTestToken?: string
   }
 }
 
@@ -79,6 +81,7 @@ const [validConfig, error] = validateConfig({
         apiBudgetEndpointName: process.env["API_BUDGET_ENDPOINT_NAME"],
         calculationBaseYear: process.env["CALCULATION_BASE_YEAR"],
         calculationPlfYear: process.env["CALCULATION_PLF_YEAR"],
+        jwtTestToken: process.env["BUDGET_OAUTH2_JWT_TEST_TOKEN"],
       }
     : null,
 })
-- 
GitLab