*** Settings *** Documentation Test de task. # On inclut les mots-clefs Resource resources/resources.robot # On ouvre/ferme le navigateur au début/à la fin du Test Suite. Suite Setup For Suite Setup Suite Teardown For Suite Teardown *** Variables *** ${alternate_filestorage} filestorage_plop ${lien_css_telechargement} table.document_numerise tbody tr td a.lienDocumentNumerise span[title="Télécharger"] ${test_id} 302_01 *** Test Cases *** Activation des options générales [Documentation] Il est nécessaire de faire : ... l'activation de 'option_notification_piece_numerisee' pour éviter le fail : ... FAIL: Element with locator 'dossier_message_id' not found. ... l'activation de l'option 'option_afficher_division' pour éviter le fail ... liée a l'affichage de la vision ex : '"Juriste" == "Juriste (H)"' should be true. &{om_param} = Create Dictionary ... libelle=option_notification_piece_numerisee ... valeur=true ... om_collectivite=agglo Gerer le paramètre par WS ${om_param} # Permet le même comportement du test qu'il soit exécuté en runone ou runall &{param_division} = Create Dictionary ... libelle=option_afficher_division ... valeur=true ... om_collectivite=agglo Gerer le paramètre par WS ${param_division} # définir les paramètres de type de demande &{platau_type_demande_initial} = Create Dictionary ... libelle=platau_type_demande_initial_DP ... valeur=DI ... om_collectivite=agglo Gerer le paramètre par WS ${platau_type_demande_initial} Depuis la page d'accueil admin admin Rendre les types de dossier d'autorisation détaillés utilisés transmissible à Plat'AU PCI Rendre les types de dossier d'autorisation détaillés utilisés transmissible à Plat'AU DP Constitution du jeu de données DI [Documentation] Permet de vérifier le bon fonctionnement de la création des tâches lié à la création d'un dossier d'instruction ... Vérifie aussi qu'il n'y a pas de création d'autre tâche non concerné Depuis la page d'accueil admin admin &{args_dossier} = Create Dictionary ... om_collectivite=MARSEILLE ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... terrain_adresse_localite=TEST${test_id}AdresseLocalite &{args_petitionnaire1} = Create Dictionary ... qualite=particulier ... particulier_nom=TEST${test_id}KNOM01 ... particulier_prenom=TEST${test_id}RENOM01 ... localite=TEST${test_id}Localite ... om_collectivite=MARSEILLE ${di1} = Ajouter la demande par WS ${args_dossier} ${args_petitionnaire1} &{donnees_techniques_values} = Create Dictionary ... enga_decla_lieu=TEST${test_id}engadelalieu ... enga_decla_date=${date_ddmmyyyy} Saisir les données techniques du DI ${di1} ${donnees_techniques_values} ${di1_sans_espace} = Sans espace ${di1} ${di1_da} = Replace String Using Regexp ${di1_sans_espace} [A-Z][0-9]+$ ${EMPTY} Set Suite Variable ${di1} Set Suite Variable ${di1_sans_espace} Set Suite Variable ${di1_da} Vérification qu'il n'y a pas d'ajout de la task Ajout pièce lors de l'ajout d'un document de travail au dossier d'instruction [Documentation] Permet de vérifier que la tâche Ajout pièce n'est pas ajouté lors de l'ajout d'un document de travail ... au dossier d'instruction. Depuis la page d'accueil admin admin # On ajoute un document de travail &{document_travail_values} = Create Dictionary ... uid_upload=testImportManuel.pdf ... description_type=document de travail ... date_creation=06/06/2001 Ajouter un document de travail depuis le dossier d'instruction ${di1} ${document_travail_values} &{task_values} = Create Dictionary ... type=Ajout pièce (sortant) ... dossier=${di1_sans_espace} ... stream=Sortant # On accède au tableau Depuis le menu Moniteur Plat'AU ${passed} = Run Keyword And Return Status Element Should Not Contain css=div#adv-search-adv-fields select#type Ajout pièce (sortant) Run Keyword If ${passed}==False Select From List By Label css=select#type Ajout pièce (sortant) Run Keyword If ${passed}==False Input Text css=#dossier ${di1_sans_espace} Run Keyword If ${passed}==False Select From List By Label css=#stream Sortant Run Keyword If ${passed}==False Click On Search Button Run Keyword If ${passed}==False Element Should Contain css=#tab-task Aucun enregistrement. Vérification de l'ajout de la task Ajout pièce lors de l'ajout d'une piece de catégorie Plat'AU au dossier d'instruction [Documentation] Permet de vérifier que la tâche Ajout pièce est bien ajouté lors de l'ajout du pièce au dossier d'instruction ... et que le contenu ajouté est téléchargé à partir de la tâche est identique. ... Vérifie aussi qu'il n'y a pas de création d'autre tâche non concerné Depuis la page d'accueil admin admin # On ajoute un document numérisé par DI &{document_numerise_values} = Create Dictionary ... uid_upload=testImportManuel.pdf ... date_creation=${date_ddmmyyyy} ... document_numerise_type=Test type document numerise de catégorie PLATAU Ajouter une pièce depuis le dossier d'instruction ${di1} ${document_numerise_values} &{task_values} = Create Dictionary ... type=ajout_piece ... dossier=${di1_sans_espace} ... state=new ... link_dossier=${di1_sans_espace} ... stream=output Vérifier que la tâche a bien été ajoutée ou modifiée ${task_values} ${id_ajout_piece} = Get Text css=#task ${json_payload_loaded} = Récupérer le contenu du champ json_payload ${task_values} ${link_piece} = Set Variable ${json_payload_loaded['document_numerise']['path']} ${output_dir} ${output_name}= Télécharger un fichier ${SESSION_COOKIE} ${PROJECT_URL}${link_piece} ${EXECDIR}${/}binary_files${/} ${base64_file} = Run base64 ${output_dir}${output_name} ${base64_model} = Run base64 ${EXECDIR}${/}binary_files${/}testImportManuel.pdf Should Be Equal As Strings ${base64_file} ${base64_model} Go To ${PROJECT_URL}/app/index.php?module=form&obj=task&action=998&idx=${id_ajout_piece}&category=platau&state=new&type=ajout_piece&stream=output ${json_task} = Get Text css=#form-container Element Should Contain css=#form-container "type":"ajout_piece" ${id_next_task} = Evaluate ${id_ajout_piece} + 1 Vérifier qu'il n'y a pas de création d'autre tâche non concerné ${id_next_task} ${di1_da} Activation de la configuration du filestorage alternatif # On change la configuration du filestorage Move File ..${/}dyn${/}filestorage.inc.php ..${/}dyn${/}filestorage.inc.php.bak Copy File ..${/}tests${/}binary_files${/}alternate_filestorage.inc.php ..${/}dyn${/} Move File ..${/}dyn${/}alternate_filestorage.inc.php ..${/}dyn${/}filestorage.inc.php Ajout d'une tâche Ajout pièce en utilisant le filestorage alternatif [Documentation] Ce test case permet de vérifier le bon fonctionnement de l'ajout d'une tâche Ajout pièce avec un filesotrage alternatif. ... On ajout tout d'abord la tâche par web service et on vérifie que l'uid contient bien le préfixe fs qui a été configuré dans le fichier ... filesotrage.inc.php. On vérifie ensuite que le fichier a bien été ajouté dans le filestorage alternatif (../var/filestorage_plop) ... et qu'il n'est pas présent dans le filstorage pricipal. On traite la tâche Ajout pièce ce qui va lié la pièce à un dossier et on consulte ... la pièce afin de vérifier que l'uid contient bien le préfixe dans le sous titre. # En tant qu'admin Depuis la page d'accueil admin admin # isole le contexte du test (création d'une collectivité) &{librecom_values} = Create Dictionary ... om_collectivite_libelle=LIBRECOM_WS_PIECE_AFS ... departement=016 ... commune=098 ... insee=16098 ... direction_code=O ... direction_libelle=Direction de LIBRECOM_WS_PIECE_AFS ... direction_chef=Chef ... division_code=OO ... division_libelle=Division OO ... division_chef=Chef ... guichet_om_utilisateur_nom=KhalilAFS GibrAFS ... guichet_om_utilisateur_email=kgibrafs@openads-test.fr ... guichet_om_utilisateur_login=kgibrafs ... guichet_om_utilisateur_pwd=kgibrafs ... instr_om_utilisateur_nom=DomirAFS TambAFS ... instr_om_utilisateur_email=dtambafs@openads-test.fr ... instr_om_utilisateur_login=dtambafs ... instr_om_utilisateur_pwd=dtambafs ... code_entite=LBCOM_16 ... acteur=LIBRECOM-ACT-016-AFS Isolation d'un contexte ${librecom_values} # ajouter le paramètre 'acteur' à la collectivité/au service &{param_platau_acteur} = Create Dictionary ... libelle=platau_acteur_service_consulte ... valeur=${librecom_values["acteur"]} ... om_collectivite=${librecom_values["om_collectivite_libelle"]} Gerer le paramètre par WS ${param_platau_acteur} # Ajouter le type de document avec le code '90' tel qu'il est dans la payload ${dnt_code} = Set Variable 95 &{dnt_values} = Create Dictionary ... code=${dnt_code} ... libelle=Document numérisé Plat'AU AFS ... document_numerise_type_categorie=Autre Ajouter le type de pièces ${dnt_values} Valid Message Should Contain Vos modifications ont bien été enregistrées. # Récupère l'identifiant de la collectivité LIBRECOM_WS Depuis le contexte de la collectivité ${librecom_values["om_collectivite_libelle"]} ${librecom_ws_id} = Get Text css=#om_collectivite # Récupère le template de payload JSON et le transforme en dictionnaire ${dossier_json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_payload_min.txt # Remplace certaines valeurs ${dossier_json_payload} = Replace String ${dossier_json_payload} EF-DSQ-4512 ${librecom_values["acteur"]} ${dossier_json_payload} = Replace String ${dossier_json_payload} 7SZ-SX8-TR4 000-AAA-10 ${dossier_json_payload} = Replace String ${dossier_json_payload} 2SZ-SX8-AZ6 AAA-000-10 ${dossier_json_payload} = Replace String ${dossier_json_payload} 00009 00001P0 ${dossier_json_payload} = Replace String ${dossier_json_payload} 13055 ${librecom_values["insee"]} ${dossier_payload_dict} = To Json ${dossier_json_payload} # Ajoute d'une tâche de création de DI ${dossier_task_values} = Create Dictionary ... type=create_DI_for_consultation ... json_payload=${dossier_json_payload} Ajouter la tâche par WS ${dossier_task_values} # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${dossier_msg} = Déclencher le traitement des tâches par WS # Extraction du libellé du DI dans le message ${di_regex} = Catenate ^.*\\[[0-9]+\\] ${dossier_task_values["type"]} ... ${dossier_payload_dict["dossier"]["dossier"]} : ... dossier instruction '([^']+)' .*$ ${di_lib} = Replace String Using Regexp ${dossier_msg} ${di_regex} \\1 # En tant qu'instructeur de la collectivité/du service LIBRECOM_WS_PIECE Depuis la page d'accueil kgibrafs kgibrafs # Vérifier que le dossier a bien été ajouté Depuis le contexte du dossier d'instruction ${di_lib} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Should Contain css=#dossier_libelle ${di_lib} # En tant qu'admin Depuis la page d'accueil admin admin # On récupère le contenu du fichier json_ajout_piece_with_b64.json qui sera notre # json_payload correspondant à la tâche Ajout pièce ${json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_ajout_piece_with_b64.json # Remplace certaines valeurs ${json_payload} = Replace String ${json_payload} GH-EQ6-5432 ${librecom_values["acteur"]} ${json_payload} = Replace String ${json_payload} 7XY-DK8-5X 000-AAA-10 ${json_payload} = Replace String ${json_payload} 1EY-RT8-5X PPP-000-10 ${json_payload} = Replace String ${json_payload} FE4-JR5-8W AAA-000-10 ${json_payload} = Replace String ${json_payload} "document_numerise_type_code": "90" "document_numerise_type_code": "95" ${piece_payload_dict} = To Json ${json_payload} ${external_uid_piece_1} = Set Variable ${piece_payload_dict["external_uids"]["piece"]} # Ajoute la tâche d'ajout de pièce ${task_values} = Create Dictionary ... type=add_piece ... json_payload=${json_payload} ${task_id} = Ajouter la tâche par WS ${task_values} # ajout manuellement les éléments qui ont du être défini par défaut Set To Dictionary ${task_values} task=${task_id} Set To Dictionary ${task_values} state=new Set To Dictionary ${task_values} stream=input # se rend sur la page de la tâche #Depuis le contexte d'une task à partir de la recherche avancée ${task_values} Depuis le contexte de la task ${task_id} # vérifie qu'elle a bien été ajoutée Vérifier que la tâche a bien été ajoutée ou modifiée ${task_values} ${json_payload_loaded} = Récupérer le contenu du champ json_payload ${task_values} Log Dictionary ${json_payload_loaded['document_numerise']} Dictionary Should Contain Key ${json_payload_loaded['document_numerise']} uid # L'uid doit contenir le préfixe correspondant au filestorage alternatif ${uid} = Set Variable ${json_payload_loaded['document_numerise']['uid']} ${prefix} = Get Substring ${uid} 0 5 Should Be Equal As Strings ${prefix} fs:// # On enlève le préfixe de l'uid ${uid_without_prefix} = Get Substring ${uid} 5 ${path_1} = Get Substring ${uid} 5 7 ${path_2} = Get Substring ${uid} 5 9 # Vérification dans le filestorage alternatif, le fichier doit être présent File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix} File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix}.info # Vérification dans le filestorage principale, le fichier ne doit pas être présent File Should Not Exist ..${/}var${/}filstorage${/}${path_1}${/}${path_2}${/}${uid_without_prefix} File Should Not Exist ..${/}var${/}filstorage${/}${path_1}${/}${path_2}${/}${uid_without_prefix}.info # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${msg} = Déclencher le traitement des tâches par WS Log ${msg} # Extraction du libellé du DI dans le message ${piece_di_regex} = Catenate ^.*\\[[0-9]+\\] ${task_values["type"]} * ... : pièce : '[^']+' créée sur le dossier d'instruction '([^']+)'.*$ ${piece_di_lib} = Replace String Using Regexp ${msg} ${piece_di_regex} \\1 # Le DI devrait être le même que celui du dossier Should Be Equal ${piece_di_lib} ${dossier_payload_dict["dossier"]["dossier"]} # Depuis la pièce Depuis le contexte de la pièce par le dossier d'instruction ${di_lib} ... Document numérisé Plat'AU # Lors de la consultation de la pièce, on affiche l'uid dans le sous titre. # Le traitement déplaçant le fichier dans le backend de storage principal, l'uid # affiché doit être différent Page Should Not Contain sousform-document_numerise ${uid} Vérification de l'ajout de la tâche Ajout pièce par ws, puis traitement [Documentation] Permet de vérifier que la tâche ajout_pièce en stream input ajout bien un fichier dans le filestorage ... à partir du contenu du json payload vérifie aussi que l'uid du fichier ajouté est bien enregistré ... dans le json payload # En tant qu'admin Depuis la page d'accueil admin admin # isole le contexte du test (création d'une collectivité) &{librecom_values} = Create Dictionary ... om_collectivite_libelle=LIBRECOM_WS_PIECE ... departement=014 ... commune=095 ... insee=14095 ... direction_code=GF1 ... direction_libelle=Direction de LIBRECOM_WS_PIECE ... direction_chef=Chef ... division_code=GF1 ... division_libelle=Division GF1 ... division_chef=Chef ... guichet_om_utilisateur_nom=Khalil Gibran ... guichet_om_utilisateur_email=kgibran@openads-test.fr ... guichet_om_utilisateur_login=kgibran ... guichet_om_utilisateur_pwd=kgibran ... instr_om_utilisateur_nom=Domir Tambu ... instr_om_utilisateur_email=dtambu@openads-test.fr ... instr_om_utilisateur_login=dtambu ... instr_om_utilisateur_pwd=dtambu ... code_entite=LBCOM_14 ... acteur=LIBRECOM-ACT-014 Isolation d'un contexte ${librecom_values} # ajouter le paramètre 'acteur' à la collectivité/au service &{param_platau_acteur} = Create Dictionary ... libelle=platau_acteur_service_consulte ... valeur=${librecom_values["acteur"]} ... om_collectivite=${librecom_values["om_collectivite_libelle"]} Gerer le paramètre par WS ${param_platau_acteur} # Ajouter le type de document avec le code '90' tel qu'il est dans la payload ${dnt_code} = Set Variable 90 &{dnt_values} = Create Dictionary ... code=${dnt_code} ... libelle=Document numérisé Plat'AU ... document_numerise_type_categorie=Autre Ajouter le type de pièces ${dnt_values} Valid Message Should Contain Vos modifications ont bien été enregistrées. # Récupère l'identifiant de la collectivité LIBRECOM_WS Depuis le contexte de la collectivité ${librecom_values["om_collectivite_libelle"]} ${librecom_ws_id} = Get Text css=#om_collectivite # Récupère le template de payload JSON et le transforme en dictionnaire ${dossier_json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_payload_min.txt # Remplace certaines valeurs ${dossier_json_payload} = Replace String ${dossier_json_payload} EF-DSQ-4512 ${librecom_values["acteur"]} ${dossier_json_payload} = Replace String ${dossier_json_payload} 7SZ-SX8-TR4 000-AAA-10 ${dossier_json_payload} = Replace String ${dossier_json_payload} 2SZ-SX8-AZ6 AAA-000-10 ${dossier_json_payload} = Replace String ${dossier_json_payload} 00009 00001P0 ${dossier_json_payload} = Replace String ${dossier_json_payload} 13055 ${librecom_values["insee"]} # On remplace le code postal par une valeur trop grande # afin de vérifier si elle va être tronqué ${dossier_json_payload} = Replace String ${dossier_json_payload} ... "terrain_adresse_code_postal" : "75001" "terrain_adresse_code_postal" : "7500138432" ${dossier_payload_dict} = To Json ${dossier_json_payload} # Ajoute d'une tâche de création de DI ${dossier_task_values} = Create Dictionary ... type=create_DI_for_consultation ... json_payload=${dossier_json_payload} Ajouter la tâche par WS ${dossier_task_values} # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${dossier_msg} = Déclencher le traitement des tâches par WS # Extraction du libellé du DI dans le message ${di_regex} = Catenate ^.*\\[[0-9]+\\] ${dossier_task_values["type"]} ... ${dossier_payload_dict["dossier"]["dossier"]} : ... dossier instruction '([^']+)' .*$ ${di_lib} = Replace String Using Regexp ${dossier_msg} ${di_regex} \\1 # En tant qu'instructeur de la collectivité/du service LIBRECOM_WS_PIECE Depuis la page d'accueil kgibran kgibran # Vérifier que le dossier a bien été ajouté Depuis le contexte du dossier d'instruction ${di_lib} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Should Contain css=#dossier_libelle ${di_lib} # On vérifie que le code postal a bien été tronqué (7500138432 doit devenir 75001) Open Fieldset dossier_instruction localisation Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Should Contain css=#terrain_adresse_code_postal 75001 # Active l'option de renommage des fichiers &{param_option} = Create Dictionary ... libelle=option_renommage_document_numerise_tache ... valeur=true ... om_collectivite=agglo Gerer le paramètre par WS ${param_option} # On récupère le contenu du fichier json_ajout_piece_with_b64.json qui sera notre # json_payload correspondant à la tâche Ajout pièce ${json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_ajout_piece_with_b64.json # Remplace certaines valeurs ${json_payload} = Replace String ${json_payload} GH-EQ6-5432 ${librecom_values["acteur"]} ${json_payload} = Replace String ${json_payload} 7XY-DK8-5X 000-AAA-10 ${json_payload} = Replace String ${json_payload} 1EY-RT8-5X PPP-000-10 ${json_payload} = Replace String ${json_payload} FE4-JR5-8W AAA-000-10 ${piece_payload_dict} = To Json ${json_payload} ${external_uid_piece_1} = Set Variable ${piece_payload_dict["external_uids"]["piece"]} # Ajoute la tâche d'ajout de pièce ${task_values} = Create Dictionary ... type=add_piece ... json_payload=${json_payload} ${task_id} = Ajouter la tâche par WS ${task_values} # ajout manuellement les éléments qui ont du être défini par défaut Set To Dictionary ${task_values} task=${task_id} Set To Dictionary ${task_values} state=new Set To Dictionary ${task_values} stream=input # En tant qu'admin Depuis la page d'accueil admin admin # se rend sur la page de la tâche #Depuis le contexte d'une task à partir de la recherche avancée ${task_values} Depuis le contexte de la task ${task_id} # vérifie qu'elle a bien été ajoutée Vérifier que la tâche a bien été ajoutée ou modifiée ${task_values} ${json_payload_loaded} = Récupérer le contenu du champ json_payload ${task_values} Log Dictionary ${json_payload_loaded['document_numerise']} Dictionary Should Contain Key ${json_payload_loaded['document_numerise']} uid ${uid} = Set Variable ${json_payload_loaded['document_numerise']['uid']} # On enlève le préfixe de l'uid ${uid_without_prefix} = Get Substring ${uid} 5 ${path_1} = Get Substring ${uid} 5 7 ${path_2} = Get Substring ${uid} 5 9 # Vérification dans le filestorage File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix} File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix}.info # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${msg} = Déclencher le traitement des tâches par WS Log ${msg} # Extraction du libellé du DI dans le message ${piece_di_regex} = Catenate ^.*\\[[0-9]+\\] ${task_values["type"]} * ... : pièce : '[^']+' créée sur le dossier d'instruction '([^']+)'.*$ ${piece_di_lib} = Replace String Using Regexp ${msg} ${piece_di_regex} \\1 # Le DI devrait être le même que celui du dossier Should Be Equal ${piece_di_lib} ${dossier_payload_dict["dossier"]["dossier"]} # Depuis la page des pièces du dossier Depuis l'onglet des pièces du dossier d'instruction ${di_lib} # Le nom du fichier doit être présent en tant que pièce Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be ... css=${lien_css_telechargement} ... ${piece_payload_dict["document_numerise"]["nom_fichier"]} # Depuis la pièce Depuis le contexte de la pièce par le dossier d'instruction ${di_lib} ... Document numérisé Plat'AU # La date de création doit correspondre Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be css=#date_creation 27/11/2020 # Le type de pièce doit correspondre Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be css=#document_numerise_type ... Document numérisé Plat'AU # ajout d'une seconde pièce au dossier # Ajouter le type de document avec le code '91' tel qu'il est dans la payload ${dnt_code_2} = Set Variable 91 &{dnt_values_2} = Create Dictionary ... code=${dnt_code_2} ... libelle=Document numérisé Plat'AU 2 ... document_numerise_type_categorie=Autre Ajouter le type de pièces ${dnt_values_2} Valid Message Should Contain Vos modifications ont bien été enregistrées. # json_payload correspondant à la tâche Ajout pièce, dont on modifie certaines valeurs ${json_payload} = Replace String ${json_payload} ... "date_creation": "2020-11-27" "date_creation": "2020-12-04" ${json_payload} = Replace String ${json_payload} ... "document_numerise_nature_code": "INIT" "document_numerise_nature_code": "COMP" ${json_payload} = Replace String ${json_payload} ... "document_numerise_type_code": "90" "document_numerise_type_code": "91" # Remplace certaines valeurs ${json_payload} = Replace String ${json_payload} PPP-000-10 PPP-000-11 ${piece_payload_dict} = To Json ${json_payload} ${external_uid_piece_2} = Set Variable ${piece_payload_dict["external_uids"]["piece"]} # Ajoute la tâche d'ajout de pièce ${task_values} = Create Dictionary ... type=add_piece ... json_payload=${json_payload} ${task_id} = Ajouter la tâche par WS ${task_values} # ajout manuellement les éléments qui ont du être défini par défaut Set To Dictionary ${task_values} task=${task_id} Set To Dictionary ${task_values} state=new Set To Dictionary ${task_values} stream=input # se rend sur la page de la tâche #Depuis le contexte d'une task à partir de la recherche avancée ${task_values} Depuis le contexte de la task ${task_id} # vérifie qu'elle a bien été ajoutée Vérifier que la tâche a bien été ajoutée ou modifiée ${task_values} ${json_payload_loaded} = Récupérer le contenu du champ json_payload ${task_values} Log Dictionary ${json_payload_loaded['document_numerise']} Dictionary Should Contain Key ${json_payload_loaded['document_numerise']} uid ${uid} = Set Variable ${json_payload_loaded['document_numerise']['uid']} # On enlève le préfixe de l'uid ${uid_without_prefix} = Get Substring ${uid} 5 ${path_1} = Get Substring ${uid} 5 7 ${path_2} = Get Substring ${uid} 5 9 # Vérification dans le filestorage File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix} File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix}.info # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${msg} = Déclencher le traitement des tâches par WS Log ${msg} # Extraction du libellé du DI dans le message ${piece_di_regex} = Catenate ^.*\\[[0-9]+\\] ${task_values["type"]} * ... : pièce : '[^']+' créée sur le dossier d'instruction '([^']+)'.*$ ${piece_di_lib} = Replace String Using Regexp ${msg} ${piece_di_regex} \\1 # Le DI devrait être le même que celui du dossier Should Be Equal ${piece_di_lib} ${dossier_payload_dict["dossier"]["dossier"]} # Depuis la page des pièces du dossier Depuis l'onglet des pièces du dossier d'instruction ${di_lib} # Le nom du fichier doit être présent en tant que pièce Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be ... css=table.document_numerise:nth-child(3) td a.lienDocumentNumerise span[title="Télécharger"] # Suite à l'activation de l'option de renommage des fichiers : option_renommage_document_numerise_tache # Le nom du fichier sera modifié par celui-ci au vu du contenu de la variable ${json_payload} ... 2020120491.pdf # Depuis la pièce Depuis le contexte de la pièce par le dossier d'instruction ${di_lib} ... Document numérisé Plat'AU 2 # La date de création doit correspondre Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be css=#date_creation 04/12/2020 # Le type de pièce doit correspondre Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be css=#document_numerise_type ... Document numérisé Plat'AU 2 # Vérification liste des identifiants externe sur le DI # piece Depuis le contexte du dossier d'instruction ${di_lib} Open Fieldset dossier_instruction plat_au---identifiants-techniques Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Should Contain css=#fieldset-form-dossier_instruction-plat_au---identifiants-techniques ${piece_payload_dict["external_uids"]["dossier"]} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Should Contain css=#fieldset-form-dossier_instruction-plat_au---identifiants-techniques ${dossier_payload_dict["external_uids"]["dossier_consultation"]} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Should Contain css=#fieldset-form-dossier_instruction-plat_au---identifiants-techniques ${external_uid_piece_1} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Should Contain css=#fieldset-form-dossier_instruction-plat_au---identifiants-techniques ${external_uid_piece_2} Reset Params - Vérification de l'ajout de la tâche Ajout pièce par ws, puis traitement # Désactive l'option de renommage des fichiers &{param_option} = Create Dictionary ... libelle=option_renommage_document_numerise_tache ... valeur=false ... om_collectivite=agglo Gerer le paramètre par WS ${param_option} Vérification de l'ajout d'une même pièce sur deux dossiers, le tout ajouté par WS [Documentation] Permet de vérifier que la même pièce peut être ajoutée sur 2 dossiers # activer la saisie complète des numéros &{param_saisie_complete} = Create Dictionary ... libelle=option_dossier_saisie_numero_complet ... valeur=true ... om_collectivite=agglo Gerer le paramètre par WS ${param_saisie_complete} # En tant qu'admin Depuis la page d'accueil admin admin # isole le contexte du test (création d'une collectivité) &{librecom_multi_1_values} = Create Dictionary ... om_collectivite_libelle=LIBRECOM_WS_PIECE_MULTI_1 ... departement=015 ... commune=085 ... insee=15085 ... direction_code=T ... direction_libelle=Direction de LIBRECOM_WS_PIECE_MULTI_1 ... direction_chef=Chef ... division_code=TP ... division_libelle=Division TP ... division_chef=Chef ... guichet_om_utilisateur_nom=Joseph Proudhon ... guichet_om_utilisateur_email=jproudhon@openads-test.fr ... guichet_om_utilisateur_login=jproudhon ... guichet_om_utilisateur_pwd=jproudhon ... instr_om_utilisateur_nom=François Rebalais ... instr_om_utilisateur_email=frebalais@openads-test.fr ... instr_om_utilisateur_login=frebalais ... instr_om_utilisateur_pwd=frebalais ... code_entite=LBCOM_15 ... acteur=LIBRECOM-ACT-015 Isolation d'un contexte ${librecom_multi_1_values} # ajouter le paramètre 'acteur' à la collectivité/au service &{param_entite} = Create Dictionary ... libelle=platau_acteur_service_consulte ... valeur=${librecom_multi_1_values["acteur"]} ... om_collectivite=${librecom_multi_1_values["om_collectivite_libelle"]} Gerer le paramètre par WS ${param_entite} # Active l'option entité pour la collectivité/le service &{param_entite} = Create Dictionary ... libelle=option_om_collectivite_entity ... valeur=true ... om_collectivite=${librecom_multi_1_values["om_collectivite_libelle"]} Gerer le paramètre par WS ${param_entite} # Ajoute le paramètre 'code_entite' à la collectivité/le service &{param_entite} = Create Dictionary ... libelle=code_entite ... valeur=${librecom_multi_1_values["code_entite"]} ... om_collectivite=${librecom_multi_1_values["om_collectivite_libelle"]} Gerer le paramètre par WS ${param_entite} # Ajouter le type de document avec le code '92' tel qu'il est dans la payload ${dnt_code} = Set Variable 92 &{dnt_values} = Create Dictionary ... code=${dnt_code} ... libelle=Document numérisé Plat'AU ... document_numerise_type_categorie=Autre Ajouter le type de pièces ${dnt_values} Valid Message Should Contain Vos modifications ont bien été enregistrées. # Ajout d'un dossier # Récupère le template de payload JSON et le transforme en dictionnaire ${dossier_json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_payload_min.txt # Remplace certaines valeurs ${dossier_json_payload} = Replace String ${dossier_json_payload} EF-DSQ-4512 ${librecom_multi_1_values["acteur"]} ${dossier_json_payload} = Replace String ${dossier_json_payload} 7SZ-SX8-TR4 000-AAA-15 ${dossier_json_payload} = Replace String ${dossier_json_payload} 2SZ-SX8-AZ6 AAA-000-15 ${dossier_json_payload} = Replace String ${dossier_json_payload} 00009 000011P0 ${dossier_json_payload} = Replace String ${dossier_json_payload} 13055 ${librecom_multi_1_values["insee"]} ${dossier_payload_dict} = To Json ${dossier_json_payload} # Ajoute d'une tâche de création de DI ${dossier_task_values} = Create Dictionary ... type=create_DI_for_consultation ... json_payload=${dossier_json_payload} Ajouter la tâche par WS ${dossier_task_values} # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${dossier_msg} = Déclencher le traitement des tâches par WS # Extraction du libellé du DI dans le message ${di_regex} = Catenate ^.*\\[[0-9]+\\] ${dossier_task_values["type"]} ... ${dossier_payload_dict["dossier"]["dossier"]} : ... dossier instruction '([^']+)' .*$ ${di_lib} = Replace String Using Regexp ${dossier_msg} ${di_regex} \\1 ${di_lib_sans_espace} = Sans espace ${di_lib} ${di_to_search} = Replace String ${di_lib_sans_espace} ${librecom_multi_1_values["code_entite"]} ${SPACE}${librecom_multi_1_values["code_entite"]} # En tant qu'instructeur de la collectivité/du service LIBRECOM_WS_PIECE_MULTI_1 Depuis la page d'accueil jproudhon jproudhon # Vérifier que le dossier a bien été ajouté Depuis le contexte du dossier d'instruction par recherche ${di_to_search} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Should Contain css=#dossier_libelle ${di_to_search} # Ajout de la pièce au dossier # En tant qu'admin Depuis la page d'accueil admin admin # On récupère le contenu du fichier json_ajout_piece_with_b64.json qui sera notre # json_payload correspondant à la tâche Ajout pièce ${json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_ajout_piece_with_b64.json # Remplace certaines valeurs ${json_payload} = Replace String ${json_payload} GH-EQ6-5432 ${librecom_multi_1_values["acteur"]} ${json_payload} = Replace String ${json_payload} 7XY-DK8-5X 000-AAA-15 ${json_payload} = Replace String ${json_payload} 1EY-RT8-5X PPP-000-15 ${json_payload} = Replace String ${json_payload} "dossier_consultation": "FE4-JR5-8W", ${EMPTY} ${json_payload} = Replace String ${json_payload} "document_numerise_type_code": "90" "document_numerise_type_code": "92" ${json_payload} = Replace String ${json_payload} "nom_fichier": "2020112790.pdf" "nom_fichier": "2020112792.pdf" ${piece_payload_dict} = To Json ${json_payload} # Ajoute la tâche d'ajout de pièce ${task_values} = Create Dictionary ... type=add_piece ... json_payload=${json_payload} ${task_id} = Ajouter la tâche par WS ${task_values} # ajout manuellement les éléments qui ont du être défini par défaut Set To Dictionary ${task_values} task=${task_id} Set To Dictionary ${task_values} state=new Set To Dictionary ${task_values} stream=input # se rend sur la page de la tâche #Depuis le contexte d'une task à partir de la recherche avancée ${task_values} Depuis le contexte de la task ${task_id} # vérifie qu'elle a bien été ajoutée Vérifier que la tâche a bien été ajoutée ou modifiée ${task_values} ${json_payload_loaded} = Récupérer le contenu du champ json_payload ${task_values} Log Dictionary ${json_payload_loaded['document_numerise']} Dictionary Should Contain Key ${json_payload_loaded['document_numerise']} uid ${uid} = Set Variable ${json_payload_loaded['document_numerise']['uid']} # On enlève le préfixe de l'uid ${uid_without_prefix} = Get Substring ${uid} 5 ${path_1} = Get Substring ${uid} 5 7 ${path_2} = Get Substring ${uid} 5 9 # Vérification dans le filestorage File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix} File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix}.info # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${msg} = Déclencher le traitement des tâches par WS Log ${msg} # Extraction du libellé du DI dans le message ${piece_di_regex} = Catenate ^.*\\[[0-9]+\\] ${task_values["type"]} * ... : pièce : '[^']+' créée sur le dossier d'instruction '([^']+)'.*$ ${piece_di_lib} = Replace String Using Regexp ${msg} ${piece_di_regex} \\1 # Le DI devrait être le même que celui du dossier Should Be Equal ${piece_di_lib} ${di_lib_sans_espace} # Depuis la page des pièces du dossier Depuis l'onglet des pièces du dossier d'instruction ${di_to_search} # Le nom du fichier doit être présent en tant que pièce Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be ... css=${lien_css_telechargement} ... ${piece_payload_dict["document_numerise"]["nom_fichier"]} # Depuis la pièce Depuis le contexte de la pièce par le dossier d'instruction ${di_to_search} ... Document numérisé Plat'AU # La date de création doit correspondre Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be css=#date_creation 27/11/2020 # Le type de pièce doit correspondre Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be css=#document_numerise_type ... Document numérisé Plat'AU # Ajout d'un second dossier (simulant une seconde consultation sur le même dossier) # En tant qu'admin Depuis la page d'accueil admin admin # Ajout d'une seconde entité &{librecom_multi_2_values} = Create Dictionary ... om_collectivite_libelle=LIBRECOM_WS_PIECE_MULTI_2 ... departement=016 ... commune=086 ... insee=16086 ... direction_code=C ... direction_libelle=Direction de LIBRECOM_WS_PIECE_MULTI_2 ... direction_chef=Chef ... division_code=C ... division_libelle=Division C ... division_chef=Chef ... guichet_om_utilisateur_nom=Peter Kropotkin ... guichet_om_utilisateur_email=pkropotkin@openads-test.fr ... guichet_om_utilisateur_login=pkropotkin ... guichet_om_utilisateur_pwd=pkropotkin ... instr_om_utilisateur_nom=Mikhail Bakunin ... instr_om_utilisateur_email=mbakunin@openads-test.fr ... instr_om_utilisateur_login=mbakunin ... instr_om_utilisateur_pwd=mbakunin ... code_entite=LBCOM_16 ... acteur=LIBRECOM-ACT-016 Isolation d'un contexte ${librecom_multi_2_values} # ajouter le paramètre 'acteur' à la collectivité/au service &{param_platau_acteur} = Create Dictionary ... libelle=platau_acteur_service_consulte ... valeur=${librecom_multi_2_values["acteur"]} ... om_collectivite=${librecom_multi_2_values["om_collectivite_libelle"]} Gerer le paramètre par WS ${param_platau_acteur} # Active l'option entité pour la collectivité/le service &{param_om_collectivite_entity} = Create Dictionary ... libelle=option_om_collectivite_entity ... valeur=true ... om_collectivite=${librecom_multi_2_values["om_collectivite_libelle"]} Gerer le paramètre par WS ${param_om_collectivite_entity} # Ajoute le paramètre 'code_entite' à la collectivité/le service &{param_entite} = Create Dictionary ... libelle=code_entite ... valeur=${librecom_multi_2_values["code_entite"]} ... om_collectivite=${librecom_multi_2_values["om_collectivite_libelle"]} Gerer le paramètre par WS ${param_entite} # Ajout d'un dossier # Remplace certaines valeurs, mais conserve le même external_uid pour le dossier ${dossier_json_payload} = Replace String ${dossier_json_payload} ${librecom_multi_1_values["acteur"]} ${librecom_multi_2_values["acteur"]} ${dossier_json_payload} = Replace String ${dossier_json_payload} AAA-000-15 AAA-000-16 ${dossier_payload_dict} = To Json ${dossier_json_payload} # Ajoute d'une tâche de création de DI ${dossier_task_values} = Create Dictionary ... type=create_DI_for_consultation ... json_payload=${dossier_json_payload} Ajouter la tâche par WS ${dossier_task_values} # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${dossier_msg} = Déclencher le traitement des tâches par WS # Extraction du libellé du DI dans le message ${di_regex} = Catenate ^.*\\[[0-9]+\\] ${dossier_task_values["type"]} ... ${dossier_payload_dict["dossier"]["dossier"]} : ... dossier instruction '([^']+)' .*$ ${di_lib} = Replace String Using Regexp ${dossier_msg} ${di_regex} \\1 ${di_lib_sans_espace} = Sans espace ${di_lib} ${di_to_search} = Replace String ${di_lib_sans_espace} ${librecom_multi_2_values["code_entite"]} ${SPACE}${librecom_multi_2_values["code_entite"]} # En tant qu'instructeur de la collectivité/du service LIBRECOM_WS_PIECE_MULTI_2 Depuis la page d'accueil pkropotkin pkropotkin # Vérifier que le dossier a bien été ajouté Depuis le contexte du dossier d'instruction par recherche ${di_to_search} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Should Contain css=#dossier_libelle ${di_to_search} # Ajout de la même pièce au second dossier # En tant qu'admin Depuis la page d'accueil admin admin # On récupère le contenu du fichier json_ajout_piece_with_b64.json qui sera notre # json_payload correspondant à la tâche Ajout pièce ${json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_ajout_piece_with_b64.json # Remplace certaines valeurs, et conserve le même external_uid que la pièce ajoutée au dossier # précédent ${json_payload} = Replace String ${json_payload} GH-EQ6-5432 ${librecom_multi_2_values["acteur"]} ${json_payload} = Replace String ${json_payload} 7XY-DK8-5X 000-AAA-15 ${json_payload} = Replace String ${json_payload} 1EY-RT8-5X PPP-000-15 ${json_payload} = Replace String ${json_payload} "dossier_consultation": "FE4-JR5-8W", ${EMPTY} ${piece_payload_dict} = To Json ${json_payload} # Ajoute la tâche d'ajout de pièce ${task_values} = Create Dictionary ... type=add_piece ... json_payload=${json_payload} ${task_id} = Ajouter la tâche par WS ${task_values} # ajout manuellement les éléments qui ont du être défini par défaut Set To Dictionary ${task_values} task=${task_id} Set To Dictionary ${task_values} state=new Set To Dictionary ${task_values} stream=input # se rend sur la page de la tâche #Depuis le contexte d'une task à partir de la recherche avancée ${task_values} Depuis le contexte de la task ${task_id} # vérifie qu'elle a bien été ajoutée Vérifier que la tâche a bien été ajoutée ou modifiée ${task_values} ${json_payload_loaded} = Récupérer le contenu du champ json_payload ${task_values} Log Dictionary ${json_payload_loaded['document_numerise']} Dictionary Should Contain Key ${json_payload_loaded['document_numerise']} uid ${uid} = Set Variable ${json_payload_loaded['document_numerise']['uid']} # On enlève le préfixe de l'uid ${uid_without_prefix} = Get Substring ${uid} 5 ${path_1} = Get Substring ${uid} 5 7 ${path_2} = Get Substring ${uid} 5 9 # Vérification dans le filestorage File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix} File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix}.info # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${msg} = Déclencher le traitement des tâches par WS Log ${msg} # Extraction du libellé du DI dans le message ${piece_di_regex} = Catenate ^.*\\[[0-9]+\\] ${task_values["type"]} * ... : pièce : '[^']+' créée sur le dossier d'instruction '([^']+)'.*$ ${piece_di_lib} = Replace String Using Regexp ${msg} ${piece_di_regex} \\1 # Le DI devrait être le même que celui du dossier Should Be Equal ${piece_di_lib} ${di_lib_sans_espace} # Depuis la page des pièces du dossier Depuis l'onglet des pièces du dossier d'instruction ${di_to_search} # Le nom du fichier doit être présent en tant que pièce Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be ... css=${lien_css_telechargement} ... ${piece_payload_dict["document_numerise"]["nom_fichier"]} # Depuis la pièce Depuis le contexte de la pièce par le dossier d'instruction ${di_to_search} ... Document numérisé Plat'AU # La date de création doit correspondre Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be css=#date_creation 27/11/2020 # Le type de pièce doit correspondre Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be css=#document_numerise_type ... Document numérisé Plat'AU Reset Params - Vérification de l'ajout d'une même pièce sur deux dossiers, le tout ajouté par WS [Documentation] desactiver la saisie complète des numéros &{param_saisie_complete} = Create Dictionary ... libelle=option_dossier_saisie_numero_complet ... valeur=false ... om_collectivite=agglo Gerer le paramètre par WS ${param_saisie_complete} Vérification de l'ajout d'une même pièce sur deux dossiers pour le même acteur [Documentation] Permet de vérifier que la même pièce peut être ajoutée sur 2 dossiers ... avec le même acteur # activer la saisie complète des numéros &{param_saisie_complete} = Create Dictionary ... libelle=option_dossier_saisie_numero_complet ... valeur=true ... om_collectivite=agglo Gerer le paramètre par WS ${param_saisie_complete} # isole le contexte du test (création d'une collectivité) &{librecom_multi_3_values} = Create Dictionary ... om_collectivite_libelle=LIBRECOM_WS_PIECE_MULTI_3 ... departement=018 ... commune=088 ... insee=18088 ... direction_code=D ... direction_libelle=Direction de LIBRECOM_WS_PIECE_MULTI_3 ... direction_chef=Chef ... division_code=D ... division_libelle=Division D ... division_chef=Chef ... guichet_om_utilisateur_nom=Malcom Ferdinand ... guichet_om_utilisateur_email=mferdinand@openads-test.fr ... guichet_om_utilisateur_login=mferdinand ... guichet_om_utilisateur_pwd=mferdinand ... instr_om_utilisateur_nom=Dominique Bourg ... instr_om_utilisateur_email=dbourg@openads-test.fr ... instr_om_utilisateur_login=dbourg ... instr_om_utilisateur_pwd=dbourg ... code_entite=LBCOM_18 ... acteur=LIBRECOM-ACT-018 Isolation d'un contexte ${librecom_multi_3_values} # ajouter le paramètre 'acteur' à la collectivité/au service &{platau_acteur_service_consulte} = Create Dictionary ... libelle=platau_acteur_service_consulte ... valeur=${librecom_multi_3_values["acteur"]} ... om_collectivite=${librecom_multi_3_values["om_collectivite_libelle"]} Gerer le paramètre par WS ${platau_acteur_service_consulte} # Active l'option entité pour la collectivité/le service &{param_entite} = Create Dictionary ... libelle=option_om_collectivite_entity ... valeur=true ... om_collectivite=${librecom_multi_3_values["om_collectivite_libelle"]} Gerer le paramètre par WS ${param_entite} # Ajoute le paramètre 'code_entite' à la collectivité/le service &{param_code_entite} = Create Dictionary ... libelle=code_entite ... valeur=${librecom_multi_3_values["code_entite"]} ... om_collectivite=${librecom_multi_3_values["om_collectivite_libelle"]} Gerer le paramètre par WS ${param_code_entite} # Ajouter le type de document avec le code '93' tel qu'il est dans la payload ${dnt_code} = Set Variable 93 &{dnt_values} = Create Dictionary ... code=${dnt_code} ... libelle=Document numérisé Plat'AU ... document_numerise_type_categorie=Autre Ajouter le type de pièces ${dnt_values} Valid Message Should Contain Vos modifications ont bien été enregistrées. # Ajout d'un dossier # Récupère le template de payload JSON et le transforme en dictionnaire ${dossier_json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_payload_min.txt # Remplace certaines valeurs ${dossier_json_payload} = Replace String ${dossier_json_payload} EF-DSQ-4512 ${librecom_multi_3_values["acteur"]} ${dossier_json_payload} = Replace String ${dossier_json_payload} 7SZ-SX8-TR4 000-AAA-18 ${dossier_json_payload} = Replace String ${dossier_json_payload} 2SZ-SX8-AZ6 AAA-000-18 ${dossier_json_payload} = Replace String ${dossier_json_payload} 00009 000018P0 ${dossier_json_payload} = Replace String ${dossier_json_payload} 13055 ${librecom_multi_3_values["insee"]} ${dossier_payload_dict} = To Json ${dossier_json_payload} # Ajoute d'une tâche de création de DI ${dossier_task_values} = Create Dictionary ... type=create_DI_for_consultation ... json_payload=${dossier_json_payload} Ajouter la tâche par WS ${dossier_task_values} # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${dossier_msg} = Déclencher le traitement des tâches par WS # Extraction du libellé du DI dans le message ${di_regex_1} = Catenate ^.*\\[[0-9]+\\] ${dossier_task_values["type"]} ... ${dossier_payload_dict["dossier"]["dossier"]} : ... dossier instruction '([^']+)' .*$ ${di_lib_1} = Replace String Using Regexp ${dossier_msg} ${di_regex_1} \\1 ${di_lib_sans_espace_1} = Sans espace ${di_lib_1} ${di_to_search_1} = Replace String ${di_lib_sans_espace_1} ${librecom_multi_3_values["code_entite"]} ${SPACE}${librecom_multi_3_values["code_entite"]} # En tant qu'instructeur de la collectivité/du service LIBRECOM_WS_PIECE_MULTI_3 Depuis la page d'accueil mferdinand mferdinand # Vérifier que le dossier a bien été ajouté Depuis le contexte du dossier d'instruction par recherche ${di_to_search_1} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Should Contain css=#dossier_libelle ${di_to_search_1} # Ajout d'un second dossier (simulant une seconde consultation sur le même dossier) # En tant qu'admin Depuis la page d'accueil admin admin # Remplace certaines valeurs ${dossier_json_payload} = Replace String ${dossier_json_payload} AAA-000-18 BBB-000-18 ${dossier_payload_dict} = To Json ${dossier_json_payload} # Ajoute d'une tâche de création de DI ${dossier_task_values} = Create Dictionary ... type=create_DI_for_consultation ... json_payload=${dossier_json_payload} Ajouter la tâche par WS ${dossier_task_values} # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${dossier_msg} = Déclencher le traitement des tâches par WS # Extraction du libellé du DI dans le message ${di_regex_2} = Catenate ^.*\\[[0-9]+\\] ${dossier_task_values["type"]} ... ${dossier_payload_dict["dossier"]["dossier"]} : ... dossier instruction '([^']+)' .*$ ${di_lib_2} = Replace String Using Regexp ${dossier_msg} ${di_regex_2} \\1 ${di_lib_sans_espace_2} = Sans espace ${di_lib_2} ${di_to_search_2} = Replace String ${di_lib_sans_espace_2} ${librecom_multi_3_values["code_entite"]} ${SPACE}${librecom_multi_3_values["code_entite"]} # En tant qu'instructeur de la collectivité/du service LIBRECOM_WS_PIECE_MULTI_3 Depuis la page d'accueil mferdinand mferdinand # Vérifier que le dossier a bien été ajouté Depuis le contexte du dossier d'instruction par recherche ${di_to_search_2} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Should Contain css=#dossier_libelle ${di_to_search_2} # Ajout de la pièce au 1er dossier # En tant qu'admin Depuis la page d'accueil admin admin # On récupère le contenu du fichier json_ajout_piece_with_b64.json qui sera notre # json_payload correspondant à la tâche Ajout pièce ${json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_ajout_piece_with_b64.json # Remplace certaines valeurs ${json_payload} = Replace String ${json_payload} GH-EQ6-5432 ${librecom_multi_3_values["acteur"]} ${json_payload} = Replace String ${json_payload} 7XY-DK8-5X 000-AAA-18 ${json_payload} = Replace String ${json_payload} 1EY-RT8-5X PPP-000-18 ${json_payload} = Replace String ${json_payload} FE4-JR5-8W AAA-000-18 ${json_payload} = Replace String ${json_payload} "document_numerise_type_code": "90" "document_numerise_type_code": "93" ${json_payload} = Replace String ${json_payload} "nom_fichier": "2020112790.pdf" "nom_fichier": "2020112793.pdf" ${piece_payload_dict} = To Json ${json_payload} # Ajoute la tâche d'ajout de pièce ${task_values} = Create Dictionary ... type=add_piece ... json_payload=${json_payload} ${task_id} = Ajouter la tâche par WS ${task_values} # ajout manuellement les éléments qui ont du être défini par défaut Set To Dictionary ${task_values} task=${task_id} Set To Dictionary ${task_values} state=new Set To Dictionary ${task_values} stream=input # se rend sur la page de la tâche #Depuis le contexte d'une task à partir de la recherche avancée ${task_values} Depuis le contexte de la task ${task_id} # vérifie qu'elle a bien été ajoutée Vérifier que la tâche a bien été ajoutée ou modifiée ${task_values} ${json_payload_loaded} = Récupérer le contenu du champ json_payload ${task_values} Log Dictionary ${json_payload_loaded['document_numerise']} Dictionary Should Contain Key ${json_payload_loaded['document_numerise']} uid ${uid} = Set Variable ${json_payload_loaded['document_numerise']['uid']} # On enlève le préfixe de l'uid ${uid_without_prefix} = Get Substring ${uid} 5 ${path_1} = Get Substring ${uid} 5 7 ${path_2} = Get Substring ${uid} 5 9 # Vérification dans le filestorage File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix} File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix}.info # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${msg} = Déclencher le traitement des tâches par WS Log ${msg} # Extraction du libellé du DI dans le message ${piece_di_regex_1} = Catenate ^.*\\[[0-9]+\\] ${task_values["type"]} * ... : pièce : '[^']+' créée sur le dossier d'instruction '([^']+)'.*$ ${piece_di_lib_1} = Replace String Using Regexp ${msg} ${piece_di_regex_1} \\1 # Le DI devrait être le même que celui du dossier Should Be Equal ${piece_di_lib_1} ${di_lib_sans_espace_1} # Depuis la page des pièces du dossier Depuis l'onglet des pièces du dossier d'instruction ${di_to_search_1} # Le nom du fichier doit être présent en tant que pièce Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be ... css=${lien_css_telechargement} ... ${piece_payload_dict["document_numerise"]["nom_fichier"]} # Depuis la pièce Depuis le contexte de la pièce par le dossier d'instruction ${di_to_search_1} ... Document numérisé Plat'AU # La date de création doit correspondre Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be css=#date_creation 27/11/2020 # Le type de pièce doit correspondre Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be css=#document_numerise_type ... Document numérisé Plat'AU # Ajout de la même pièce au second dossier # En tant qu'admin Depuis la page d'accueil admin admin # modifie l'ID de la consultation ${json_payload} = Replace String ${json_payload} AAA-000-18 BBB-000-18 ${piece_payload_dict} = To Json ${json_payload} # Ajoute la tâche d'ajout de pièce ${task_values} = Create Dictionary ... type=add_piece ... json_payload=${json_payload} ${task_id} = Ajouter la tâche par WS ${task_values} # ajout manuellement les éléments qui ont du être défini par défaut Set To Dictionary ${task_values} task=${task_id} Set To Dictionary ${task_values} state=new Set To Dictionary ${task_values} stream=input # se rend sur la page de la tâche #Depuis le contexte d'une task à partir de la recherche avancée ${task_values} Depuis le contexte de la task ${task_id} # vérifie qu'elle a bien été ajoutée Vérifier que la tâche a bien été ajoutée ou modifiée ${task_values} ${json_payload_loaded} = Récupérer le contenu du champ json_payload ${task_values} Log Dictionary ${json_payload_loaded['document_numerise']} Dictionary Should Contain Key ${json_payload_loaded['document_numerise']} uid ${uid} = Set Variable ${json_payload_loaded['document_numerise']['uid']} # On enlève le préfixe de l'uid ${uid_without_prefix} = Get Substring ${uid} 5 ${path_1} = Get Substring ${uid} 5 7 ${path_2} = Get Substring ${uid} 5 9 # Vérification dans le filestorage File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix} File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix}.info # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${msg} = Déclencher le traitement des tâches par WS Log ${msg} # Extraction du libellé du DI dans le message ${piece_di_regex_2} = Catenate ^.*\\[[0-9]+\\] ${task_values["type"]} * ... : pièce : '[^']+' créée sur le dossier d'instruction '([^']+)'.*$ ${piece_di_lib_2} = Replace String Using Regexp ${msg} ${piece_di_regex_2} \\1 # Le DI devrait être le même que celui du dossier Should Be Equal ${piece_di_lib_2} ${di_lib_sans_espace_2} # Depuis la page des pièces du dossier Depuis l'onglet des pièces du dossier d'instruction ${di_to_search_2} # Le nom du fichier doit être présent en tant que pièce Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be ... css=${lien_css_telechargement} ... ${piece_payload_dict["document_numerise"]["nom_fichier"]} # Depuis la pièce Depuis le contexte de la pièce par le dossier d'instruction ${di_to_search_2} ... Document numérisé Plat'AU # La date de création doit correspondre Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be css=#date_creation 27/11/2020 # Le type de pièce doit correspondre Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be css=#document_numerise_type ... Document numérisé Plat'AU Reset Params - Vérification de l'ajout d'une même pièce sur deux dossiers pour le même acteur [Documentation] Desactiver la saisie complète des numéros &{param_saisie_complete} = Create Dictionary ... libelle=option_dossier_saisie_numero_complet ... valeur=false ... om_collectivite=agglo Gerer le paramètre par WS ${param_saisie_complete} Vérification de l'ajout de la tâche Ajout pièce par IHM web, puis traitement [Documentation] Permet de vérifier que l'ajout d'une pièce via l'IHM fonctionne # isole le contexte du test (création d'une collectivité) &{librecom_values} = Create Dictionary ... om_collectivite_libelle=LIBRECOM_IHM_PIECE ... departement=017 ... commune=097 ... insee=17097 ... direction_code=Q ... direction_libelle=Direction de LIBRECOM_IHM_PIECE ... direction_chef=Chef ... division_code=Q ... division_libelle=Division Q ... division_chef=Chef ... guichet_om_utilisateur_nom=Emmanuel Kant ... guichet_om_utilisateur_email=ekant@openads-test.fr ... guichet_om_utilisateur_login=ekant ... guichet_om_utilisateur_pwd=ekant ... instr_om_utilisateur_nom=Bertrand Russell ... instr_om_utilisateur_email=brussell@openads-test.fr ... instr_om_utilisateur_login=brussell ... instr_om_utilisateur_pwd=brussell ... code_entite=LBCOM_17 ... acteur=LIBRECOM-ACT-017 Isolation d'un contexte ${librecom_values} # ajouter le paramètre 'acteur' à la collectivité/au service &{platau_acteur_service_consulte} = Create Dictionary ... libelle=platau_acteur_service_consulte ... valeur=${librecom_values["acteur"]} ... om_collectivite=${librecom_values["om_collectivite_libelle"]} Gerer le paramètre par WS ${platau_acteur_service_consulte} # En tant qu'admin Depuis la page d'accueil admin admin # Ajouter le type de document avec le code '94' tel qu'il est dans la payload ${dnt_code} = Set Variable 94 &{dnt_values} = Create Dictionary ... code=${dnt_code} ... libelle=Document numérisé Plat'AU ... document_numerise_type_categorie=Autre Ajouter le type de pièces ${dnt_values} Valid Message Should Contain Vos modifications ont bien été enregistrées. # Récupère l'identifiant de la collectivité LIBRECOM_WS Depuis le contexte de la collectivité ${librecom_values["om_collectivite_libelle"]} ${librecom_ws_id} = Get Text css=#om_collectivite # Récupère le template de payload JSON et le transforme en dictionnaire ${dossier_json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_payload_min.txt # Remplace certaines valeurs ${dossier_json_payload} = Replace String ${dossier_json_payload} EF-DSQ-4512 ${librecom_values["acteur"]} ${dossier_json_payload} = Replace String ${dossier_json_payload} 7SZ-SX8-TR4 000-AAA-17 ${dossier_json_payload} = Replace String ${dossier_json_payload} 2SZ-SX8-AZ6 AAA-000-17 ${dossier_json_payload} = Replace String ${dossier_json_payload} 00009 00001P0 ${dossier_json_payload} = Replace String ${dossier_json_payload} 13055 ${librecom_values["insee"]} ${dossier_payload_dict} = To Json ${dossier_json_payload} # Ajoute d'une tâche de création de DI ${dossier_task_values} = Create Dictionary ... type=create_DI_for_consultation ... json_payload=${dossier_json_payload} Ajouter la tâche par WS ${dossier_task_values} # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${dossier_msg} = Déclencher le traitement des tâches par WS # Extraction du libellé du DI dans le message ${di_regex} = Catenate ^.*\\[[0-9]+\\] ${dossier_task_values["type"]} ... ${dossier_payload_dict["dossier"]["dossier"]} : ... dossier instruction '([^']+)' .*$ ${di_lib} = Replace String Using Regexp ${dossier_msg} ${di_regex} \\1 # En tant qu'instructeur de la collectivité/du service LIBRECOM_IHM_PIECE Depuis la page d'accueil ekant ekant # Vérifier que le dossier a bien été ajouté Depuis le contexte du dossier d'instruction ${di_lib} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Should Contain css=#dossier_libelle ${di_lib} # En tant qu'admin Depuis la page d'accueil admin admin # On récupère le contenu du fichier json_ajout_piece_with_b64.json qui sera notre # json_payload correspondant à la tâche Ajout pièce ${json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_ajout_piece_with_b64.json # Remplace certaines valeurs ${json_payload} = Replace String ${json_payload} GH-EQ6-5432 ${librecom_values["acteur"]} ${json_payload} = Replace String ${json_payload} 7XY-DK8-5X 000-AAA-17 ${json_payload} = Replace String ${json_payload} 1EY-RT8-5X PPP-000-17 ${json_payload} = Replace String ${json_payload} "dossier_consultation": "FE4-JR5-8W", ${EMPTY} ${json_payload} = Replace String ${json_payload} "document_numerise_type_code": "90" "document_numerise_type_code": "94" ${json_payload} = Replace String ${json_payload} "nom_fichier": "2020112790.pdf" "nom_fichier": "2020112794.pdf" ${piece_payload_dict} = To Json ${json_payload} # Ajoute la tâche via l'IHM ${task_data_type} = Create List ${NONE} add_piece ${task_data_payload} = Create List ${NONE} ${json_payload} &{task_data} = Create Dictionary ... type=${task_data_type} ... json_payload=${task_data_payload} ${COOKIE} = Get Cookie ${SESSION_COOKIE} ${cookies} = Create Dictionary ${SESSION_COOKIE}=${COOKIE.value} ${session} = Set Variable ${PROJECT_NAME}_web_ihm Create Session ${session} ${PROJECT_URL} cookies=${cookies} ${response} = Post Request ${session} /app/index.php?module=form&obj=task&action=996 files=${task_data} # get the task ID by parsing the response ${data} = Decode Bytes To String ${response.content} UTF-8 ${task_id_msg_matches} = Get Regexp Matches ${data} Tâche ([0-9]+) ajoutée avec succès 1 Length Should Be ${task_id_msg_matches} 1 ${task_id} = Get From List ${task_id_msg_matches} 0 # créé le dictionnaire qui va permettre de vérifier les infos de la tâche ${task_values} = Create Dictionary ... type=add_piece ... json_payload=${json_payload} ... task=${task_id} ... state=new ... stream=input # se rend sur la page de la tâche #Depuis le contexte d'une task à partir de la recherche avancée ${task_values} Depuis le contexte de la task ${task_id} # vérifie qu'elle a bien été ajoutée Vérifier que la tâche a bien été ajoutée ou modifiée ${task_values} ${json_payload_loaded} = Récupérer le contenu du champ json_payload ${task_values} Log Dictionary ${json_payload_loaded['document_numerise']} Dictionary Should Contain Key ${json_payload_loaded['document_numerise']} uid ${uid} = Set Variable ${json_payload_loaded['document_numerise']['uid']} # On enlève le préfixe de l'uid ${uid_without_prefix} = Get Substring ${uid} 5 ${path_1} = Get Substring ${uid} 5 7 ${path_2} = Get Substring ${uid} 5 9 # Vérification dans le filestorage File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix} File Should Exist ..${/}var${/}${alternate_filestorage}${/}${path_1}${/}${path_2}${/}${uid_without_prefix}.info # Lancer le traitement des tâches (entrantes avec statut 'à traiter', par défaut) ${msg} = Déclencher le traitement des tâches par WS Log ${msg} # Extraction du libellé du DI dans le message ${piece_di_regex} = Catenate ^.*\\[[0-9]+\\] ${task_values["type"]} * ... : pièce : '[^']+' créée sur le dossier d'instruction '([^']+)'.*$ ${piece_di_lib} = Replace String Using Regexp ${msg} ${piece_di_regex} \\1 # Le DI devrait être le même que celui du dossier Should Be Equal ${piece_di_lib} ${dossier_payload_dict["dossier"]["dossier"]} # Depuis la page des pièces du dossier Depuis l'onglet des pièces du dossier d'instruction ${di_lib} # Le nom du fichier doit être présent en tant que pièce Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be ... css=${lien_css_telechargement} ... ${piece_payload_dict["document_numerise"]["nom_fichier"]} # Depuis la pièce Depuis le contexte de la pièce par le dossier d'instruction ${di_lib} ... Document numérisé Plat'AU # La date de création doit correspondre Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be css=#date_creation 27/11/2020 # Le type de pièce doit correspondre Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Element Text Should Be css=#document_numerise_type ... Document numérisé Plat'AU TNR Non création de tache Ajout pièce pour les pièces de catégorie différentes de Plat'AU [Documentation] Vérifie que lors de l'ajout d'une pièce de catégorie différente de ... Plat'AU, aucune tâche Ajout pièce n'est crée. # On crée une nouvelle demande pour le TNR &{args_petitionnaire} = Create Dictionary ... particulier_nom=Riel ... particulier_prenom=Sébastien ... om_collectivite=MARSEILLE &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... om_collectivite=MARSEILLE ${di} = Ajouter la demande par WS ${args_demande} ${args_petitionnaire} # On ajoute une pièce et on vérifie qu'aucune tâche n'a été créée &{document_numerise_values} = Create Dictionary ... uid_upload=testImportManuel.pdf ... document_numerise_type=vues et coupes du projet dans le profil du terrain naturel Ajouter une pièce depuis le dossier d'instruction ${di} ${document_numerise_values} ${di_sans_espace} = Sans espace ${di} ${di_da} = Replace String Using Regexp ${di_sans_espace} [A-Z][0-9]+$ ${EMPTY} Depuis le menu Moniteur Plat'AU Wait Until Element Is Visible css=div#adv-search-adv-fields input#dossier Wait Until Element Is Visible css=div#adv-search-adv-fields select#type Input Text css=#dossier ${di_da} Select From List By Label css=#type Ajout pièce (sortant) # Select From List By Label css=#state à traiter Click On Search Button Element Should Contain css=table.tab-tab Aucun enregistrement. Désactivation de la configuration du filestorage alternatif # On remet la configuration du filestorage par défaut Move File ..${/}dyn${/}filestorage.inc.php.bak ..${/}dyn${/}filestorage.inc.php Rendre les types de dossier d'autorisation détaillés utilisés non transmissible à Plat'AU [Documentation] Il est nécessaire de faire cette manipulation pour revenir à un état normal Depuis la page d'accueil admin admin &{args_type_DA_detaille_modification} = Create Dictionary ... dossier_platau=false Modifier type de dossier d'autorisation détaillé PCI ${args_type_DA_detaille_modification} Modifier type de dossier d'autorisation détaillé DP ${args_type_DA_detaille_modification} Desactivation des options générales [Documentation] Il est nécessaire de faire : ... l'activation de 'option_notification_piece_numerisee' pour éviter le fail : ... FAIL: Element with locator 'dossier_message_id' not found. ... l'activation de l'option 'option_afficher_division' pour éviter le fail ... liée a l'affichage de la vision ex : '"Juriste" == "Juriste (H)"' should be true. &{om_param} = Create Dictionary ... libelle=option_notification_piece_numerisee ... valeur=false ... om_collectivite=agglo Gerer le paramètre par WS ${om_param} &{param_division} = Create Dictionary ... libelle=option_afficher_division ... valeur=false ... om_collectivite=agglo Gerer le paramètre par WS ${param_division} # supprimer les paramètres de type de demande &{platau_type_demande_initial} = Create Dictionary ... libelle=platau_type_demande_initial_DP ... delete=true ... om_collectivite=agglo Gerer le paramètre par WS ${platau_type_demande_initial}