Skip to content

Commit

Permalink
Merge pull request #595 from etalab/feature/dat-728-api-hermes
Browse files Browse the repository at this point in the history
Creation api hermes
  • Loading branch information
Isalafont authored Dec 11, 2024
2 parents 0347993 + 5121164 commit 9db28c3
Show file tree
Hide file tree
Showing 14 changed files with 253 additions and 4 deletions.
20 changes: 20 additions & 0 deletions app/models/authorization_request/api_hermes.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
class AuthorizationRequest::APIHermes < AuthorizationRequest
include AuthorizationExtensions::BasicInfos
include AuthorizationExtensions::PersonalData
include AuthorizationExtensions::CadreJuridique
include AuthorizationExtensions::GDPRContacts
include AuthorizationExtensions::OperationalAcceptance
include AuthorizationExtensions::SafetyCertification
include AuthorizationExtensions::Volumetrie

VOLUMETRIES = {
'200 appels / minute': 200,
'1000 appels / minute': 1000,
}.freeze

add_document :maquette_projet, content_type: ['application/pdf'], size: { less_than: 10.megabytes }

add_attributes :date_prevue_mise_en_production

contact :contact_technique, validation_condition: ->(record) { record.need_complete_validation?(:contacts) }
end
15 changes: 15 additions & 0 deletions app/models/authorization_request/api_hermes_sandbox.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
class AuthorizationRequest::APIHermesSandbox < AuthorizationRequest
include AuthorizationExtensions::BasicInfos
include AuthorizationExtensions::PersonalData
include AuthorizationExtensions::CadreJuridique
include AuthorizationExtensions::GDPRContacts

add_document :maquette_projet, content_type: ['application/pdf'], size: { less_than: 10.megabytes }

add_attributes :date_prevue_mise_en_production,
:volumetrie_approximative

contact :contact_technique, validation_condition: ->(record) { record.need_complete_validation?(:contacts) }

add_checkbox :dpd_homologation_checkbox
end
45 changes: 45 additions & 0 deletions config/authorization_definitions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -585,3 +585,48 @@ shared:
blocks:
- name: "legal"
- name: "contacts"

api_hermes_sandbox:
name: API Hermes
description: "FEEDME"
provider: "dgfip"
kind: 'api'
link: "https://api.gouv.fr/producteurs/dgfip"
cgu_link: "/cgus/dgfip/cgu_bas_hermes_v.2023_11.pdf"
# FEEDME
access_link: "https://api-hermes.gouv.fr/tokens/%<external_provider_id>"
public: false
stage:
type: sandbox
next:
id: api_hermes
form_id: api-hermes-production
blocks:
- name: basic_infos
- name: personal_data
- name: legal
- name: contacts

api_hermes:
name: API Hermes
description: "FEEDME"
provider: "dgfip"
kind: 'api'
link: "https://api.gouv.fr/producteurs/dgfip"
cgu_link: "/cgus/dgfip/cgu_prod_hermes_v.2023_11.pdf"
# FEEDME
access_link: "https://api-hermes.gouv.fr/tokens/%<external_provider_id>"
public: false
stage:
type: production
previouses:
- id: api_hermes_sandbox
form_id: api-hermes-sandbox
blocks:
- name: basic_infos
- name: personal_data
- name: legal
- name: contacts
- name: operational_acceptance
- name: safety_certification
- name: volumetrie
78 changes: 78 additions & 0 deletions config/authorization_request_forms/api_hermes.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
api-hermes-sandbox:
description: FEEDME
introduction: |
<span class="fr-text--bold">Les données restituées par l’API sont décrites dans les CGU attachées à cette habilitation.</span>
<br/>
<br/>
Notre équipe d’instruction étudiera votre demande en bac à sable, lorsqu’elle sera validée vous pourrez compléter la suite de votre demande.
<div class="intro-stepper">
<div class="step current">
<div class="step-number">1.</div>
<div class="step-content">
<h3>Le bac à sable</h3>
<p class="fr-text--xs">Dans un premier temps, une demande d’habilitation au <strong>bac à sable</strong> de l'API Hermes</p>
</div>
</div>
<div class="step pending">
<div class="step-number">2.</div>
<div class="step-content">
<h3>La production</h3>
<p class="fr-text--xs">Dans un second temps, une demande d’habilitation à la <strong>production</strong> de l'API Hermes</p>
</div>
</div>
<div class="step pending">
<div class="step-number">3.</div>
<div class="step-content">
<h3>Votre service est ouvert !</h3>
<p class="fr-text--xs">Une fois vos habilitations validées, vous pouvez ouvrir votre service !</p>
</div>
</div>
</div>
authorization_request: APIHermesSandbox
steps: &api_hermes_steps
- name: basic_infos
- name: personal_data
- name: legal
- name: contacts

