
    qh'                     n    d Z ddlZddlmc mZ ddlZddlZddl	m
Z
 d Zd Zd Zd Zd Zd	 Zd
 Zd Zy)z
test_setup_verification.py

Purpose:
  Simple tests to verify the testing infrastructure is working correctly.
  These tests validate that fixtures are properly configured and the test
  environment is isolated from production data.
    N)Flaskc                 V   t        | t              }|sddt        j                         v st	        j
                  t               rt	        j                  t               nddt        j                         v st	        j
                  |       rt	        j                  |       nddt        j                         v st	        j
                  t              rt	        j                  t              ndt	        j                  |      dz  }t        t	        j                  |            d}| j                  d   }d}||u }|slt	        j                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            dx}x}}y)z3Test that the app fixture creates a Flask instance.z5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}
isinstanceappr   )py0py1py2py4NTESTINGTisz%(py1)s is %(py4)sr   r
   assert %(py6)spy6)r   r   @py_builtinslocals
@pytest_ar_should_repr_global_name	_safereprAssertionError_format_explanationconfig_call_reprcompare)r   @py_assert3@py_format5@py_assert0@py_assert2@py_format7s         \C:\Users\algun\Documents\ceba web\Ceba - Github\tests\integration\test_setup_verification.py'test_app_fixture_creates_flask_instancer!      s    c5!!!!!!!!:!!!:!!!!!!c!!!c!!!!!!5!!!5!!!!!!!!!!::i (D( D(((( D((( (((D(((((((    c                 p   | j                  d      }d}||u}|st        j                  d|fd||f      dt        j                         v st        j
                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                  |            dx}}y)	z4Test that the client fixture provides a test client./Nis notz%(py0)s is not %(py3)sresponser   py3assert %(py5)spy5)	getr   r   r   r   r   r   r   r   )clientr(   r   @py_assert1@py_format4@py_format6s         r    (test_client_fixture_provides_test_clientr2      sh    zz#H8484884r"   c                 V   |j                  d      }|j                         D cg c]  }|d   	 }}g d}|D ]  }||v }|st        j                  d|fd||f      dt	        j
                         v st        j                  |      rt        j                  |      nddt	        j
                         v st        j                  |      rt        j                  |      nddz  }t        j                  d	| d
      dz   d|iz  }	t        t        j                  |	            d} yc c}w )zTTest that the database fixture provides a working database with all required tables.z1SELECT name FROM sqlite_master WHERE type='table'r   )userscamerasmarkerslogin_attemptslogin_ip_attemptsauth_logadmin_auditin)z%(py0)s in %(py2)stabletables)r   r	   zRequired table 'z' not found in databasez
>assert %(py4)sr
   N)executefetchallr   r   r   r   r   r   _format_assertmsgr   r   )
r   dbcursorrowr>   required_tablesr=   r/   @py_format3r   s
             r    )test_database_fixture_has_required_tablesrG      s     ZZKLF & 12 1c!f 1F2FO QQQuQQQQQQuQQQuQQQQQQQQQQQQQ"25'9P QQQQQQQ ! 3s   D&c                    d}| |u}|st        j                  d|fd| |f      dt        j                         v st        j                  |       rt        j
                  |       ndt        j
                  |      dz  }dd|iz  }t        t        j                  |            dx}}t        j                  }|j                  } ||       }|sdd	t        j                         v st        j                  t              rt        j
                  t              nd	t        j
                  |      t        j
                  |      dt        j                         v st        j                  |       rt        j
                  |       ndt        j
                  |      d
z  }t        t        j                  |            dx}x}}t        j                  }|j                  } ||       }|sdd	t        j                         v st        j                  t              rt        j
                  t              nd	t        j
                  |      t        j
                  |      dt        j                         v st        j                  |       rt        j
                  |       ndt        j
                  |      d
