From c90175f12195500cbdfa0835e2f067c6470e8663 Mon Sep 17 00:00:00 2001 From: Martin Date: Tue, 30 May 2023 16:27:20 +0200 Subject: [PATCH] tech(api-entreprise.etablissement): passage du endpoint ETABLISSEMENT_RESOURCE_NAME en v3 --- app/lib/api_entreprise/api.rb | 2 +- .../api_entreprise/etablissement_adapter.rb | 37 +++-- .../champs/siret_controller_spec.rb | 6 +- .../users/dossiers_controller_spec.rb | 2 +- .../etablissements-non-siege.json | 149 ++++++++++++------ .../files/api_entreprise/etablissements.json | 132 +++++++++++----- .../etablissements_private.json | 145 +++++++++++------ spec/jobs/api_entreprise/service_job_spec.rb | 14 +- spec/lib/api_entreprise/api_spec.rb | 2 +- .../etablissement_adapter_spec.rb | 29 ++-- .../api_entreprise/service_adapter_spec.rb | 22 +-- ...mp_etablissement_fetchable_concern_spec.rb | 6 +- spec/services/api_entreprise_service_spec.rb | 4 +- .../shared_examples_for_prefilled_dossier.rb | 2 +- spec/system/users/dossier_creation_spec.rb | 4 +- spec/system/users/dossier_prefill_get_spec.rb | 2 +- .../system/users/dossier_prefill_post_spec.rb | 2 +- 17 files changed, 359 insertions(+), 201 deletions(-) diff --git a/app/lib/api_entreprise/api.rb b/app/lib/api_entreprise/api.rb index c130423f8..d66cd97b1 100644 --- a/app/lib/api_entreprise/api.rb +++ b/app/lib/api_entreprise/api.rb @@ -1,6 +1,6 @@ class APIEntreprise::API ENTREPRISE_RESOURCE_NAME = "v3/insee/sirene/unites_legales/%{id}" - ETABLISSEMENT_RESOURCE_NAME = "v2/etablissements/%{id}" + ETABLISSEMENT_RESOURCE_NAME = "v3/insee/sirene/etablissements/%{id}" EXTRAIT_KBIS_NAME = "v3/infogreffe/rcs/unites_legales/%{id}/extrait_kbis" TVA_NAME = "v3/european_commission/unites_legales/%{id}/numero_tva" EXERCICES_RESOURCE_NAME = "v3/dgfip/etablissements/%{id}/chiffres_affaires" diff --git a/app/lib/api_entreprise/etablissement_adapter.rb b/app/lib/api_entreprise/etablissement_adapter.rb index 95eb20425..df9211bfa 100644 --- a/app/lib/api_entreprise/etablissement_adapter.rb +++ b/app/lib/api_entreprise/etablissement_adapter.rb @@ -1,4 +1,7 @@ class APIEntreprise::EtablissementAdapter < APIEntreprise::Adapter + # Doc Métier : https://entreprise.api.gouv.fr/catalogue/insee/etablissements + # Swagger : https://entreprise.api.gouv.fr/developpeurs/openapi#tag/Informations-generales/paths/~1v3~1insee~1sirene~1etablissements~1%7Bsiret%7D/get + private def get_resource @@ -6,15 +9,26 @@ class APIEntreprise::EtablissementAdapter < APIEntreprise::Adapter end def process_params - params = data_source[:etablissement].slice(*attr_to_fetch) + raw_data = data_source[:data] + Sentry.with_scope do |scope| + scope.set_tags(siret: @siret) + scope.set_extras(source: raw_data) - if valid_params?(params) - adresse_line = params[:adresse].slice(*address_lines_to_fetch).values.compact.join("\r\n") - params.merge!(params[:adresse].slice(*address_attr_to_fetch)) - params[:adresse] = adresse_line - params - else - {} + params = raw_data.slice(*attr_to_fetch) + params[:naf] = raw_data.dig(:activite_principale, :code) + params[:libelle_naf] = raw_data.dig(:activite_principale, :libelle) + + if valid_params?(params) + adresse_line = raw_data[:adresse][:acheminement_postal].slice(*address_lines_to_fetch).values.compact.join("\r\n") + params.merge!(params[:adresse].slice(*address_attr_to_fetch)) + params[:nom_voie] = raw_data[:adresse][:libelle_voie] + params[:code_insee_localite] = raw_data[:adresse][:code_commune] + params[:localite] = raw_data[:adresse][:libelle_commune] + params[:adresse] = adresse_line + params + else + {} + end end end @@ -23,8 +37,6 @@ class APIEntreprise::EtablissementAdapter < APIEntreprise::Adapter :adresse, :siret, :siege_social, - :naf, - :libelle_naf, :enseigne, :diffusable_commercialement ] @@ -34,11 +46,8 @@ class APIEntreprise::EtablissementAdapter < APIEntreprise::Adapter [ :numero_voie, :type_voie, - :nom_voie, :complement_adresse, - :code_postal, - :localite, - :code_insee_localite + :code_postal ] end diff --git a/spec/controllers/champs/siret_controller_spec.rb b/spec/controllers/champs/siret_controller_spec.rb index 84e35456f..03ad12e46 100644 --- a/spec/controllers/champs/siret_controller_spec.rb +++ b/spec/controllers/champs/siret_controller_spec.rb @@ -29,7 +29,7 @@ describe Champs::SiretController, type: :controller do before do sign_in user - stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/etablissements\/#{siret}/) + stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/etablissements\/#{siret}/) .to_return(status: api_etablissement_status, body: api_etablissement_body) stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/unites_legales\/#{siret[0..8]}/) .to_return(status: 200, body: File.read('spec/fixtures/files/api_entreprise/entreprises.json')) @@ -134,7 +134,7 @@ describe Champs::SiretController, type: :controller do end context 'when the SIRET informations are retrieved successfully' do - let(:siret) { '41816609600051' } + let(:siret) { '30613890001294' } let(:api_etablissement_status) { 200 } let(:api_etablissement_body) { File.read('spec/fixtures/files/api_entreprise/etablissements.json') } @@ -143,7 +143,7 @@ describe Champs::SiretController, type: :controller do it 'populates the etablissement and SIRET on the model' do champ.reload expect(champ.etablissement.siret).to eq(siret) - expect(champ.etablissement.naf).to eq("6202A") + expect(champ.etablissement.naf).to eq("8411Z") expect(dossier.reload.etablissement).to eq(nil) end end diff --git a/spec/controllers/users/dossiers_controller_spec.rb b/spec/controllers/users/dossiers_controller_spec.rb index 2b758ae56..7e04f3931 100644 --- a/spec/controllers/users/dossiers_controller_spec.rb +++ b/spec/controllers/users/dossiers_controller_spec.rb @@ -194,7 +194,7 @@ describe Users::DossiersController, type: :controller do before do sign_in(user) - stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/etablissements\/#{siret}/) + stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/etablissements\/#{siret}/) .to_return(status: api_etablissement_status, body: api_etablissement_body) stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/unites_legales\/#{siren}/) .to_return(body: Rails.root.join('spec/fixtures/files/api_entreprise/status.json').read, status: 200) diff --git a/spec/fixtures/files/api_entreprise/etablissements-non-siege.json b/spec/fixtures/files/api_entreprise/etablissements-non-siege.json index f3ad02936..e7a07f97e 100644 --- a/spec/fixtures/files/api_entreprise/etablissements-non-siege.json +++ b/spec/fixtures/files/api_entreprise/etablissements-non-siege.json @@ -1,53 +1,100 @@ { - "etablissement": { - "adresse": { - "cedex": null, - "code_insee_localite": "31555", - "code_postal": "31400", - "complement_adresse": null, - "l1": "DIRECTION INTERREGIONALE DES SERVICES PENITENTIAIRES TOULOUSE - SUD", - "l2": "SERVICE PENITENTIAIRE D'INSERTION ET DE PROBATION, DE LA HAUTE-GARONNE", - "l3": null, - "l4": "109 AV DE LESPINET", - "l5": "BP 4087", - "l6": "31400 TOULOUSE", - "l7": "FRANCE", - "localite": "TOULOUSE", - "nom_voie": "DE LESPINET", - "numero_voie": "109", - "type_voie": "AV" - }, - "commune_implantation": { - "code": "31555", - "value": "Toulouse" - }, - "date_creation_etablissement": 1458946800, - "date_mise_a_jour": 1533648919, - "diffusable_commercialement": true, - "enseigne": "SERVICE PENITENTIAIRE D'INSERTION ET DE PROBATION, DE LA HAUTE-GARONNE", - "etat_administratif": { - "date_fermeture": null, - "value": "A" - }, - "libelle_naf": "Justice", - "naf": "8423Z", - "pays_implantation": { - "code": "FR", - "value": "FRANCE" - }, - "region_implantation": { - "code": "76", - "value": "Occitanie" - }, - "siege_social": false, - "siret": "17310120500719", - "tranche_effectif_salarie_etablissement": { - "a": null, - "code": null, - "date_reference": null, - "de": null, - "intitule": null - } - }, - "gateway_error": false + "data" : { + "activite_principale" : { + "code" : "84.23Z", + "libelle" : "Justice", + "nomenclature" : "NAFRev2" + }, + "adresse" : { + "acheminement_postal" : { + "l1" : "DIRECTION INTERREGIONALE DES SERVICES PENITENTIAIRES TOULOUSE - SUD", + "l2" : "", + "l3" : "", + "l4" : "109 AVENUE DE LESPINET", + "l5" : "BP 4087", + "l6" : "31400 TOULOUSE", + "l7" : "FRANCE" + }, + "code_cedex" : null, + "code_commune" : "31555", + "code_pays_etranger" : null, + "code_postal" : "31400", + "complement_adresse" : null, + "distribution_speciale" : "BP 4087", + "indice_repetition_voie" : null, + "libelle_cedex" : null, + "libelle_commune" : "TOULOUSE", + "libelle_commune_etranger" : null, + "libelle_pays_etranger" : null, + "libelle_voie" : "DE LESPINET", + "numero_voie" : "109", + "status_diffusion" : "diffusible", + "type_voie" : "AVENUE" + }, + "date_creation" : 1458946800, + "date_fermeture" : null, + "diffusable_commercialement" : true, + "enseigne" : "SERVICE PENITENTIAIRE D'INSERTION ET DE PROBATION, DE LA HAUTE-GARONNE", + "etat_administratif" : "A", + "siege_social" : false, + "siret" : "17310120500719", + "status_diffusion" : "diffusible", + "tranche_effectif_salarie" : { + "a" : 99, + "code" : "21", + "date_reference" : "2020", + "de" : 50, + "intitule" : "50 à 99 salariés" + }, + "unite_legale" : { + "activite_principale" : { + "code" : "84.23Z", + "libelle" : "Justice", + "nomenclature" : "NAFRev2" + }, + "categorie_entreprise" : "ETI", + "date_creation" : 362095200, + "diffusable_commercialement" : true, + "economie_sociale_et_solidaire" : false, + "etat_administratif" : "A", + "forme_juridique" : { + "code" : "7171", + "libelle" : "Service déconcentré de l'État à compétence (inter) régionale" + }, + "personne_morale_attributs" : { + "raison_sociale" : "DIRECTION INTERREGIONALE DES SERVICES PENITENTIAIRES TOULOUSE - SUD", + "sigle" : "DISP" + }, + "personne_physique_attributs" : { + "nom_naissance" : null, + "nom_usage" : null, + "prenom_1" : null, + "prenom_2" : null, + "prenom_3" : null, + "prenom_4" : null, + "prenom_usuel" : null, + "pseudonyme" : null, + "sexe" : null + }, + "rna" : null, + "siren" : "173101205", + "siret_siege_social" : "17310120500016", + "status_diffusion" : "diffusible", + "tranche_effectif_salarie" : { + "a" : 4999, + "code" : "51", + "date_reference" : "2020", + "de" : 2000, + "intitule" : "2 000 à 4 999 salariés" + }, + "type" : "personne_morale" + } + }, + "links" : { + "unite_legale" : "https://entreprise.api.gouv.fr/v3/insee/sirene/unites_legales/173101205" + }, + "meta" : { + "date_derniere_mise_a_jour" : 1661724000, + "redirect_from_siret" : null + } } diff --git a/spec/fixtures/files/api_entreprise/etablissements.json b/spec/fixtures/files/api_entreprise/etablissements.json index aa5aa7603..c061a641d 100644 --- a/spec/fixtures/files/api_entreprise/etablissements.json +++ b/spec/fixtures/files/api_entreprise/etablissements.json @@ -1,49 +1,99 @@ { - "etablissement": { + "data": { + "siret": "30613890001294", "siege_social": true, - "siret": "41816609600051", - "naf": "6202A", - "libelle_naf": "Conseil en systèmes et logiciels informatiques", - "date_mise_a_jour": 1449183600, - "tranche_effectif_salarie_etablissement": { - "de": 200, - "a": 249, - "code": "31", - "date_reference": "2014", - "intitule": "200 à 249 salariés" + "etat_administratif": "A", + "date_fermeture": 1634133818, + "activite_principale": { + "code": "8411Z", + "libelle": "Administration publique générale", + "nomenclature": "NAFRev2" }, - "date_creation_etablissement": 1108594800, - "enseigne": null, - "region_implantation": { - "code": "11", - "value": "Île-de-France" - }, - "commune_implantation": { - "code": "75108", - "value": "PARIS 8" - }, - "pays_implantation": { - "code": null, - "value": null + "tranche_effectif_salarie": { + "code": "51", + "intitule": "2 000 à 4 999 salariés", + "date_reference": "2016", + "de": 2000, + "a": 4999 }, + "status_diffusion": "diffusible", "diffusable_commercialement": true, + "enseigne": "Coiff Land, CoiffureLand", + "unite_legale": { + "siren": "130025265", + "siret_siege_social": "13002526500013", + "type": "personne_morale", + "personne_morale_attributs": { + "raison_sociale": "DIRECTION INTERMINISTERIELLE DU NUMERIQUE", + "sigle": "DINUM" + }, + "personne_physique_attributs": { + "pseudonyme": "DJ Falcon", + "prenom_usuel": "Jean", + "prenom_1": "Jean", + "prenom_2": "Jacques", + "prenom_3": "Pierre", + "prenom_4": "Paul", + "nom_usage": "Dupont", + "nom_naissance": "Martin", + "sexe": "M" + }, + "categorie_entreprise": "GE", + "status_diffusion": "diffusible", + "diffusable_commercialement": true, + "forme_juridique": { + "code": "7120", + "libelle": "Service central d'un ministère" + }, + "activite_principale": { + "code": "8411Z", + "libelle": "Administration publique générale", + "nomenclature": "NAFRev2" + }, + "tranche_effectif_salarie": { + "code": "51", + "intitule": "2 000 à 4 999 salariés", + "date_reference": "2016", + "de": 2000, + "a": 4999 + }, + "etat_administratif": "A", + "economie_sociale_et_solidaire": true, + "date_creation": 1634103818 + }, "adresse": { - "l1": "OCTO TECHNOLOGY", - "l2": null, - "l3": null, - "l4": "50 AVENUE DES CHAMPS ELYSEES", - "l5": null, - "l6": "75008 PARIS", - "l7": "FRANCE", - "numero_voie": "50", - "type_voie": "AV", - "nom_voie": "DES CHAMPS ELYSEES", - "complement_adresse": "complement_adresse", - "code_postal": "75008", - "localite": "PARIS 8", - "code_insee_localite": "75108", - "cedex": null - } + "numero_voie": "22", + "indice_repetition_voie": "bis", + "type_voie": "RUE", + "libelle_voie": "DE LA PAIX", + "complement_adresse": "ZAE SAINT GUENAULT", + "code_commune": "75112", + "code_postal": "75016", + "distribution_speciale": "string", + "code_cedex": "75590", + "libelle_cedex": "PARIS CEDEX 12", + "libelle_commune": "PARIS 12", + "libelle_commune_etranger": "string", + "code_pays_etranger": "99132", + "libelle_pays_etranger": "ROYAUME-UNI", + "status_diffusion": "diffusible", + "acheminement_postal": { + "l1": "DIRECTION INTERMINISTERIELLE DU NUMERIQUE", + "l2": "JEAN MARIE DURAND", + "l3": "ZAE SAINT GUENAULT", + "l4": "51 BIS RUE DE LA PAIX", + "l5": "CS 72809", + "l6": "75256 PARIX CEDEX 12", + "l7": "FRANCE" + } + }, + "date_creation": 1634103818 }, - "gateway_error": false + "links": { + "unite_legale": "https://entreprise.api.gouv.fr/api/v3/insee/unites_legales/130025265" + }, + "meta": { + "date_derniere_mise_a_jour": 1618396818, + "redirect_from_siret": "30613890000010" + } } diff --git a/spec/fixtures/files/api_entreprise/etablissements_private.json b/spec/fixtures/files/api_entreprise/etablissements_private.json index e2d58cf04..260b77117 100644 --- a/spec/fixtures/files/api_entreprise/etablissements_private.json +++ b/spec/fixtures/files/api_entreprise/etablissements_private.json @@ -1,49 +1,100 @@ { - "etablissement": { - "siege_social": true, - "siret": "41816609600051", - "naf": "6202A", - "libelle_naf": "Conseil en systèmes et logiciels informatiques", - "date_mise_a_jour": 1449183600, - "tranche_effectif_salarie_etablissement": { - "de": 200, - "a": 249, - "code": "31", - "date_reference": "2014", - "intitule": "200 à 249 salariés" - }, - "date_creation_etablissement": 1108594800, - "enseigne": null, - "region_implantation": { - "code": "11", - "value": "Île-de-France" - }, - "commune_implantation": { - "code": "75108", - "value": "PARIS 8" - }, - "pays_implantation": { - "code": null, - "value": null - }, - "diffusable_commercialement": false, - "adresse": { - "l1": "OCTO TECHNOLOGY", - "l2": null, - "l3": null, - "l4": "50 AVENUE DES CHAMPS ELYSEES", - "l5": null, - "l6": "75008 PARIS", - "l7": "FRANCE", - "numero_voie": "50", - "type_voie": "AV", - "nom_voie": "DES CHAMPS ELYSEES", - "complement_adresse": "complement_adresse", - "code_postal": "75008", - "localite": "PARIS 8", - "code_insee_localite": "75108", - "cedex": null - } - }, - "gateway_error": false + "data" : { + "activite_principale" : { + "code" : "62.02A", + "libelle" : "Conseil en systêmes et logiciels informatiques", + "nomenclature" : "NAFRev2" + }, + "adresse" : { + "acheminement_postal" : { + "l1" : "OCTO-TECHNOLOGY", + "l2" : "", + "l3" : "", + "l4" : "50 AVENUE DES CHAMPS ELYSEES", + "l5" : "", + "l6" : "75008 PARIS 8", + "l7" : "FRANCE" + }, + "code_cedex" : null, + "code_commune" : "75108", + "code_pays_etranger" : null, + "code_postal" : "75008", + "complement_adresse" : null, + "distribution_speciale" : null, + "indice_repetition_voie" : null, + "libelle_cedex" : null, + "libelle_commune" : "PARIS 8", + "libelle_commune_etranger" : null, + "libelle_pays_etranger" : null, + "libelle_voie" : "DES CHAMPS ELYSEES", + "numero_voie" : "50", + "status_diffusion" : "diffusible", + "type_voie" : "AVENUE" + }, + "date_creation" : 1108594800, + "date_fermeture" : 1480287600, + "diffusable_commercialement" : false, + "enseigne" : null, + "etat_administratif" : "F", + "siege_social" : false, + "siret" : "41816609600051", + "status_diffusion" : "diffusible", + "tranche_effectif_salarie" : { + "a" : null, + "code" : "NN", + "date_reference" : null, + "de" : null, + "intitule" : "Unités non employeuses" + }, + "unite_legale" : { + "activite_principale" : { + "code" : "62.02A", + "libelle" : "Conseil en systèmes et logiciels informatiques", + "nomenclature" : "NAFRev2" + }, + "categorie_entreprise" : "GE", + "date_creation" : 891381600, + "diffusable_commercialement" : true, + "economie_sociale_et_solidaire" : false, + "etat_administratif" : "A", + "forme_juridique" : { + "code" : "5710", + "libelle" : "SAS, société par actions simplifiée" + }, + "personne_morale_attributs" : { + "raison_sociale" : "OCTO-TECHNOLOGY", + "sigle" : null + }, + "personne_physique_attributs" : { + "nom_naissance" : null, + "nom_usage" : null, + "prenom_1" : null, + "prenom_2" : null, + "prenom_3" : null, + "prenom_4" : null, + "prenom_usuel" : null, + "pseudonyme" : null, + "sexe" : null + }, + "rna" : null, + "siren" : "418166096", + "siret_siege_social" : "41816609600069", + "status_diffusion" : "diffusible", + "tranche_effectif_salarie" : { + "a" : 999, + "code" : "41", + "date_reference" : "2020", + "de" : 500, + "intitule" : "500 à 999 salariés" + }, + "type" : "personne_morale" + } + }, + "links" : { + "unite_legale" : "https://entreprise.api.gouv.fr/v3/insee/sirene/unites_legales/418166096" + }, + "meta" : { + "date_derniere_mise_a_jour" : 1538172000, + "redirect_from_siret" : null + } } diff --git a/spec/jobs/api_entreprise/service_job_spec.rb b/spec/jobs/api_entreprise/service_job_spec.rb index 0e009eab3..7e2174635 100644 --- a/spec/jobs/api_entreprise/service_job_spec.rb +++ b/spec/jobs/api_entreprise/service_job_spec.rb @@ -1,14 +1,14 @@ RSpec.describe APIEntreprise::ServiceJob, type: :job do - let(:siret) { '41816609600051' } + let(:siret) { '30613890001294' } let(:service) { create(:service, siret: siret) } let(:entreprise_body) { File.read('spec/fixtures/files/api_entreprise/etablissements.json') } let(:geocoder_body) { File.read('spec/fixtures/files/api_address/address.json') } let(:status) { 200 } - let (:adresse) { "OCTO TECHNOLOGY\r\n50 AVENUE DES CHAMPS ELYSEES\r\n75008 PARIS\r\nFRANCE" } + let (:adresse) { "DIRECTION INTERMINISTERIELLE DU NUMERIQUE\r\nJEAN MARIE DURAND\r\nZAE SAINT GUENAULT\r\n51 BIS RUE DE LA PAIX\r\nCS 72809\r\n75256 PARIX CEDEX 12\r\nFRANCE" } before do - stub_request(:get, %r{https://entreprise.api.gouv.fr/v2/etablissements/}) + stub_request(:get, %r{https://entreprise.api.gouv.fr/v3\/insee\/sirene\/etablissements\/#{siret}}) .to_return(body: entreprise_body, status: status) allow_any_instance_of(APIEntrepriseToken).to receive(:expired?).and_return(false) @@ -30,9 +30,9 @@ RSpec.describe APIEntreprise::ServiceJob, type: :job do expect(infos).not_to be_empty expect(infos["adresse"]).to eq(adresse) - expect(infos["numero_voie"]).to eq("50") - expect(infos["code_postal"]).to eq("75008") - expect(infos["localite"]).to eq("PARIS 8") + expect(infos["numero_voie"]).to eq("22") + expect(infos["code_postal"]).to eq("75016") + expect(infos["localite"]).to eq("PARIS 12") end it "geocode address" do @@ -45,7 +45,7 @@ RSpec.describe APIEntreprise::ServiceJob, type: :job do context "errors responses" do it "clear attributes when no address match" do - stub_request(:get, %r{https://entreprise.api.gouv.fr/v2/etablissements/}) + stub_request(:get, %r{https://entreprise.api.gouv.fr/v3\/insee\/sirene\/etablissements\/#{siret}}) .to_return(body: "{}", status: 404) subject service.reload diff --git a/spec/lib/api_entreprise/api_spec.rb b/spec/lib/api_entreprise/api_spec.rb index 99f1e4277..c3e498938 100644 --- a/spec/lib/api_entreprise/api_spec.rb +++ b/spec/lib/api_entreprise/api_spec.rb @@ -87,7 +87,7 @@ describe APIEntreprise::API do describe '.etablissement' do subject { described_class.new(procedure_id).etablissement(siret) } before do - stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/etablissements\/#{siret}?.*non_diffusables=true/) + stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/etablissements\/#{siret}?.*non_diffusables=true/) .to_return(status: status, body: body) allow_any_instance_of(APIEntrepriseToken).to receive(:expired?).and_return(false) end diff --git a/spec/lib/api_entreprise/etablissement_adapter_spec.rb b/spec/lib/api_entreprise/etablissement_adapter_spec.rb index e9cff88a3..a017e0983 100644 --- a/spec/lib/api_entreprise/etablissement_adapter_spec.rb +++ b/spec/lib/api_entreprise/etablissement_adapter_spec.rb @@ -7,12 +7,12 @@ describe APIEntreprise::EtablissementAdapter do end context 'SIRET valide avec infos diffusables' do - let(:siret) { '41816609600051' } + let(:siret) { '30613890001294' } let(:fixture) { 'spec/fixtures/files/api_entreprise/etablissements.json' } subject { described_class.new(siret, procedure_id).to_params } before do - stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/etablissements\/#{siret}/) + stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/etablissements\/#{siret}/) .to_return(body: File.read(fixture, status: 200)) end @@ -30,11 +30,11 @@ describe APIEntreprise::EtablissementAdapter do end it 'L\'entreprise contient bien un naf' do - expect(subject[:naf]).to eq('6202A') + expect(subject[:naf]).to eq('8411Z') end it 'L\'entreprise contient bien un libelle_naf' do - expect(subject[:libelle_naf]).to eq('Conseil en systèmes et logiciels informatiques') + expect(subject[:libelle_naf]).to eq('Administration publique générale') end it 'L\'entreprise contient bien un diffusable_commercialement qui vaut true' do @@ -43,36 +43,37 @@ describe APIEntreprise::EtablissementAdapter do context 'Concaténation lignes adresse' do it 'L\'entreprise contient bien une adresse sur plusieurs lignes' do - expect(subject[:adresse]).to eq("OCTO TECHNOLOGY\r\n50 AVENUE DES CHAMPS ELYSEES\r\n75008 PARIS\r\nFRANCE") + expect(subject[:adresse]).to eq("DIRECTION INTERMINISTERIELLE DU NUMERIQUE\r\nJEAN MARIE DURAND\r\nZAE SAINT GUENAULT\r\n51 BIS RUE DE LA PAIX\r\nCS 72809\r\n75256 PARIX CEDEX 12\r\nFRANCE") end end context 'Détails adresse' do it 'L\'entreprise contient bien un numero_voie' do - expect(subject[:numero_voie]).to eq('50') + expect(subject[:numero_voie]).to eq('22') end it 'L\'entreprise contient bien un type_voie' do - expect(subject[:type_voie]).to eq('AV') + expect(subject[:type_voie]).to eq('RUE') end it 'L\'entreprise contient bien un nom_voie' do - expect(subject[:nom_voie]).to eq('DES CHAMPS ELYSEES') + expect(subject[:nom_voie]).to eq('DE LA PAIX') end + it 'L\'entreprise contient bien un complement_adresse' do - expect(subject[:complement_adresse]).to eq('complement_adresse') + expect(subject[:complement_adresse]).to eq('ZAE SAINT GUENAULT') end it 'L\'entreprise contient bien un code_postal' do - expect(subject[:code_postal]).to eq('75008') + expect(subject[:code_postal]).to eq('75016') end it 'L\'entreprise contient bien une localite' do - expect(subject[:localite]).to eq('PARIS 8') + expect(subject[:localite]).to eq('PARIS 12') end it 'L\'entreprise contient bien un code_insee_localite' do - expect(subject[:code_insee_localite]).to eq('75108') + expect(subject[:code_insee_localite]).to eq('75112') end end end @@ -99,7 +100,7 @@ describe APIEntreprise::EtablissementAdapter do subject { described_class.new(siret, procedure_id).to_params } before do - stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/etablissements\/#{siret}/) + stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/etablissements\/#{siret}/) .to_return(body: File.read('spec/fixtures/files/api_entreprise/etablissements_private.json', status: 200)) end @@ -113,7 +114,7 @@ describe APIEntreprise::EtablissementAdapter do subject { described_class.new(bad_siret, procedure_id).to_params } before do - stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/etablissements\/#{bad_siret}/) + stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/etablissements\/#{bad_siret}/) .to_return(body: 'Fake body', status: 404) end diff --git a/spec/lib/api_entreprise/service_adapter_spec.rb b/spec/lib/api_entreprise/service_adapter_spec.rb index e12a40c40..94d2439e7 100644 --- a/spec/lib/api_entreprise/service_adapter_spec.rb +++ b/spec/lib/api_entreprise/service_adapter_spec.rb @@ -3,7 +3,7 @@ describe APIEntreprise::ServiceAdapter do allow_any_instance_of(APIEntrepriseToken).to receive(:expired?).and_return(false) end - let(:siret) { '41816609600051' } + let(:siret) { '30613890001294' } let(:service) { create(:service, siret: siret) } context 'SIRET valide avec infos diffusables' do @@ -11,7 +11,7 @@ describe APIEntreprise::ServiceAdapter do subject { described_class.new(siret, service.id).to_params } before do - stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/etablissements\/#{siret}/) + stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/etablissements\/#{siret}/) .with(query: hash_including({ 'object' => "service_id: #{service.id}" })) .to_return(body: File.read(fixture, status: 200)) end @@ -31,36 +31,36 @@ describe APIEntreprise::ServiceAdapter do context 'Concaténation lignes adresse' do it 'service contains a multi lines adress' do - expect(subject[:adresse]).to eq("OCTO TECHNOLOGY\r\n50 AVENUE DES CHAMPS ELYSEES\r\n75008 PARIS\r\nFRANCE") + expect(subject[:adresse]).to eq("DIRECTION INTERMINISTERIELLE DU NUMERIQUE\r\nJEAN MARIE DURAND\r\nZAE SAINT GUENAULT\r\n51 BIS RUE DE LA PAIX\r\nCS 72809\r\n75256 PARIX CEDEX 12\r\nFRANCE") end end context 'adress details' do it 'service contains a numero_voie' do - expect(subject[:numero_voie]).to eq('50') + expect(subject[:numero_voie]).to eq('22') end it 'service contains a type_voie' do - expect(subject[:type_voie]).to eq('AV') + expect(subject[:type_voie]).to eq('RUE') end it 'service contains a nom_voie' do - expect(subject[:nom_voie]).to eq('DES CHAMPS ELYSEES') + expect(subject[:nom_voie]).to eq('DE LA PAIX') end it 'service contains a complement_adresse' do - expect(subject[:complement_adresse]).to eq('complement_adresse') + expect(subject[:complement_adresse]).to eq('ZAE SAINT GUENAULT') end it 'service contains a code_postal' do - expect(subject[:code_postal]).to eq('75008') + expect(subject[:code_postal]).to eq('75016') end it 'service contains a localite' do - expect(subject[:localite]).to eq('PARIS 8') + expect(subject[:localite]).to eq('PARIS 12') end it 'service contains a code_insee_localite' do - expect(subject[:code_insee_localite]).to eq('75108') + expect(subject[:code_insee_localite]).to eq('75112') end end end @@ -79,7 +79,7 @@ describe APIEntreprise::ServiceAdapter do subject { described_class.new(bad_siret, service.id).to_params } before do - stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/etablissements\/#{bad_siret}/) + stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/etablissements\/#{bad_siret}/) .with(query: hash_including({ 'object' => "service_id: #{service.id}" })) .to_return(body: 'Fake body', status: 404) end diff --git a/spec/models/concern/siret_champ_etablissement_fetchable_concern_spec.rb b/spec/models/concern/siret_champ_etablissement_fetchable_concern_spec.rb index 364689184..dc803ad90 100644 --- a/spec/models/concern/siret_champ_etablissement_fetchable_concern_spec.rb +++ b/spec/models/concern/siret_champ_etablissement_fetchable_concern_spec.rb @@ -6,7 +6,7 @@ RSpec.describe SiretChampEtablissementFetchableConcern do let!(:champ) { create(:champ_siret) } before do - stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/etablissements\/#{siret}/) + stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/etablissements\/#{siret}/) .to_return(status: api_etablissement_status, body: api_etablissement_body) stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/unites_legales\/#{siret[0..8]}/) .to_return(body: File.read('spec/fixtures/files/api_entreprise/entreprises.json'), status: 200) @@ -90,13 +90,13 @@ RSpec.describe SiretChampEtablissementFetchableConcern do end context 'when the SIRET informations are retrieved successfully' do - let(:siret) { '41816609600051' } + let(:siret) { '30613890001294' } let(:api_etablissement_status) { 200 } let(:api_etablissement_body) { File.read('spec/fixtures/files/api_entreprise/etablissements.json') } it { expect { fetch_etablissement! }.to change { champ.reload.etablissement.siret }.to(siret) } - it { expect { fetch_etablissement! }.to change { champ.reload.etablissement.naf }.to("6202A") } + it { expect { fetch_etablissement! }.to change { champ.reload.etablissement.naf }.to("8411Z") } it { expect { fetch_etablissement! }.to change { Etablissement.count }.by(1) } diff --git a/spec/services/api_entreprise_service_spec.rb b/spec/services/api_entreprise_service_spec.rb index 835e35094..c35b7acd4 100644 --- a/spec/services/api_entreprise_service_spec.rb +++ b/spec/services/api_entreprise_service_spec.rb @@ -14,13 +14,13 @@ describe APIEntrepriseService do describe '#create_etablissement' do before do - stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/etablissements\/#{siret}/) + stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/etablissements\/#{siret}/) .to_return(body: etablissements_body, status: etablissements_status) stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/unites_legales\/#{siret[0..8]}/) .to_return(body: entreprises_body, status: entreprises_status) end - let(:siret) { '41816609600051' } + let(:siret) { '30613890001294' } let(:raison_sociale) { "DIRECTION INTERMINISTERIELLE DU NUMERIQUE" } let(:etablissements_status) { 200 } let(:etablissements_body) { File.read('spec/fixtures/files/api_entreprise/etablissements.json') } diff --git a/spec/support/shared_examples_for_prefilled_dossier.rb b/spec/support/shared_examples_for_prefilled_dossier.rb index 1b3f1607c..fdfa7df7c 100644 --- a/spec/support/shared_examples_for_prefilled_dossier.rb +++ b/spec/support/shared_examples_for_prefilled_dossier.rb @@ -7,7 +7,7 @@ shared_examples "the user has got a prefilled dossier, owned by themselves" do click_on 'Valider' expect(page).to have_current_path(etablissement_dossier_path(dossier)) - expect(page).to have_content('OCTO TECHNOLOGY') + expect(page).to have_content('DIRECTION INTERMINISTERIELLE DU NUMERIQUE') click_on 'Continuer avec ces informations' expect(page).to have_current_path(brouillon_dossier_path(dossier)) diff --git a/spec/system/users/dossier_creation_spec.rb b/spec/system/users/dossier_creation_spec.rb index d5581a02f..8eac81cd0 100644 --- a/spec/system/users/dossier_creation_spec.rb +++ b/spec/system/users/dossier_creation_spec.rb @@ -67,7 +67,7 @@ describe 'Creating a new dossier:' do let(:dossier) { procedure.dossiers.last } before do - stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/etablissements\/#{siret}/) + stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/etablissements\/#{siret}/) .to_return(status: 200, body: File.read('spec/fixtures/files/api_entreprise/etablissements.json')) stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/unites_legales\/#{siren}/) .to_return(status: 200, body: File.read('spec/fixtures/files/api_entreprise/entreprises.json')) @@ -96,7 +96,7 @@ describe 'Creating a new dossier:' do click_on 'Valider' expect(page).to have_current_path(etablissement_dossier_path(dossier)) - expect(page).to have_content('OCTO TECHNOLOGY') + expect(page).to have_content('Coiff Land, CoiffureLand') click_on 'Continuer avec ces informations' expect(page).to have_current_path(brouillon_dossier_path(dossier)) diff --git a/spec/system/users/dossier_prefill_get_spec.rb b/spec/system/users/dossier_prefill_get_spec.rb index 0c428bef2..bcab7d18a 100644 --- a/spec/system/users/dossier_prefill_get_spec.rb +++ b/spec/system/users/dossier_prefill_get_spec.rb @@ -64,7 +64,7 @@ describe 'Prefilling a dossier (with a GET request):', js: true do } before do - stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/etablissements\//) + stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/etablissements\//) .to_return(status: 200, body: File.read('spec/fixtures/files/api_entreprise/etablissements.json')) stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/unites_legales\/#{siret_value[0..8]}/) diff --git a/spec/system/users/dossier_prefill_post_spec.rb b/spec/system/users/dossier_prefill_post_spec.rb index ea52c2529..ff7f18ed1 100644 --- a/spec/system/users/dossier_prefill_post_spec.rb +++ b/spec/system/users/dossier_prefill_post_spec.rb @@ -41,7 +41,7 @@ describe 'Prefilling a dossier (with a POST request):', js: true do let(:annuaire_education_value) { '0050009H' } before do - stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v2\/etablissements\/#{siret_value}/) + stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/etablissements\/#{siret_value}/) .to_return(status: 200, body: File.read('spec/fixtures/files/api_entreprise/etablissements.json')) stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/insee\/sirene\/unites_legales\/#{siret_value[0..8]}/)