From 49bd15e7440cfa913402b978aee3732968290ee0 Mon Sep 17 00:00:00 2001
From: build-token <build-token>
Date: Wed, 5 Oct 2022 07:36:35 +0000
Subject: [PATCH] publish: Merge branch 'feat/US847-consents-city' into 'main'

generated from commit 25ec59f50ff3d638da883782bfb0f90bbcd143e1
---
 index.js           | 221 ++++-----------------------------------------
 onDeleteAccount.js | 104 ++++-----------------
 2 files changed, 39 insertions(+), 286 deletions(-)

diff --git a/index.js b/index.js
index 147ba3a..c4e1c73 100644
--- a/index.js
+++ b/index.js
@@ -39,8 +39,8 @@ const {
   terminateContract,
   getContractStartDate,
 } = __webpack_require__(1595)
-const { getAccount, saveAccountData } = __webpack_require__(1605)
-const { isLocal } = __webpack_require__(1606)
+const { getAccount, saveAccountData } = __webpack_require__(1604)
+const { isLocal } = __webpack_require__(1605)
 
 moment.locale('fr') // set the language
 moment.tz.setDefault('Europe/Paris') // set the timezone
@@ -124,7 +124,8 @@ async function start(fields, cozyParameters) {
       user.firstname,
       user.address,
       user.postalCode,
-      user.inseeCode
+      user.inseeCode,
+      user.city
     )
 
     // handle user contract start date in order to preperly request data
@@ -223530,18 +223531,6 @@ function parseContractStartDate(result) {
     'dateDerniereModificationFormuleTarifaireAcheminement'
   ]
 }
