*** Settings *** Resource resources/resources.robot Suite Setup For Suite Setup Suite Teardown For Suite Teardown Documentation TestSuite "Formulaires_upload"... *** Keywords *** Depuis le formulaire d'ajout d'un logo [Documentation] Accède directement via l'URL au formulaire d'ajout d'un enregistrement de type 'logo' (om_logo). Go To ${PROJECT_URL}${OM_ROUTE_FORM}&obj=om_logo&action=0 La page ne doit pas contenir d'erreur Positionner la configuration instance de la taille maximale de fichier (en octets) à [Arguments] ${config_inc_php__upload_taille_max__in_bytes}='None' ${dir_exists}= Run Keyword And Return Status Directory Should Exist ../dyn Run Keyword Unless ${dir_exists} Create Directory ../dyn Create File ../dyn/config.inc.php > ../dyn/config.inc.php # J'ai besoin d'un sleep 2 en local car il semble y avoir un temps de latence entre l'écriture par robotframework et la lecture par apache sleep 2 *** Test Cases *** Constitution du jeu de données [Documentation] Initialise l’environnement pour le TestSuite : ... - Sauvegarde du fichier `config.inc.php` s’il existe. ... - Extraction de la directive `upload_max_filesize` du `php.ini`. ... - Conversion de la valeur en octets pour utilisation. # Sauvegarde du fichier de configuration dyn/config.inc.php afin de pouvoir # le repositionner dans son état initial à la fin du TestSuite ${exists} = Run Keyword And Return Status File Should Exist ../dyn/config.inc.php Run Keyword If ${exists} Move File ../dyn/config.inc.php ../dyn/config.inc.php.bak Run Keyword If ${exists} Log Fichier sauvegardé sous ../dyn/config.inc.php.bak Run Keyword Unless ${exists} Log Aucun fichier existant à sauvegarder # Récupération de la valeur brute de la directive upload_max_filesize du # php.ini et mise à disposition de la variable pour tout le TestSuite Copy File binary_files/get_ini.php ../app/get_max_upload_size.php Go to ${project_url}/app/get_max_upload_size.php ${php_ini__upload_max_filesize__raw_value} = Get Text //body ${php_ini__upload_max_filesize__raw_value} = Strip String ${php_ini__upload_max_filesize__raw_value} Remove File ../app/get_max_upload_size.php Set Suite Variable ${php_ini__upload_max_filesize__raw_value} # Conversion de la valeur brute de la directive upload_max_filesize du # php.ini en octets et mise à disposition de la variable pour tout le # TestSuite ${php_ini__upload_max_filesize__in_bytes} = Evaluate int('${php_ini__upload_max_filesize__raw_value}'[:-1]) * {'K': 1024, 'M': 1048576, 'G': 1073741824}['${php_ini__upload_max_filesize__raw_value}'[-1].upper()] Set Suite Variable ${php_ini__upload_max_filesize__in_bytes} Cas d'utilisation n°0 : le fichier possède une taille correcte par rapport à la directive upload_max_filesize de la configuration php.ini (pas de configuration ni instance ni formulaire) [Documentation] Vérifie qu’un fichier de taille inférieure à la limite `php.ini` peut être téléversé avec succès, ... sans aucune limitation configurée côté application. Positionner la configuration instance de la taille maximale de fichier (en octets) à None # Création d'un fichier avec une taille correspond à la moitié de la limite (donc inférieure) ${taille_fichier_inférieure_limite} = Evaluate int(${php_ini__upload_max_filesize__in_bytes} * 0.5) Créer un fichier binary_files/testUploadFile_case1.pdf ${taille_fichier_inférieure_limite} Depuis la page d'accueil admin admin Depuis le formulaire d'ajout d'un logo Add File fichier testUploadFile_case1.pdf Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Form Value Should Be css=#form-content .form-content input#fichier_upload testUploadFile_case1.pdf Cas d'utilisation n°1 : le fichier possède une taille supérieure à la directive upload_max_filesize de la configuration php.ini [Documentation] On crée un fichier avec une taille supérieure a la limite set dans le php.ini, ... la configuration de l'app reste inchangée ${taille_fichier_superieure_limite} = Evaluate int(${php_ini__upload_max_filesize__in_bytes} * 1.5) Créer un fichier binary_files/testUploadFile_case1.pdf ${taille_fichier_superieure_limite} Depuis la page d'accueil admin admin Depuis le formulaire d'ajout d'un logo Add File and Expect Error Message Contain ... fichier ... testUploadFile_case1.pdf ... Le fichier téléversé testUploadFile_case1.pdf dépasse la taille maximale autorisée par le serveur : # ${php_ini__upload_max_filesize__raw_value}o Cas d'utilisation n°2 : le fichier possède une taille supérieure à la directive upload_max_filesize de la configuration php.ini et à la configuration instance. (La config de l'app est plus petite que la config du php.ini) [Documentation] le fichier possède une taille supérieure à la directive upload_max_filesize de la ... configuration php.ini et à la configuration instance. ... Avec la spécificité que la config de l'app est plus petite que la config du php.ini ${config_inc_php__upload_taille_max} = Evaluate int(${php_ini__upload_max_filesize__in_bytes} * 0.8) Positionner la configuration instance de la taille maximale de fichier (en octets) à ${config_inc_php__upload_taille_max} ${taille_fichier_superieure_limite} = Evaluate int(${php_ini__upload_max_filesize__in_bytes} * 1.5) Créer un fichier binary_files/testUploadFile_case2.pdf ${taille_fichier_superieure_limite} Depuis la page d'accueil admin admin Depuis le formulaire d'ajout d'un logo Add File and Expect Error Message Contain ... fichier ... testUploadFile_case2.pdf ... Le fichier téléversé testUploadFile_case2.pdf dépasse la taille maximale autorisée par l'application : # ${config_inc_php__upload_taille_max}Mo Cas d'utilisation n°3 : le fichier possède une taille supérieure à la directive upload_max_filesize de la configuration php.ini et à la configuration instance. (La config du php.ini est plus petite que la config de l'app) [Documentation] le fichier possède une taille supérieure à la directive upload_max_filesize ... de la configuration php.ini et à la configuration instance. ... Avec la spécificité que la config de l'app est cette fois plus grande que la config du php.ini ${config_inc_php__upload_taille_max} = Evaluate int(${php_ini__upload_max_filesize__in_bytes} * 1.5) Positionner la configuration instance de la taille maximale de fichier (en octets) à ${config_inc_php__upload_taille_max} ${taille_fichier_superieure_limite} = Evaluate int(${php_ini__upload_max_filesize__in_bytes} * 1.8) Créer un fichier binary_files/testUploadFile_case3.pdf ${taille_fichier_superieure_limite} Depuis la page d'accueil admin admin Depuis le formulaire d'ajout d'un logo Add File and Expect Error Message Contain ... fichier ... testUploadFile_case3.pdf ... Le fichier téléversé testUploadFile_case3.pdf dépasse la taille maximale autorisée par le serveur : # ${php_ini__upload_max_filesize__raw_value}o Cas d'utilisation n°4 : le fichier possède une taille supérieure à la configuration instance et inférieure à la directive upload_max_filesize de la configuration php.ini [Documentation] On test le cas ou la taille du fichier dépasse la configuration de l'application mais pas la valeur du php.ini qui reste plus grande ... On déduit une nouvelle valeur pour config.inc.php et la nouvelle taille du fichier de test dynamiquement avec la valeur actuelle du php.ini ... Attention ce test donne un mauvais résultat si la limite dans le php.ini est ≃ ou plus petite que 1M (La valeur minimale à set dans la config) ${config_inc_php__upload_taille_max} = Evaluate int(${php_ini__upload_max_filesize__in_bytes} * 0.4) Positionner la configuration instance de la taille maximale de fichier (en octets) à ${config_inc_php__upload_taille_max} ${taille_fichier_inferieure_limite} = Evaluate int(${php_ini__upload_max_filesize__in_bytes} * 0.6) Créer un fichier binary_files/testUploadFile_case4.pdf ${taille_fichier_inferieure_limite} Depuis la page d'accueil admin admin Depuis le formulaire d'ajout d'un logo Add File and Expect Error Message Contain ... fichier ... testUploadFile_case4.pdf ... Le fichier téléversé testUploadFile_case4.pdf dépasse la taille maximale autorisée par l'application : # ${config_inc_php__upload_taille_max}Mo Cas d'utilisation n°5 : le fichier possède une taille supérieure à la directive upload_max_filesize de la configuration php.ini et inférieure à la configuration instance. [Documentation] on test le cas ou la taille du fichier dépasse la valeur de la directive upload_max_filesize du php.ini ... et ou la taille max dans la configuration de l'application à aussi été changée pour être suppérieure à la valeur du php.ini ${config_inc_php__upload_taille_max} = Evaluate int(${php_ini__upload_max_filesize__in_bytes} * 1.8) Positionner la configuration instance de la taille maximale de fichier (en octets) à ${config_inc_php__upload_taille_max} ${taille_fichier_superieure_limite} = Evaluate int(${php_ini__upload_max_filesize__in_bytes} * 1.4) Créer un fichier binary_files/testUploadFile_case5.pdf ${taille_fichier_superieure_limite} Depuis la page d'accueil admin admin Depuis le formulaire d'ajout d'un logo Add File and Expect Error Message Contain ... fichier ... testUploadFile_case5.pdf ... Le fichier téléversé testUploadFile_case5.pdf dépasse la taille maximale autorisée par le serveur : # ${php_ini__upload_max_filesize__raw_value}o Déconstitution du jeu de données [Documentation] Restaure l’environnement après le TestSuite : ... - Restaure l'état initial de `config.inc.php`. ${exists} = Run Keyword And Return Status File Should Exist ../dyn/config.inc.php.bak Run Keyword If ${exists} Move File ../dyn/config.inc.php.bak ../dyn/config.inc.php ... ELSE Remove File ../dyn/config.inc.php