api-hermes-production:
description: FEEDME
introduction: |
|
Votre demande d'accès au bac à sable a été validée, vous pouvez à présent poursuivre votre demande en demandant les accès à la production.
<div class="intro-stepper">
<div class="step completed">
<div class="step-number">1.</div>
<div class="step-content">
<h3>Le bac à sable</h3>
<p class="fr-text--xs">Dans un premier temps, une demande d’habilitation au <strong>bac à sable</strong> de l'API Hermes</p>
</div>
</div>
<div class="step current">
<div class="step-number">2.</div>
<div class="step-content">
<h3>La production</h3>
<p class="fr-text--xs">Dans un second temps, une demande d’habilitation à la <strong>production</strong> de l'API Hermes</p>
</div>
</div>
<div class="step pending">
<div class="step-number">3.</div>
<div class="step-content">
<h3>Votre service est ouvert !</h3>
<p class="fr-text--xs">Une fois vos habilitations validées, vous pouvez ouvrir votre service !</p>
</div>
</div>
</div>
authorization_request: APIHermes
static_blocks: *api_hermes_steps
steps:
- name: operational_acceptance
- name: legal
- name: safety_certification
- name: volumetrie
5 changes: 4 additions & 1 deletion config/locales/activerecord.fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,10 +95,13 @@ fr:

extra_organization_contact_name: Nom du contact supplémentaire
extra_organization_contact_email: Email du contact supplémentaire

france_connect:
alternative_connexion: Attestation de connexion alternative à FranceConnect

api_hermes_sandbox:
dpd_homologation_checkbox: Attestation de déclaration d'un dpd et d'accomplissement de formalité d'homologation.

denial_of_authorization:
reason: Raison du refus
revocation_of_authorization:
Expand Down
6 changes: 6 additions & 0 deletions config/locales/authorization_request_forms.fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -732,3 +732,9 @@ fr:

formulaire_qf:
legal: *api_particulier_editor_common_wordings

