
    =j                        d Z ddlZddlZddlZddlZddlmZ ej                  j                  d e	 ee
      j                         j                               ddlZddlZ G d dej"                        Zd Z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 eej*                        ddZ ed       D  ci c]  } d!|  d"d#d$d% c} Z G d& d'e      Z G d( d)e      Z G d* d+e      Zed,k(  r ej:                          yyc c} w )-u   Pruebas de integración del blueprint RA3 CDT1 con Flask test client.

Usa archivos CSV temporales para no ensuciar el directorio del módulo.
    N)Pathc                   .    e Zd Zd Zed        Z	 	 ddZy)BaseApic                    t        j                         | _        | j                  | j                  j                         t        | j                  j                        dz  t        _        t        | j                  j                        dz  t        _	        t        t              5  t        j                  j                          d d d        | j                         | _        y # 1 sw Y   xY w)Nzresultados_ra3_cdt1.csvzincidencias_ra3_cdt1.csv)tempfileTemporaryDirectorytmp
addCleanupcleanupr   namemoduloCSV_RESULTADOSCSV_INCIDENCIAS_bloqueo_temporal	_sesionesclear_crear_clienteclienteselfs    C   /home/adonis/Público/Cursos/Quimica/evaluacion_ra3/test_ra3_api.pysetUpzBaseApi.setUp   s    ..0(() $TXX]] 36O O!%dhhmm!47Q!Qv& 	%""$	%**,	% 	%s   $C!!C*c                      ddl m}   | t        t        t	        t
        j                        j                  dz              }|j                  t
        j                         |j                         S )Nr   )Flask	templates)template_folder)flaskr   __name__strr   r   __file__parentregister_blueprintbptest_client)r   apps     r   r   zBaseApi._crear_cliente   sN    Hc!((;6/8 9vyy)      c                 j    | j                   j                  d|||d      }|j                         d   S )N/iniciar-ra3	apellidosnombrescarrerajsontokenr   postget_json)r   r*   r+   r,   	respuestas        r   _iniciarzBaseApi._iniciar$   s=    LL%%n"w7<L% M	!!#G,,r&   N)   Pérez García
   Ana María	   Mecánica)r   
__module____qualname__r   staticmethodr   r4    r&   r   r   r      s)    - ! ! <H$-r&   r   c                     | j                   S )N)_bloqueo)_modulos    r   r   r   +   s    r&   VF)01234BCAud   Un mol es la cantidad de sustancia que contiene 6,022 x 10^23 partículas como átomos o moléculas.u?   El número de Avogadro indica cuántas partículas hay por mol.uA   Indica la proporción más simple en que se combinan los átomos.ud   La empírica muestra la proporción simple y la molecular el número real y exacto de cada elemento.zkEs el porcentaje en masa de cada elemento del compuesto, dividido entre la masa total multiplicado por 100.1005132z	1.2044e24z11.11z88.89SO2C3H6)rA   rB   rC   rD   porc_hporc_orJ   618rE   z	2.4088e24)v1v2v3pasosserie1serie2serie3serie4serie5   s3_30150rC   )tiempo_steclascorreccionesc                   $    e Zd Zd Zd Zd Zd Zy)TestIniciarc                     | j                         }| j                  |d          | j                  t        |d         d       y )Nokr/       )_cliente_iniciar
assertTrueassertEquallen)r   datoss     r   (test_identificacion_valida_entrega_tokenz4TestIniciar.test_identificacion_valida_entrega_tokenF   s9    %%'d$U7^,b1r&   c                 `    | j                   j                  ddddd      j                         S )Nr(   LopezJuanu   Electrónicar)   r-   r0   r   s    r   rh   zTestIniciar._cliente_iniciarK   s1    ||   V7
  8:	r&   c                 ~    | j                   j                  ddddd      j                  }| j                  |d       y )Nr(   ro   rp   Adminr)   r-     r   r1   status_coderj   r   codigos     r   !test_carrera_no_permitida_rechazaz-TestIniciar.test_carrera_no_permitida_rechazaP   sA    ""> V9I" JJU+ 	%r&   c                     | j                   j                  ddddd      }| j                   j                  ddddd      }||fD ]  }| j                  |j                  d         y )	Nr(    Xr7   r)   r-   ږAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArs   )r   r1   rj   ru   )r   vaciolargocasos       r   $test_campos_vacios_o_largos_rechazanz0TestIniciar.test_campos_vacios_o_largos_rechazanU   sy    !!.8E! F!!."s{8L! MEN 	4DT--s3	4r&   N)r   r8   r9   rm   rh   rx   r   r;   r&   r   rd   rd   E   s    2

