
    j                        d Z ddlZddlZddlZddlZddlmZ ddlZddlmZ	 d Z
d Z G d dej                        Z G d	 d
e      Z G d de      Z G d de      Z G d de      Zedk(  r ej&                          yy)zPruebas de integracion del blueprint Flask estequiometria_cdt.

Cubren: contrato de API, incidentes con descuento, guardado de 1 fila por estudiante,
bloqueo de reenvios (409) y saneamiento/seguridad de entradas.
    N)Flask)bpc                  X    dddddddddd	d
ddddddd
ddddddddddd
dddddddiS )N
respuestasBACD)01234z1,3,2z4,3,2z1,5,3,4z2,2,2,1z1,2,1,1z1,1,1z2,7,4,6z	2,13,8,10)
r   r   r   r   r   56789r   117324r   z10.8z34.6z0.5z302.2z7.45)z4.1.54.1.6z4.1.7ACT r       P   /home/adonis/Público/Cursos/Quimica/estequiometria/test_estequiometria_api.pyrespuestas_perfectasr      sk    Ss3G7W7[ sU&u7 3SsE
 r   c                     t         j                  j                  |       sg S t        | dd      5 }t	        t        j                  |            cd d d        S # 1 sw Y   y xY w)N z	utf-8-sig)newlineencoding)ospathexistsopenlistcsvreader)rutafs     r   leer_csvr*   $   sJ    77>>$		dB	5 #CJJqM"# # #s   AA!c                       e Zd Zd Zd Zd Zy)BaseTestc                    t        j                         | _        t        j                  | _        t        j                  | _        t        j                  j                  | j                  j                  d      | _        t        j                  j                  | j                  j                  d      | _        | j                  t        _        | j                  t        _        t        j                  j                          t!        t"              }|j%                  t&               d|j(                  d<   |j+                         | _        y )Nzestequiometria_resultados.csvzestequiometria_incidencias.csvTTESTING)tempfileTemporaryDirectorytmpestequiometria_cdtCSV_RESULTADOSorig_resCSV_INCIDENCIASorig_incr!   r"   joinnameres_pathinc_path	_sesionesclearr   __name__register_blueprintestequiometria_bpconfigtest_clientclient)selfapps     r   setUpzBaseTest.setUp-   s    ..0+::+;;TXX]]4TUTXX]]4UV-1]]*.2mm+%%++-Ho12 $