-/**
- * Return User address
- * @param {string} result
- * @returns {Address}
- */
-function parseUserAddress(result) {
-  log('info', 'Parsing user Address')
-  const json = JSON.stringify(result)
-  return JSON.parse(json)['Envelope']['Body'][
-    'consulterDonneesTechniquesContractuellesResponse'
-  ]['point']['donneesGenerales']['adresseInstallation']
-}
 
 /**
  * Return User contract start date
@@ -223640,24 +223629,6 @@ function parseValue(value, name) {
   return value
 }
 
-/**
- * Remove SGE useless multiple white spaces
- * @param {string} str
- * @returns {string}
- */
-function removeMultipleSpaces(str) {
-  return str.replace(/  +/g, ' ')
-}
-
-/**
- * Remove SGE useless multiple white spaces
- * @param {string} str
- * @returns {string}
- */
-function removeAddressnumber(str) {
-  return str.replace(/[0-9]|b |B |T |t /g, '')
-}
-
 module.exports = {
   parseSgeXmlData,
   formateDataForDoctype,
@@ -223667,10 +223638,7 @@ module.exports = {
   parseContracts,
   parseContractStartDate,
   parseServiceId,
-  parseUserAddress,
   checkContractExists,
-  removeMultipleSpaces,
-  removeAddressnumber,
 }
 
 
@@ -223782,11 +223750,7 @@ function consultationMesuresDetailleesMaxPower(
  * @param {string} appLogin
  * @returns {string}
  */
-function consulterDonneesTechniquesContractuelles(
-  pointId,
-  appLogin,
-  consent = true
-) {
+function consulterDonneesTechniquesContractuelles(pointId, appLogin) {
   log('info', `Query consulterDonneesTechniquesContractuelles`)
   return `<?xml version='1.0' encoding='utf-8'?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
@@ -223797,7 +223761,7 @@ function consulterDonneesTechniquesContractuelles(
         <v2:consulterDonneesTechniquesContractuelles>
            <pointId>${pointId}</pointId>
            <loginUtilisateur>${appLogin}</loginUtilisateur>
-           <autorisationClient>${consent}</autorisationClient>
+           <autorisationClient>true</autorisationClient>
         </v2:consulterDonneesTechniquesContractuelles>
      </soapenv:Body>
   </soapenv:Envelope>
@@ -223809,45 +223773,14 @@ function consulterDonneesTechniquesContractuelles(
  * @param {string} name
  * @param {string} postalCode
  * @param {string} inseeCode
- * @param {string} address
- * @param {string} [escalierEtEtageEtAppartement]
+ * @param {string} [address]
  * @returns {string} PDL
  */
-function rechercherPoint(
-  appLogin,
-  name,
-  postalCode,
-  inseeCode,
-  address,
-  escalierEtEtageEtAppartement
-) {
+function rechercherPoint(appLogin, name, postalCode, inseeCode, address) {
   log(
     'info',
-    `Query rechercherPoint - postal code / insee code: ${postalCode} / ${inseeCode}`
+    `Query rechercherPoint - postal code : ${postalCode} / insee code: ${inseeCode}`
   )
-  if (escalierEtEtageEtAppartement) {
-    return `<?xml version='1.0' encoding='utf-8'?>
-    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
-       xmlns:v2="http://www.enedis.fr/sge/b2b/services/rechercherpoint/v2.0"
-       xmlns:v1="http://www.enedis.fr/sge/b2b/technique/v1.0">
-       <soapenv:Header/>
-       <soapenv:Body>
-          <v2:rechercherPoint>
-             <criteres>
-                <adresseInstallation>
-                   <escalierEtEtageEtAppartement>${escalierEtEtageEtAppartement}</escalierEtEtageEtAppartement>
-                   <numeroEtNomVoie>${address}</numeroEtNomVoie>
-                   <codePostal>${postalCode}</codePostal>
-                   <codeInseeCommune>${inseeCode}</codeInseeCommune>
-                </adresseInstallation>
-                <nomClientFinalOuDenominationSociale>${name}</nomClientFinalOuDenominationSociale>
-                <rechercheHorsPerimetre>true</rechercheHorsPerimetre>
-             </criteres>
-             <loginUtilisateur>${appLogin}</loginUtilisateur>
-          </v2:rechercherPoint>
-       </soapenv:Body>
-    </soapenv:Envelope>`
-  }
   return `<?xml version='1.0' encoding='utf-8'?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:v2="http://www.enedis.fr/sge/b2b/services/rechercherpoint/v2.0"
@@ -224022,6 +223955,7 @@ const { default: axios } = __webpack_require__(1558)
  * @param {string} address
  * @param {string} postalCode
  * @param {string} inseeCode
+ * @param {string} city
  * @returns {Promise<Consent>}
  */
 async function createBoConsent(
@@ -224032,7 +223966,8 @@ async function createBoConsent(
   firstname,
   address,
   postalCode,
-  inseeCode
+  inseeCode,
+  city
 ) {
   log('info', `Query createBoConsent`)
   const headers = {
@@ -224051,6 +223986,7 @@ async function createBoConsent(
         address,
         postalCode,
         inseeCode,
+        city,
       },
       headers
     )
@@ -228069,7 +228005,6 @@ const { terminateContract } = __webpack_require__(1598)
 const { verifyContract } = __webpack_require__(1599)
 const { findUserPdl } = __webpack_require__(1601)
 const { verifyUserIdentity } = __webpack_require__(1602)
-const { findUserAddress } = __webpack_require__(1604)
 
 module.exports = {
   activateContract,
@@ -228078,7 +228013,6 @@ module.exports = {
   verifyContract,
   findUserPdl,
   verifyUserIdentity,
-  findUserAddress,
 }
 
 
@@ -228430,8 +228364,7 @@ async function findUserPdl(
   name,
   address,
   postalCode,
-  inseeCode,
-  escalierEtEtageEtAppartement = ''
+  inseeCode
 ) {
   log('info', 'Fetching user data')
   const sgeHeaders = {
@@ -228442,14 +228375,7 @@ async function findUserPdl(
   const { response } = await soapRequest({
     url: url,
     headers: sgeHeaders,
-    xml: rechercherPoint(
-      appLogin,
-      name,
-      postalCode,
-      inseeCode,
-      address,
-      escalierEtEtageEtAppartement
-    ),
+    xml: rechercherPoint(appLogin, name, postalCode, inseeCode, address),
   }).catch(err => {
     log('error', 'rechercherPointResponse')
     log('error', err)
@@ -228472,7 +228398,7 @@ async function findUserPdl(
         `Enedis issue ${parsedReply.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${parsedReply.Envelope.Body.Fault.faultstring}`
       )
     }
-    return null
+    throw errors.LOGIN_FAILED
   }
 }
 
@@ -228487,11 +228413,6 @@ module.exports = { findUserPdl }
 const { log, errors } = __webpack_require__(1)
 const { findUserPdl } = __webpack_require__(1601)
 const { getInseeCode } = __webpack_require__(1603)
-const { findUserAddress } = __webpack_require__(1604)
-const {
-  removeMultipleSpaces,
-  removeAddressnumber,
-} = __webpack_require__(1555)
 
 /**
  * Verify user identity
@@ -228516,8 +228437,7 @@ async function verifyUserIdentity(
     inseeCode = await getInseeCode(fields.postalCode, fields.city)
   }
 
-  // First try with user adresse
-  let pdl = await findUserPdl(
+  const pdl = await findUserPdl(
     `${baseUrl}/enedis_SDE_recherche-point/1.0`,
     apiAuthKey,
     loginUtilisateur,
@@ -228527,50 +228447,8 @@ async function verifyUserIdentity(
     inseeCode
   )
 
-  if (!pdl) {
-    log('warn', 'Second chance for sge onboarding')
-    // Backup verification
-    const userAddress = await findUserAddress(
-      baseUrl,
-      apiAuthKey,
-      loginUtilisateur,
-      fields.pointId
-    )
-
-    const escalierEtEtageEtAppartement = userAddress.escalierEtEtageEtAppartement
-      ? removeMultipleSpaces(userAddress.escalierEtEtageEtAppartement)
-      : ''
-
-    pdl = await findUserPdl(
-      `${baseUrl}/enedis_SDE_recherche-point/1.0`,
-      apiAuthKey,
-      loginUtilisateur,
-      fields.lastname,
-      removeMultipleSpaces(userAddress.numeroEtNomVoie),
-      userAddress.codePostal,
-      userAddress.commune.$.code,
-      escalierEtEtageEtAppartement
-    )
-
-    // Third try, remove address number because it's buggy on SGE side
-    if (!pdl) {
-      log('warn', 'Last chance onboarding for sge')
-      pdl = await findUserPdl(
-        `${baseUrl}/enedis_SDE_recherche-point/1.0`,
-        apiAuthKey,
-        loginUtilisateur,
-        fields.lastname,
-        removeMultipleSpaces(removeAddressnumber(userAddress.numeroEtNomVoie)),
-        userAddress.codePostal,
-        userAddress.commune.$.code,
-        escalierEtEtageEtAppartement
-      )
-    }
-  }
-
   if (fields.pointId != pdl) {
     log('error', 'PointId does not match')
-
     if (isAlternateStart) {
       throw errors.TERMS_VERSION_MISMATCH
     } else {
@@ -228585,6 +228463,7 @@ async function verifyUserIdentity(
     inseeCode,
     postalCode: fields.postalCode,
     address: fields.address,
+    city: fields.city,
   }
 }
 
@@ -228640,68 +228519,8 @@ module.exports = {
 /* 1604 */
 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 
-// @ts-check
-const { log, errors } = __webpack_require__(1)
-const soapRequest = __webpack_require__(1331)
-const {
-  parseTags,
-  parseValue,
-  parseUserAddress,
-} = __webpack_require__(1555)
-const xml2js = __webpack_require__(1513)
-const { consulterDonneesTechniquesContractuelles } = __webpack_require__(1556)
-
-/**
- * Get user contract start date
- * @param {string} url
- * @param {string} apiAuthKey
- * @param {string} userLogin
- * @param {number} pointId
- * @returns {Promise<Address>}
- */
-async function findUserAddress(url, apiAuthKey, userLogin, pointId) {
-  log('info', 'Fetching user address')
-  const sgeHeaders = {
-    'Content-Type': 'text/xml;charset=UTF-8',
-    apikey: apiAuthKey,
-  }
-
-  const { response } = await soapRequest({
-    url: `${url}/enedis_SGE_ConsultationDonneesTechniquesContractuelles/1.0`,
-    headers: sgeHeaders,
-    xml: consulterDonneesTechniquesContractuelles(pointId, userLogin, false),
-  }).catch(err => {
-    log('error', 'Error while fetching user : ' + err)
-    throw errors.VENDOR_DOWN
-  })
-
-  const result = await xml2js.parseStringPromise(response.body, {
-    tagNameProcessors: [parseTags],
-    valueProcessors: [parseValue],
-    explicitArray: false,
-  })
-
-  try {
-    return parseUserAddress(result)
-  } catch (error) {
-    log('error', 'Error while processing user address: ' + error)
-    log(
-      'error',
-      `Enedis issue ${result.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${result.Envelope.Body.Fault.faultstring}`
-    )
-    throw errors.NOT_EXISTING_DIRECTORY
-  }
-}
-
-module.exports = { findUserAddress }
-
-
-/***/ }),
-/* 1605 */
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
 const { log, updateOrCreate } = __webpack_require__(1)
-const { isLocal } = __webpack_require__(1606)
+const { isLocal } = __webpack_require__(1605)
 const cozyClient = __webpack_require__(485)
 
 async function saveAccountData(accountId, accountData) {
@@ -228744,7 +228563,7 @@ module.exports = { getAccount, saveAccountData, getAccountForDelete }
 
 
 /***/ }),
-/* 1606 */
+/* 1605 */
 /***/ ((module) => {
 
 function isLocal() {
diff --git a/onDeleteAccount.js b/onDeleteAccount.js
index 0bf2ef3..bcf1adb 100644
--- a/onDeleteAccount.js
+++ b/onDeleteAccount.js
@@ -222861,18 +222861,6 @@ function parseContractStartDate(result) {
     'dateDerniereModificationFormuleTarifaireAcheminement'
   ]
 }
-/**
- * Return User address
- * @param {string} result
- * @returns {Address}
- */
-function parseUserAddress(result) {
-  log('info', 'Parsing user Address')
-  const json = JSON.stringify(result)
-  return JSON.parse(json)['Envelope']['Body'][
-    'consulterDonneesTechniquesContractuellesResponse'
-  ]['point']['donneesGenerales']['adresseInstallation']
-}
 
 /**
  * Return User contract start date
@@ -222971,24 +222959,6 @@ function parseValue(value, name) {
   return value
 }
 
-/**
- * Remove SGE useless multiple white spaces
- * @param {string} str
- * @returns {string}
- */
-function removeMultipleSpaces(str) {
-  return str.replace(/  +/g, ' ')
-}
-
-/**
- * Remove SGE useless multiple white spaces
- * @param {string} str
- * @returns {string}
- */
-function removeAddressnumber(str) {
-  return str.replace(/[0-9]|b |B |T |t /g, '')
-}
-
 module.exports = {
   parseSgeXmlData,
   formateDataForDoctype,
@@ -222998,10 +222968,7 @@ module.exports = {
   parseContracts,
   parseContractStartDate,
   parseServiceId,
-  parseUserAddress,
   checkContractExists,
-  removeMultipleSpaces,
-  removeAddressnumber,
 }
 
 
@@ -223113,11 +223080,7 @@ function consultationMesuresDetailleesMaxPower(
  * @param {string} appLogin
  * @returns {string}
  */
-function consulterDonneesTechniquesContractuelles(
-  pointId,
-  appLogin,
-  consent = true
-) {
+function consulterDonneesTechniquesContractuelles(pointId, appLogin) {
   log('info', `Query consulterDonneesTechniquesContractuelles`)
   return `<?xml version='1.0' encoding='utf-8'?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
@@ -223128,7 +223091,7 @@ function consulterDonneesTechniquesContractuelles(
         <v2:consulterDonneesTechniquesContractuelles>
            <pointId>${pointId}</pointId>
            <loginUtilisateur>${appLogin}</loginUtilisateur>
-           <autorisationClient>${consent}</autorisationClient>
+           <autorisationClient>true</autorisationClient>
         </v2:consulterDonneesTechniquesContractuelles>
      </soapenv:Body>
   </soapenv:Envelope>
@@ -223140,45 +223103,14 @@ function consulterDonneesTechniquesContractuelles(
  * @param {string} name
  * @param {string} postalCode
  * @param {string} inseeCode
- * @param {string} address
- * @param {string} [escalierEtEtageEtAppartement]
+ * @param {string} [address]
  * @returns {string} PDL
  */
-function rechercherPoint(
-  appLogin,
-  name,
-  postalCode,
-  inseeCode,
-  address,
-  escalierEtEtageEtAppartement
-) {
+function rechercherPoint(appLogin, name, postalCode, inseeCode, address) {
   log(
     'info',
-    `Query rechercherPoint - postal code / insee code: ${postalCode} / ${inseeCode}`
+    `Query rechercherPoint - postal code : ${postalCode} / insee code: ${inseeCode}`
   )
-  if (escalierEtEtageEtAppartement) {
-    return `<?xml version='1.0' encoding='utf-8'?>
-    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
-       xmlns:v2="http://www.enedis.fr/sge/b2b/services/rechercherpoint/v2.0"
-       xmlns:v1="http://www.enedis.fr/sge/b2b/technique/v1.0">
-       <soapenv:Header/>
-       <soapenv:Body>
-          <v2:rechercherPoint>
-             <criteres>
-                <adresseInstallation>
-                   <escalierEtEtageEtAppartement>${escalierEtEtageEtAppartement}</escalierEtEtageEtAppartement>
-                   <numeroEtNomVoie>${address}</numeroEtNomVoie>
-                   <codePostal>${postalCode}</codePostal>
-                   <codeInseeCommune>${inseeCode}</codeInseeCommune>
-                </adresseInstallation>
-                <nomClientFinalOuDenominationSociale>${name}</nomClientFinalOuDenominationSociale>
-                <rechercheHorsPerimetre>true</rechercheHorsPerimetre>
-             </criteres>
-             <loginUtilisateur>${appLogin}</loginUtilisateur>
-          </v2:rechercherPoint>
-       </soapenv:Body>
-    </soapenv:Envelope>`
-  }
   return `<?xml version='1.0' encoding='utf-8'?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:v2="http://www.enedis.fr/sge/b2b/services/rechercherpoint/v2.0"
@@ -223353,6 +223285,7 @@ const { default: axios } = __webpack_require__(1558)
  * @param {string} address
  * @param {string} postalCode
  * @param {string} inseeCode
+ * @param {string} city
  * @returns {Promise<Consent>}
  */
 async function createBoConsent(
@@ -223363,7 +223296,8 @@ async function createBoConsent(
   firstname,
   address,
   postalCode,
-  inseeCode
+  inseeCode,
+  city
 ) {
   log('info', `Query createBoConsent`)
   const headers = {
@@ -223382,6 +223316,7 @@ async function createBoConsent(
         address,
         postalCode,
         inseeCode,
+        city,
       },
       headers
     )
@@ -227472,12 +227407,11 @@ module.exports = { terminateContract }
 /* 1601 */,
 /* 1602 */,
 /* 1603 */,
-/* 1604 */,
-/* 1605 */
+/* 1604 */
 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 
 const { log, updateOrCreate } = __webpack_require__(1)
-const { isLocal } = __webpack_require__(1606)
+const { isLocal } = __webpack_require__(1605)
 const cozyClient = __webpack_require__(485)
 
 async function saveAccountData(accountId, accountData) {
@@ -227520,7 +227454,7 @@ module.exports = { getAccount, saveAccountData, getAccountForDelete }
 
 
 /***/ }),
-/* 1606 */
+/* 1605 */
 /***/ ((module) => {
 
 function isLocal() {
@@ -227543,7 +227477,7 @@ module.exports = { isLocal, isAlpha }
 
 
 /***/ }),
-/* 1607 */
+/* 1606 */
 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 
 // @ts-check
@@ -227552,15 +227486,15 @@ const {
   getAccountRev,
   getAccountSecret,
   getAccountId,
-} = __webpack_require__(1608)
+} = __webpack_require__(1607)
 const { getBoConsent, deleteBoConsent } = __webpack_require__(1557)
 const { terminateContract } = __webpack_require__(1598)
-const { getAccountForDelete } = __webpack_require__(1605)
+const { getAccountForDelete } = __webpack_require__(1604)
 const moment = __webpack_require__(1373)
 __webpack_require__(1510)
 moment.locale('fr') // set the language
 moment.tz.setDefault('Europe/Paris') // set the timezone
-const { isLocal, isAlpha } = __webpack_require__(1606)
+const { isLocal, isAlpha } = __webpack_require__(1605)
 // const ACCOUNT_ID = isLocal() ? 'default_account_id' : 'enedis-sge-grandlyon'
 
 async function onDeleteAccount() {
@@ -227644,11 +227578,11 @@ module.exports = { onDeleteAccount }
 
 
 /***/ }),
-/* 1608 */
+/* 1607 */
 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 
 const { log } = __webpack_require__(1)
-const { isLocal } = __webpack_require__(1606)
+const { isLocal } = __webpack_require__(1605)
 
 function getAccountId() {
   log('info', `getAccountId`)
@@ -227779,7 +227713,7 @@ module.exports = { getAccountId, getAccountRev, getAccountSecret }
 /******/ 	// module cache are used so entry inlining is disabled
 /******/ 	// startup
 /******/ 	// Load entry module and return exports
-/******/ 	var __webpack_exports__ = __webpack_require__(__webpack_require__.s = 1607);
+/******/ 	var __webpack_exports__ = __webpack_require__(__webpack_require__.s = 1606);
 /******/ 	
 /******/ })()
 ;
\ No newline at end of file
-- 
GitLab