&
4r&   rd   c                       e Zd Zd Zd Zd Zy)TestIncidentesc                    | j                         }| j                  j                  d|dd      j                         }| j                  j                  d|dd      j                         }| j	                  |d   |d   fd       y )N/incidente-ra3pantalla_completar/   tipor-   pegar
incidentes)      )r4   r   r1   r2   rj   )r   r/   primerasegundas       r    test_incidente_valido_incrementaz/TestIncidentes.test_incidente_valido_incrementa_   s    ,,##$4382E*G $ HHP
 	 ,,##$43829*; $ <<DHJ 	 	',/1FGPr&   c                     | j                         }| j                  j                  d|dd      j                  }| j	                  |d       y )Nr   hackeor   r-   rs   )r4   r   r1   ru   rj   r   r/   rw   s      r   test_tipo_invalido_rechazaz)TestIncidentes.test_tipo_invalido_rechazai   sI    ""UH#E # GGR{ 	%r&   c                 |    | j                   j                  dddd      j                  }| j                  |d       y )Nr   z	no-exister   r   r-   rs   rt   rv   s     r   test_token_invalido_rechazaz*TestIncidentes.test_token_invalido_rechazao   sB    ""[,3$5 # 66Ak 	 	%r&   N)r   r8   r9   r   r   r   r;   r&   r   r   r   ^   s    Q&&r&   r   c                   B    e Zd ZeefdZd Zd Zd Zd Z	d Z
d Zd Zy	)
TestGuardarc                 D    | j                   j                  d|||d      S )Nz/guardar-ra3)r/   
respuestasmetasr-   )r   r1   )r   r/   r   r   s       r   _enviarzTestGuardar._enviarw   s-    ||  *u7F  G 	Gr&   c                     | j                         }| j                  |      j                         }|d   }| j                  |d   d       | j                  |d   |d   |d   fd       y )N	resultado	academicod   
nota_finalincidentes_trampa
alertas_ia)r   r   r   r4   r   r2   rj   )r   r/   rl   rs       r   ,test_examen_perfecto_sin_incidentes_nota_100z8TestGuardar.test_examen_perfecto_sin_incidentes_nota_100{   sj    U#,,.+;-!L/1-@+A1\?S$	&r&   c                 L   | j                         }| j                  |       | j                  dd      }| j                  j                  d|dd       | j                  |      j	                         }| j                  |d   d	   d
       t        t        j                  d      5 }t        t        j                  |            }d d d        | j                  d   g d       | j                  |d   d d g d       | j                  |d   d d g d       y # 1 sw Y   UxY w)N   RamírezLuis)r*   r+   r   r   r   r-   r   r   _   	utf-8-sigencodingr   )No	ApellidosNombresCarreraNotar      )rB   r5   r6   r7   r   r\   )rC   r   r   r7   95)r4   r   r   r1   r2   rj   openr   r   listcsvreader)r   token1token2r3   ffilass         r   )test_csv_resultados_formato_y_correlativoz5TestGuardar.test_csv_resultados_formato_y_correlativo   s   VVD*6:M2O 	PLL(113	;/=rB&''+> 	(!A'E	(q#TUq"1'YZq"1'ST		( 	(s   'DD#c                     | j                         }| j                  |       | j                  |      j                  }| j                  |d       y )Ni  )r4   r   ru   rj   r   s      r   test_envio_duplicado_bloqueadoz*TestGuardar.test_envio_duplicado_bloqueado   s=    Ue$00%r&   c                     | j                  d      }| j                  |       t        t        j                        j                  d      }| j                  d|       y )Nz=HIPERVINCULO("malo"))r*   r   r   z'=HIPERVINCULO)r4   r   r   r   r   	read_textassertIn)r   r/   	contenidos      r   test_inyeccion_csv_neutralizadaz+TestGuardar.test_inyeccion_csv_neutralizada   sL    (?@U../99;9O	&	2r&   c                     | j                         }dddddiddiddid	d
dgdd}| j                  ||i       j                         d   }| j                  |d   d       y)u>   Claves desconocidas y valores fuera de allow-list no puntúan.VVVr?   )rA   9rA   Zhackz<script>infnan	volcar_bdborrar_huella)rR   rU   rV   r   r   r   Nr   )r   r/   trampasrl   s       r   $test_respuestas_tamperadas_ignoradasz0TestGuardar.test_respuestas_tamperadas_ignoradas   sv    !,Cjz*El"k?-KL
 UGR099;KH{+Q/r&   c                     | j                         }| j                  |t        i       j                         d   }| j	                  t        |d         d       y )Nr   indicadores_iar\   )r4   r   
RESPUESTASr2   assertGreaterEqualrk   )r   r/   rl   s      r   'test_metas_ausentes_generan_indicadoresz3TestGuardar.test_metas_ausentes_generan_indicadores   sH    UJ3<<>{KE*:$; <a@r&   c                     | j                   j                  d      }| j                  |j                  d       |j	                  d      }dD ]  }| j                  ||        y )Nz	/ra3-cdt1   T)as_text)zbtn-iniciarz
btn-enviarzlista-pasosfullscreenchangeziniciar-ra3)r   getrj   ru   get_datar   )r   paginacuerpoesperados       r   test_pagina_sirve_htmlz"TestGuardar.test_pagina_sirve_html   s[    !!+.++S1.< 	,HMM(F+	,r&   N)r   r8   r9   r   METASr   r   r   r   r   r   r   r   r;   r&   r   r   r   v   s2    (2% G&U&30A
,r&   r   __main__)__doc__r   sysr   unittestpathlibr   pathinsertr   r    resolver!   ra3_cdt1r   
ra3_gradergTestCaser   r   r   PASOS_CORRECTOSr   ranger   rd   r   r   r   main)is   0r   <module>r      sJ  
  
    3tH~--/667 8  -h -2
 c#C@c#C@6NP/9	 %k G%fNKQ../1
& (	 qcL	L 	4' 42&W &0?,' ?,D zHMMO o	s   ;D