api_hermes_sandbox:
volumetrie_approximative:
hint: Nombre de démarches ou dossiers traités dans l'année
dpd_homologation_checkbox:
label: J’atteste que mon organisation devra déclarer à la DGFiP l’accomplissement des formalités en matière de protection des données à caractère personnel et qu’elle veillera à procéder à l’homologation de sécurité de son projet.
2 changes: 1 addition & 1 deletion features/habilitation_en_plusieurs_paliers.feature
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Fonctionnalité: Interactions avec des habilitations en plusieurs paliers (bac
* je renseigne l'homologation de sécurité
* je clique sur "Suivant"

* je renseigne la volumétrie
* je renseigne la volumétrie pour "API Impôt Particulier"
* je clique sur "Suivant"

* j'adhère aux conditions générales
Expand Down
52 changes: 52 additions & 0 deletions features/habilitations/dgfip/api_hermes.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# language: fr

Fonctionnalité: Soumission d'une demande d'habilitation API Hermes
Contexte:
Sachant que je suis un demandeur
Et que je me connecte

Scénario: Je soumets une demande d'habilitation valide à l'étape Bac à sable
* je démarre une nouvelle demande d'habilitation "API Hermes" à l'étape "Bac à sable"
* je renseigne les infos de bases du projet
* je clique sur "Suivant"

* je renseigne les infos concernant les données personnelles
* je clique sur "Suivant"

* je renseigne le cadre légal
* je clique sur "Suivant"

* je renseigne les informations des contacts RGPD
* je renseigne les informations du contact technique
* je clique sur "Suivant"

* j'adhère aux conditions générales
* je coche "J’atteste que mon organisation devra déclarer à la DGFiP l’accomplissement des formalités en matière de protection des données à caractère personnel et qu’elle veillera à procéder à l’homologation de sécurité de son projet."
* je clique sur "Soumettre la demande d'habilitation"

Alors il y a un message de succès contenant "soumise avec succès"
Et je suis sur la page "Demandes et habilitations"

Scénario: Je soumets une demande d'habilitation valide à l'étape Production
Quand j'ai 1 demande d'habilitation "API Hermes" à l'étape "Bac à sable" validée
Et que je me rends sur mon tableau de bord
Et je clique sur "Démarrer ma demande d’habilitation en production"
Et que je clique sur "Débuter ma demande"

* je renseigne la recette fonctionnelle
* je clique sur "Suivant"

* je renseigne le cadre légal
* je clique sur "Suivant"

* je renseigne l'homologation de sécurité
* je clique sur "Suivant"

* je renseigne la volumétrie pour "API Hermes"
* je clique sur "Suivant"

* j'adhère aux conditions générales
* je clique sur "Soumettre la demande d'habilitation"

Alors il y a un message de succès contenant "soumise avec succès"
Et je suis sur la page "Demandes et habilitations"
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,4 @@ Fonctionnalité: Soumission d'une demande d'habilitation API Impôts Particulier
* je clique sur "Suivant"

Alors la page contient "Avec FranceConnect"
Et la page contient "Demande d'accès à france connect pour mon appli"
Et la page contient "Demande d'accès à france connect pour mon appli"
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Fonctionnalité: Soumission d'une demande d'habilitation API Impôt Particulier
* je renseigne l'homologation de sécurité
* je clique sur "Suivant"

* je renseigne la volumétrie
* je renseigne la volumétrie pour "API Impôt Particulier"
* je clique sur "Suivant"

* j'adhère aux conditions générales
Expand Down
7 changes: 7 additions & 0 deletions features/step_definitions/authorization_requests_steps.rb
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,13 @@
)
end

Quand('je renseigne la volumétrie pour {string}') do |_string|
first_volumetrie_value = AuthorizationRequest.last.available_volumetries.keys.first
steps %(
* je sélectionne "#{first_volumetrie_value}" pour "Quelle limitation de débit souhaitez- vous pour votre téléservice ?"
)
end

Quand('je renseigne les informations du contact technique') do
steps %(
* je remplis les informations du contact "Contact technique" avec :
Expand Down
Binary file added public/cgus/dgfip/cgu_bas_hermes_v.2023_11.pdf
Binary file not shown.
Binary file added public/cgus/dgfip/cgu_prod_hermes_v.2023_11.pdf
Binary file not shown.
23 changes: 23 additions & 0 deletions spec/factories/authorization_requests.rb
Original file line number Diff line number Diff line change
Expand Up @@ -506,5 +506,28 @@
with_cadre_juridique
with_personal_data
end

trait :api_hermes_sandbox do
type { 'AuthorizationRequest::APIHermesSandbox' }

form_uid { 'api-hermes-sandbox' }

with_basic_infos
with_personal_data
with_cadre_juridique
end

trait :api_hermes_production do
type { 'AuthorizationRequest::APIHermes' }

form_uid { 'api-hermes-production' }

with_basic_infos
with_personal_data
with_cadre_juridique
with_operational_acceptance
with_safety_certification
with_volumetrie
end
end
end

0 comments on commit 9db28c3

Please sign in to comment.