o
    HXîhë
  ã                   @   sž   d dl Z d dlZd dlmZ e d¡Ze ee dƒoe  ¡ d kd¡G dd„ dej	ƒƒZ
e ee dƒo7e  ¡ d kd¡G d	d
„ d
ej	ƒƒZedkrMe ¡  dS dS )é    N)Úimport_helperÚspwdÚgeteuidzroot privileges requiredc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestSpwdRootc                 C   s0   t  ¡ }|  |t¡ |D ]	}|  |t j¡ qd S )N)r   ÚgetspallÚassertIsInstanceÚlistÚstruct_spwd)ÚselfÚentriesÚentry© r   ú8/opt/python-3.10.19/usr/lib/python3.10/test/test_spwd.pyÚtest_getspall   s
   ÿzTestSpwdRoot.test_getspallc                 C   s(  t  ¡ }|s|  d¡ |d j}t  |¡}|  |t j¡ |  |j|¡ |  |j|d ¡ |  |j|j¡ |  |j	t
¡ |  |j	|d ¡ |  |j	|j¡ |  |jt¡ |  |j|d ¡ |  |jt¡ |  |j|d ¡ |  |jt¡ |  |j|d ¡ |  |jt¡ |  |j|d ¡ |  |jt¡ |  |j|d ¡ |  |jt¡ |  |j|d	 ¡ |  |jt¡ |  |j|d
 ¡ |  t¡}t  d¡ W d   ƒ n1 sÑw   Y  |  t
|jƒd¡ |  tt j¡ |  tt jd¡ |  tt j|d¡ zt |¡}W n ty	   Y d S w |  tt j|¡ d S )Nzempty shadow password databaser   é   é   é   é   é   é   é   é   zinvalid user namez'getspnam(): name not found')r   r   ÚskipTestZsp_nampÚgetspnamr   r	   ZassertEqualZsp_namZsp_pwdpÚstrZsp_pwdZ	sp_lstchgÚintZsp_minZsp_maxZsp_warnZsp_inactZ	sp_expireZsp_flagÚassertRaisesÚKeyErrorÚ	exceptionÚ	TypeErrorÚosÚfsencodeÚUnicodeEncodeError)r
   r   Zrandom_namer   ZcxZ
bytes_namer   r   r   Útest_getspnam   sN   


ÿÿzTestSpwdRoot.test_getspnamN)Ú__name__Ú
__module__Ú__qualname__r   r#   r   r   r   r   r   	   s    r   znon-root user requiredc                   @   s   e Zd Zdd„ ZdS )ÚTestSpwdNonRootc              
   C   s|   d}z|   t¡}t |¡ W d   ƒ W d S 1 sw   Y  W d S  ty= } z|  d||f ¡ W Y d }~d S d }~ww )NÚbinzspwd entry %r doesn't exist: %s)r   ÚPermissionErrorr   r   r   r   )r
   ÚnameÚcmÚexcr   r   r   Útest_getspnam_exception@   s   &ÿ €ÿz'TestSpwdNonRoot.test_getspnam_exceptionN)r$   r%   r&   r-   r   r   r   r   r'   <   s    r'   Ú__main__)r    ZunittestZtest.supportr   Úimport_moduler   Z
skipUnlessÚhasattrr   ZTestCaser   r'   r$   Úmainr   r   r   r   Ú<module>   s    
ÿ1ÿÿ