From 8e213d1bed29d042802fa975ebe8ea74af0b452f Mon Sep 17 00:00:00 2001
From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com>
Date: Fri, 23 Sep 2022 15:59:00 +0200
Subject: [PATCH] fix(insee): store insee code in account and use it for
 alternate start

---
 __tests__/core/verifyUserIdentity.spec.js | 21 +++++++++++++++++++++
 src/core/types/types.js                   | 15 +++++++++++++++
 src/core/verifyUserIdentity.js            |  9 +++++++--
 src/index.js                              |  4 +++-
 src/requests/cozy.js                      |  5 +++++
 5 files changed, 51 insertions(+), 3 deletions(-)

diff --git a/__tests__/core/verifyUserIdentity.spec.js b/__tests__/core/verifyUserIdentity.spec.js
index 37a585c..4c3dd13 100644
--- a/__tests__/core/verifyUserIdentity.spec.js
+++ b/__tests__/core/verifyUserIdentity.spec.js
@@ -71,4 +71,25 @@ describe('verifyUserIdentity', () => {
       expect(true).toBe(false)
     }
   })
+  it('should return void when pdl give and recieved are matching with stored inseecode ✅', async () => {
+    expect.assertions(1)
+    try {
+      await verifyUserIdentity(
+        {
+          name: 'John',
+          address: '1 street',
+          pointId: '12345',
+          postalCode: '69069',
+        },
+        'azertyuiop',
+        'apiKey',
+        'login@user.com',
+        true,
+        '69387'
+      )
+      expect(true).toBeTruthy()
+    } catch (error) {
+      expect(true).toBe(false)
+    }
+  })
 })
diff --git a/src/core/types/types.js b/src/core/types/types.js
index bcaa2ff..e69c308 100644
--- a/src/core/types/types.js
+++ b/src/core/types/types.js
@@ -72,3 +72,18 @@
  * @property {string} mesuresCorrigees
  * @property {string} periodiciteTransmission
  */
+
+/**
+ * Account definition
+ * @typedef {object} Account
+ * @property {AccountData} data
+ * @property {object} auth
+ * @property {object} cozyMetadata
+ */
+
+/**
+ * AccountData definition
+ * @typedef {object} AccountData
+ * @property {number} consentId
+ * @property {string} inseeCode
+ */
diff --git a/src/core/verifyUserIdentity.js b/src/core/verifyUserIdentity.js
index 22a13c3..086303e 100644
--- a/src/core/verifyUserIdentity.js
+++ b/src/core/verifyUserIdentity.js
@@ -17,9 +17,14 @@ async function verifyUserIdentity(
   baseUrl,
   apiAuthKey,
   loginUtilisateur,
-  isAlternateStart = false
+  isAlternateStart = false,
+  inseeCode = ''
 ) {
-  const inseeCode = await getInseeCode(fields.postalCode, fields.city)
+  // If first start get InseeCode
+  log('debug', 'verifyUserIdentity')
+  if (!isAlternateStart) {
+    inseeCode = await getInseeCode(fields.postalCode, fields.city)
+  }
 
   const pdl = await findUserPdl(
     `${baseUrl}/enedis_SDE_recherche-point/1.0`,
diff --git a/src/index.js b/src/index.js
index b91d909..a437971 100644
--- a/src/index.js
+++ b/src/index.js
@@ -168,6 +168,7 @@ async function start(fields, cozyParameters) {
     await saveAccountData(this.accountId, {
       ...accountData.data,
       consentId: consent.ID,
+      inseeCode: user.inseeCode,
     })
   } else {
     log('info', 'Alternate start...')
@@ -182,7 +183,8 @@ async function start(fields, cozyParameters) {
       baseUrl,
       apiAuthKey,
       sgeLogin,
-      true
+      true,
+      accountData.data.inseeCode
     )
 
     if (!userConsent) {
diff --git a/src/requests/cozy.js b/src/requests/cozy.js
index 138c822..5bbb86b 100644
--- a/src/requests/cozy.js
+++ b/src/requests/cozy.js
@@ -14,6 +14,11 @@ async function saveAccountData(accountId, accountData) {
   return account
 }
 
+/**
+ * Return account
+ * @param {string} accountId
+ * @returns {Account}
+ */
 async function getAccount(accountId) {
   log('info', `getAccount: ${accountId}`)
   const accounts = await cozyClient.data.findAll('io.cozy.accounts')
-- 
GitLab