
    /jT                     v    d dl Zd dlmc mZ d dlmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZ d dlmZ d Zd Zd	 ZdS )
    N)
TestClient)Sessionselect)engineinit_db)app)AdminCredentialc                  ^   t                       t          t                    5 } |                     d          }d d d            n# 1 swxY w Y   |j        }d}||k    }|st          j        d|fd||f          dt          j                    v st          j	        |          rt          j
        |          nd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 S )Nz/api/admin/redemptions  ==z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sresponsepy0py2py5assert %(py7)spy7detailcodeadmin_login_required)z%(py1)s == %(py4)spy1py4assert %(py6)spy6)r   r   r   getstatus_code
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationjson)clientr   @py_assert1@py_assert4@py_assert3@py_format6@py_format8@py_assert0@py_assert2@py_format5@py_format7s              E/home/agent/projects/FamilyDashboard/backend/tests/test_admin_auth.pytest_admin_routes_require_loginr4   	   s   III	C 8F::6778 8 8 8 8 8 8 8 8 8 8 8 8 8 8&3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&==??8$V,F0FF,0FFFFFFFFFFF,0FFFFFF,FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFs   AA	A	c                  t	   t                       t          t                    5 } |                     dddi          }|                                d         }|                     dd|i          }|                     d	d|i          }|                     dd|i          }d d d            n# 1 swxY w Y   |j        }d
}||k    }|st          j        d|fd||f          dt          j
                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }	dd|	iz  }
t          t          j        |
                    d x}x}}|sedddt          j
                    v st          j        |          rt          j        |          ndiz  }t          t          j        |                    |j        }d
}||k    }|st          j        d|fd||f          dt          j
                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }	dd|	iz  }
t          t          j        |
                    d x}x}}|                                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}}|j        }d
}||k    }|st          j        d|fd||f          dt          j
                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }	dd|	iz  }
t          t          j        |
                    d x}x}}|j        }d}||k    }|st          j        d|fd||f          dt          j
                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }	dd|	iz  }
t          t          j        |
                    d x}x}}d S )N/api/admin/auth/loginpin9999r(   tokenz/api/admin/auth/mezX-Admin-Session)headersz/api/admin/auth/logout   r   r   loginr   r   r   zassert %(py0)sr   meauthenticatedT)is)z%(py1)s is %(py4)sr   r   r   logoutr   after_logout)r   r   r   postr(   r   r   r    r!   r"   r#   r$   r%   r&   r'   )r)   r=   r:   r>   rA   rB   r*   r+   r,   r-   r.   @py_format1r/   r0   r1   r2   s                   r3   7test_correct_pin_opens_admin_and_logout_revokes_sessionrE      s}   III	C \F35&/JJ

W%ZZ,7H%6PZQQ5@QSX?YZZzz"6ARTY@Zz[[\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ########################5#####5#####################################LLLLLLLLLLLL5LLLLL5LLLLLLLLLLLLLLLL> S >S          >S            2     2      >    S                           7799_%--%----------%-----%-------------------------------$$$$$$$$$$$$$$$$$$$$$$$$6$$$$$6$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#*s*#s**********#s************<*****<******#****s*****************************s   A?B..B25B2c                  h   t                       t          t                    5 } |                     dddi          }d d d            n# 1 swxY w Y   t	          t
                    5 }|                    t          t                    	                    t          j
        dk                                                        }d d d            n# 1 swxY w Y   |j        }d}||k    }|st          j        d|fd||f          d	t          j                    v st          j        |          rt          j        |          nd	t          j        |          t          j        |          d
z  }dd|iz  }t'          t          j        |                    d x}x}}|j        }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          d
z  }dd|iz  }t'          t          j        |                    d x}x}}|j        }|j        }d}	 ||	          }
|
sddt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          t          j        |	          t          j        |
          dz  }t'          t          j        |                    d x}x}x}	}
d S )Nr6   r7   0000r9   adminr   r   r   r   r   r   r   r8   )!=)z0%(py2)s
{%(py2)s = %(py0)s.pin_hash
} != %(py5)s
credentialzpbkdf2_sha256$zjassert %(py8)s
{%(py8)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.pin_hash
}.startswith
}(%(py6)s)
})r   r   r   r   py8)r   r   r   rC   r   r   execr   r	   whereusernamefirstr   r    r!   r"   r#   r$   r%   r&   r'   pin_hash
startswith)r)   r   sessionrJ   r*   r+   r,   r-   r.   @py_assert5@py_assert7@py_format9s               r3   ,test_wrong_pin_is_rejected_and_pin_is_hashedrV   "   s   III	C NF;;6eV_;MMN N N N N N N N N N N N N N N	 nG\\&"9"9"?"?@X\c@c"d"deekkmm
n n n n n n n n n n n n n n n &3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&(&(&((((((((((&((((((((((((:(((((:((((((((((&(((((((((((((((((((((((((((;);*:;))*:;;;;;;;;;;;;;;;:;;;;;:;;;;;;;;;;);;;;*:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;s$   A		AA(ACCC)builtinsr"   _pytest.assertion.rewrite	assertionrewriter    fastapi.testclientr   sqlmodelr   r   app.db.sessionr   r   app.mainr   
app.modelsr	   r4   rE   rV        r3   <module>rb      s                  ) ) ) ) ) ) $ $ $ $ $ $ $ $ * * * * * * * *       & & & & & &G G G+ + +"	< 	< 	< 	< 	<ra   