z  }t        t        j                  |            dx}x}}y)zATest that the temp_static fixture provides a temporary directory.Nr%   r'   temp_staticr)   r+   r,   zbassert %(py7)s
{%(py7)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.path
}.exists
}(%(py5)s)
}os)r   r	   r
   r,   py7zaassert %(py7)s
{%(py7)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.path
}.isdir
}(%(py5)s)
})r   r   r   r   r   r   r   r   rJ   pathexistsisdir)rI   r   r/   r0   r1   r   @py_assert6@py_format8s           r    +test_temp_static_fixture_provides_directoryrQ   )   sy   "";d"""";d"""""";""";"""d"""""""77&7>>&>+&&&&&&&&2&&&2&&&7&&&>&&&&&&+&&&+&&&&&&&&&&77%7==%=%%%%%%%%2%%%2%%%7%%%=%%%%%%%%%%%%%%%%%%%r"   c                  
   d}||v }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j
                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            dx}}d	}||v }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j
                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            dx}}d
}||v }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j
                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            dx}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d	   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d
   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d   d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d	   d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|d
   d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}y)z?Test that the test_users fixture creates users in the database.regularr;   z%(py1)s in %(py3)s
test_usersr   r*   r+   r,   Nadminlimitedusernametestuser==z%(py1)s == %(py4)sr   r   r   	testadminlimiteduseris_adminFr   r   T)r   r   r   r   r   r   r   r   )	r   rU   r   r   r0   r1   r   r   r   s	            r    %test_test_users_fixture_creates_usersra   0   s   "9
""""9
"""9""""""
"""
""""""" 7j    7j   7      j   j       "9
""""9
"""9""""""
"""
""""""" i ,:
:,
::::,
:::,:::
:::::::gz*9k9*k9999*k999*999k9999999i ,==,====,===,==========i ,55,5555,555,5555555555gz*2d2*d2222*d222*222d2222222i ,55,5555,555,5555555555r"   c                    d}|| v }|st        j                  d|fd|| f      t        j                  |      dt        j                         v st        j
                  |       rt        j                  |       nddz  }dd|iz  }t        t        j                  |            dx}}d	}| d   }||v }|slt        j                  d|fd
||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t        t        j                  |	            dx}x}}d}| d   }||v }|slt        j                  d|fd
||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t        t        j                  |	            dx}x}}| d   d	   }
t        |
      }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t              rt        j                  t              ndt        j                  |
      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}
x}x}}d}||v }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j
                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            dx}}d}|d   }||v }|slt        j                  d|fd
||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t        t        j                  |	            dx}x}}d}|d   }||v }|slt        j                  d|fd
||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t        t        j                  |	            dx}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t        t        j                  |	            dx}x}}d}||v }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j
                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            dx}}d}|d   }||v }|slt        j                  d|fd
||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t        t        j                  |	            dx}x}}d}|d   }||v }|slt        j                  d|fd
||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t        t        j                  |	            dx}x}}|d   d   }
t        |
t              }|sd d!t        j                         v st        j
                  t              rt        j                  t              nd!t        j                  |
      d"t        j                         v st        j
                  t              rt        j                  t              nd"t        j                  |      d#z  }t        t        j                  |            dx}
}y)$z@Test that sample data fixtures provide expected data structures.validr;   rT   sample_camera_datarV   r+   r,   N	camera_id)z%(py1)s in %(py4)sr   r   r   camera_name   r[   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)slen)r   r	   r
   rK   zassert %(py9)spy9jpgsample_image_datafilenamecontent_typez
image/jpegr]   camera_markersample_marker_datalatitude	longitudez5assert %(py5)s
{%(py5)s = %(py0)s(%(py2)s, %(py3)s)
}r   float)r   r	   r*   r,   )r   r   r   r   r   r   r   r   rh   r   rr   )rd   rk   ro   r   r   r0   r1   r   r   r   r/   rO   @py_assert5rP   @py_format10@py_assert4s                   r    +test_sample_data_fixtures_provide_test_datarv   @   sz    (7(((((7((((7((((((((((((((((((5,W55;55555;5555;555555555557.w77=77777=7777=77777777777!'*;7>378>B>8B>>>>8B>>>>>>3>>>3>>>7>>>8>>>B>>>>>>> %5%%%%%5%%%%5%%%%%%%%%%%%%%%%%%1*511:11111:1111:111111111115.u55>55555>5555>55555555555U#N3C|C3|CCCC3|CCC3CCC|CCCCCCC 0?00000?0000?000000000000000000<+O<<:<<<<<:<<<<:<<<<<<<<<<<=,_==;=====;====;===========(9*EM:EuMMMMMMMM:MMM:MMMEMMMMMMuMMMuMMMMMMMMMMr"   c                    | j                         5  ddl}t        j                  j	                  d      }|j                  |      }|j                  |_        |j                  dd       |j                          |j                  dd      }|j                         }d}||u}|st        j                  d|fd	||f      d
t        j                         v st        j                  |      rt        j                   |      nd
t        j                   |      dz  }dd|iz  }	t#        t        j$                  |	            dx}}|d   }
d}|
|k(  }|slt        j                  d|fd|
|f      t        j                   |
      t        j                   |      dz  }dd|iz  }t#        t        j$                  |            dx}
x}}|j'                          ddd       y# 1 sw Y   yxY w)z*Test that each test gets a fresh database.r   NDATABASE_PATHzFINSERT INTO users (username, password_hash, is_admin) VALUES (?, ?, ?))isolation_testhashFz-SELECT username FROM users WHERE username = ?)ry   r%   r'   resultr)   r+   r,   ry   r[   r]   r   r   r   )app_contextsqlite3rJ   environr-   connectRowrow_factoryr?   commitfetchoner   r   r   r   r   r   r   r   close)r   r}   db_pathrB   rC   r{   r   r/   r0   r1   r   r   r   r   s                 r    %test_database_isolation_between_testsr   U   s7   		**..1__W%  	

[4	6
		 KM`a"!!vT!!!!vT!!!!!!v!!!v!!!T!!!!!!!ay,,,y,,,,,y,,,,y,,,,,,,,,,,

% 
		s   F?GG"c                    d}| |u}|st        j                  d|fd| |f      dt        j                         v st        j                  |       rt        j
                  |       ndt        j
                  |      dz  }dd|iz  }t        t        j                  |            dx}}d}||u}|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |      dz  }dd|iz  }t        t        j                  |            dx}}y)	z<Test that authenticated client fixtures work without errors.Nr%   r'   authenticated_client_regularr)   r+   r,   authenticated_client_admin)r   r   r   r   r   r   r   r   )r   r   r   r/   r0   r1   s         r    test_authenticated_clients_workr   l   s     043't3333't333333'333'333t3333333-11%T1111%T111111%111%111T1111111r"   )__doc__builtinsr   _pytest.assertion.rewrite	assertionrewriter   rJ   pytestflaskr   r!   r2   rG   rQ   ra   rv   r   r    r"   r    <module>r      sC     	  ) 
R&6 N*.2r"   