9oo'r   c                     | j                   t        _        | j                  t        _        t        j
                  j                          | j                  j                          y )N)	r4   r2   r3   r6   r5   r;   r<   r1   cleanup)rC   s    r   tearDownzBaseTest.tearDown<   s>    -1]]*.2mm+%%++-r   c                 j    dddd}|j                  |       | j                  j                  d|      S )NPerezLuisMecanica)	apellidosnombrescarrera/iniciar-estequiometriajson)updaterB   post)rC   extradatoss      r   _iniciarzBaseTest._iniciarB   s8    %&&(U{{ :GGr   N)r=   
__module____qualname__rE   rH   rW   r   r   r   r,   r,   +   s    (Hr   r,   c                       e Zd Zd Zd Zy)TestRutasBasicasc                 r    | j                   j                  d      }| j                  |j                  d       y )N/estequiometria   )rB   getassertEqualstatus_coderC   rs     r   test_pagina_200z TestRutasBasicas.test_pagina_200K   s)    KKOO./,r   c                 ~    | j                   j                  d      j                  d      }| j                  d|       y )Nr]   T)as_textCLAVE)rB   r_   get_dataassertNotIn)rC   	contenidos     r   test_pagina_no_expone_clavez,TestRutasBasicas.test_pagina_no_expone_claveO   s4    KKOO$67XdX# 	),r   N)r=   rX   rY   rd   rk   r   r   r   r[   r[   I   s    --r   r[   c                       e Zd Zd Zd Zd Zy)TestIniciarc                 &   | j                         }| j                  |j                  d       |j                         d   }| j	                  |t
               | j                  t        |      d       | j                  t        d |D                     y )Nr^   token    c              3   $   K   | ]  }|d v  
 yw)0123456789abcdefNr   ).0cs     r   	<genexpr>z:TestIniciar.test_iniciar_ok_token_32hex.<locals>.<genexpr>]   s     CA!33Cs   )	rW   r`   ra   get_jsonassertIsInstancestrlen
assertTrueall)rC   rc   ro   s      r   test_iniciar_ok_token_32hexz'TestIniciar.test_iniciar_ok_token_32hexW   sl    MMO,

W%eS)UR(CUCCDr   c                 `    | j                  d      }| j                  |j                  d       y )NMedicina)rO     rW   r`   ra   rb   s     r   %test_iniciar_carrera_no_permitida_400z1TestIniciar.test_iniciar_carrera_no_permitida_400_   s&    MM*M-,r   c                 `    | j                  d      }| j                  |j                  d       y )Nr   )rN   r   r   rb   s     r   test_iniciar_falta_nombres_400z*TestIniciar.test_iniciar_falta_nombres_400c   s&    MM"M%,r   N)r=   rX   rY   r|   r   r   r   r   r   rm   rm   U   s    E--r   rm   c                   $    e Zd Zd Zd Zd Zd Zy)TestIncidentec                    | j                         j                         d   }| j                  j                  d|dd      }| j	                  |j
                  d       | j	                  |j                         d   d       y )	Nro   /incidente-estequiometriapegarro   tiporQ   r^   	descuento   rW   rv   rB   rT   r`   ra   rC   ro   rc   s      r   test_incidente_valido_descuentaz-TestIncidente.test_incidente_valido_descuentaj   so    ((*73KK9,17"C  E,k2A6r   c                    | j                         j                         d   }| j                  j                  d|dd      }| j	                  |j
                  d       | j	                  t        | j                        g        y )Nro   r   zrm -rf /r   rQ   r   )rW   rv   rB   rT   r`   ra   r*   r:   r   s      r    test_incidente_tipo_invalido_400z.TestIncidente.test_incidente_tipo_invalido_400q   sm    ((*73KK9,1:"F  H,$--0"5r   c                 |    | j                   j                  dddd      }| j                  |j                  d       y )Nr    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   r   rQ   r   rB   rT   r`   ra   rb   s     r   $test_incidente_token_desconocido_400z2TestIncidente.test_incidente_token_desconocido_400x   s;    KK9,4g"F  H,r   c                    | j                         j                         d   }t        d      D ]"  }| j                  j	                  d|dd       $ t        | j                        }| j                  t        |      d       y )Nro      r   copiarr   rQ      )	rW   rv   rangerB   rT   r*   r:   r`   ry   )rC   ro   _filass       r   test_incidentes_se_acumulanz)TestIncidente.test_incidentes_se_acumulan}   sw    ((*73q 	FAKK9,18"D  F	F 'UQ'r   N)r=   rX   rY   r   r   r   r   r   r   r   r   r   h   s    76-
(r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestGuardarc                    | j                         j                         d   }| j                  j                  dd|it	                     }| j                  |j                  d       |j                         d   }| j                  |d   d       t        | j                        }| j                  t        |      d       y )	Nro   /guardar-estequiometriarQ   r^   	resultado
nota_finald      )
rW   rv   rB   rT   r   r`   ra   r*   r9   ry   )rC   ro   rc   r   r   s        r   test_guardar_perfecto_nota_100z*TestGuardar.test_guardar_perfecto_nota_100   s    ((*73KK7#*E"L5I5K"L  N,JJL-	<0#6'UQ'r   c                 (   | j                         j                         d   }| j                  j                  d|dd       | j                  j                  dd|it	                     }|j                         d   }| j                  |d   d	       y )
Nro   r   r   r   rQ   r   r   r   _   )rW   rv   rB   rT   r   r`   )rC   ro   rc   r   s       r   %test_guardar_con_incidentes_descuentaz1TestGuardar.test_guardar_con_incidentes_descuenta   s    ((*735(-w? 	 	AKK7#*E"L5I5K"L  NJJL-	<0"5r   c                    | j                         j                         d   }d|it               }| j                  | j                  j                  d|      j                  d       | j                  j                  d|      }| j                  |j                  d       t        | j                        }| j                  t        |      d       y )Nro   r   rQ   r^   i  r   )
rW   rv   r   r`   rB   rT   ra   r*   r9   ry   )rC   ro   payloadrc   r   s        r   test_reenvio_duplicado_409z&TestGuardar.test_reenvio_duplicado_409   s    ((*73E<%9%;<))*D/6 * 88CS	JKK7gF,'UQ'r   c                     | j                   j                  dddit                     }| j                  |j                  d       y )Nr   ro    yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyrQ   r   )rB   rT   r   r`   ra   rb   s     r   test_token_desconocido_400z&TestGuardar.test_token_desconocido_400   sD    KK7#*H"O8L8N"O  Q,r   c                     | j                         j                         d   }|dddiid}| j                  j                  d|      }| j	                  |j
                  d       y )	Nro   r   r   EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE)ro   r   r   rQ   r^   r   )rC   ro   r   rc   s       r   test_respuesta_corta_se_acortaz*TestGuardar.test_respuesta_corta_se_acorta   s`    ((*73!")C+;!<>KK7gF,r   c                 J   | j                  d      j                         d   }| j                  j                  dd|it	                     }| j                  |j                  d       t        | j                        }| j                  |d   d   j                  d             y )	Nz=HIPERVINCULO($A$1))rM   ro   r   rQ   r^      ')rW   rv   rB   rT   r   r`   ra   r*   r9   rz   
startswith)rC   ro   rc   r   s       r   test_inyeccion_csv_escapadaz'TestGuardar.test_inyeccion_csv_escapada   s    (=>GGI'RKK7#*E"L5I5K"L  N,'a..s34r   c                    | j                  dd      j                         d   }| j                  j                  dd|it	                      t        | j                        }| j                  |d   d   d	       | j                  d
d      j                         d   }| j                  j                  dd|it	                      t        | j                        }| j                  |d   d   d       y )NUnoPrimer)rM   rN   ro   r   rQ   r   r   r   DosSegundor   r   )rW   rv   rB   rT   r   r*   r9   r`   )rC   t1r   t2s       r   test_correlativo_por_estudiantez+TestGuardar.test_correlativo_por_estudiante   s    ]]UH]=FFHQ37B:aJ^J`:ab'q!c*]]UI]>GGI'R37B:aJ^J`:ab'q!c*r   c                 x    | j                   j                  ddd      }| j                  |j                  d       y )NrP   s   {rotozapplication/json)datacontent_typer   r   rb   s     r   test_json_malformado_sin_500z(TestGuardar.test_json_malformado_sin_500   s7    KK7h*<  >,r   N)r=   rX   rY   r   r   r   r   r   r   r   r   r   r   r   r   r      s*    (6(-
-5+-r   r   __main__)__doc__r&   r!   r/   unittestflaskr   r2   r   r?   r   r*   TestCaser,   r[   rm   r   r   r=   mainr   r   r   <module>r      s     	     8$#Hx   H<	-x 	--( -&(H (<@-( @-F zHMMO r   