From 5c796436f2bf665853b17ab98f50d43573060755 Mon Sep 17 00:00:00 2001
From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com>
Date: Thu, 11 Aug 2022 14:42:47 +0200
Subject: [PATCH] fix: type issue on pointID

---
 manifest.konnector      |  2 +-
 src/core/types/types.js |  2 +-
 src/index.js            | 35 +++++++++++++++++++++++------------
 src/requests/bo.js      | 10 +++++++---
 4 files changed, 32 insertions(+), 17 deletions(-)

diff --git a/manifest.konnector b/manifest.konnector
index 17bc04d..9f38cba 100644
--- a/manifest.konnector
+++ b/manifest.konnector
@@ -27,7 +27,7 @@
       "type": "string"
     },
     "pointId": {
-      "type": "number"
+      "type": "string"
     }
   },
   "data_types": [
diff --git a/src/core/types/types.js b/src/core/types/types.js
index f857db4..6c5804f 100644
--- a/src/core/types/types.js
+++ b/src/core/types/types.js
@@ -22,7 +22,7 @@
  * @property {string} apiToken
  * @property {string} sgeLogin
  * @property {string} contractId
- * @property {number} pointId
+ * @property {string} pointId
  * @property {string} lastname
  * @property {string} boBaseUrl
  * @property {string} boToken
diff --git a/src/index.js b/src/index.js
index 876e025..09c9607 100644
--- a/src/index.js
+++ b/src/index.js
@@ -64,12 +64,14 @@ module.exports = new BaseKonnector(start)
 async function start(fields, cozyParameters) {
   log('info', 'Konnector configuration ...')
 
-  const pointId = fields.pointId
+  const pointId = parseInt(fields.pointId)
   let baseUrl = fields.wso2BaseUrl
   let apiAuthKey = fields.apiToken
   let contractId = fields.contractId
   //TODO switch variable to english
   let sgeLogin = fields.sgeLogin
+  let boToken = fields.boToken
+  let boBaseUrl = fields.boBaseUrl
   //TODO: Verify if condition is working in local and on build version
   if (cozyParameters && Object.keys(cozyParameters).length !== 0) {
     log('debug', 'Found COZY_PARAMETERS')
@@ -77,10 +79,19 @@ async function start(fields, cozyParameters) {
     apiAuthKey = cozyParameters.secret.apiToken
     contractId = cozyParameters.secret.contractId
     sgeLogin = cozyParameters.secret.sgeLogin
+    boBaseUrl = cozyParameters.secret.boBaseUrl
+    boToken = cozyParameters.secret.boToken
   }
 
   // Prevent missing configuration
-  if (!baseUrl || !apiAuthKey || !contractId || !sgeLogin) {
+  if (
+    !baseUrl ||
+    !apiAuthKey ||
+    !contractId ||
+    !sgeLogin ||
+    !boToken ||
+    !boBaseUrl
+  ) {
     log('error', `Missing configuration secrets`)
     throw errors.VENDOR_DOWN
   }
@@ -99,8 +110,8 @@ async function start(fields, cozyParameters) {
     const user = await verifyUserIdentity(fields, baseUrl, apiAuthKey, sgeLogin)
 
     let consent = await createBoConsent(
-      fields.boBaseUrl,
-      fields.boToken,
+      boBaseUrl,
+      boToken,
       pointId,
       user.lastname,
       user.firstname,
@@ -144,8 +155,8 @@ async function start(fields, cozyParameters) {
       )
     }
     consent = await updateBoConsent(
-      fields.boBaseUrl,
-      fields.boToken,
+      boBaseUrl,
+      boToken,
       consent,
       serviceId.toString()
     )
@@ -160,8 +171,8 @@ async function start(fields, cozyParameters) {
     // AlternateStart
     const accountData = await getAccount(ACCOUNT_ID)
     const userConsent = await getBoConsent(
-      fields.boBaseUrl,
-      fields.boToken,
+      boBaseUrl,
+      boToken,
       accountData.data.consentId
     )
     const user = await verifyUserIdentity(fields, baseUrl, apiAuthKey, sgeLogin)
@@ -178,12 +189,12 @@ async function start(fields, cozyParameters) {
           apiAuthKey,
           sgeLogin,
           contractId,
-          fields.pointId,
+          pointId,
           userConsent.serviceId
         )
         await deleteBoConsent(
-          fields.boBaseUrl,
-          fields.boToken,
+          boBaseUrl,
+          boToken,
           userConsent.ID ? userConsent.ID : 0
         )
       } else {
@@ -195,7 +206,7 @@ async function start(fields, cozyParameters) {
   }
   log('info', 'Successfully logged in')
 
-  await gatherData(baseUrl, apiAuthKey, sgeLogin, fields.pointId)
+  await gatherData(baseUrl, apiAuthKey, sgeLogin, pointId)
 }
 
 /**
diff --git a/src/requests/bo.js b/src/requests/bo.js
index 5cbc03d..d71bf37 100644
--- a/src/requests/bo.js
+++ b/src/requests/bo.js
@@ -27,6 +27,7 @@ async function createBoConsent(
       Authorization: `Bearer ${token}`,
     },
   }
+
   try {
     const { data } = await axios.post(
       `${url}/consent`,
@@ -63,17 +64,21 @@ async function updateBoConsent(url, token, consent, serviceId) {
   }
 
   try {
+    let consentId = ''
+    if (consent.ID) {
+      consentId = consent.ID.toString()
+    }
     const { data } = await axios.put(
-      `${url}/consent/${consent.ID?.toString()}`,
+      `${url}/consent/${consentId}`,
       {
         ...consent,
         serviceId: parseInt(serviceId),
       },
       headers
     )
+    log('info', data)
     return data
   } catch (e) {
-    console.log(e)
     log('error', `BO replied with ${e}`)
     throw errors.MAINTENANCE
   }
@@ -84,7 +89,6 @@ async function updateBoConsent(url, token, consent, serviceId) {
  * @returns {Promise<Consent>}
  */
 async function getBoConsent(url, token, boId) {
-  //TODO: Implement
   log('info', `Query getBoConsent ${boId}`)
   const headers = {
     headers: {
-- 
GitLab