a 5êdgÖ ã@sšddlZddlZddlmZe d¡Ze eedƒo>e ¡dkd¡Gdd„dej ƒƒZ e eedƒone ¡dkd¡Gd d „d ej ƒƒZ e d kr–e  ¡dS) éN)ÚsupportÚspwdÚgeteuidzroot privileges requiredc@seZdZdd„Zdd„ZdS)Ú TestSpwdRootcCs0t ¡}| |t¡|D]}| |tj¡qdS)N)rÚgetspallÚassertIsInstanceÚlistÚ struct_spwd)ÚselfÚentriesÚentry©r ú*/usr/local/lib/python3.9/test/test_spwd.pyÚ test_getspall s zTestSpwdRoot.test_getspallcCs(t ¡}|s| d¡|dj}t |¡}| |tj¡| |j|¡| |j|d¡| |j|j¡| |j t ¡| |j |d¡| |j |j ¡| |j t ¡| |j |d¡| |jt ¡| |j|d¡| |jt ¡| |j|d¡| |jt ¡| |j|d¡| |jt ¡| |j|d¡| |jt ¡| |j|d ¡| |jt ¡| |j|d ¡| t¡}t d ¡Wdƒn1s¤0Y| t |jƒd ¡| ttj¡| ttjd¡| ttj|d¡zt |¡}WntyYn0| ttj|¡dS) Nzempty shadow password databaseréééééééézinvalid user namez'getspnam(): name not found')rrÚskipTestZsp_nampÚgetspnamrr Z assertEqualZsp_namZsp_pwdpÚstrZsp_pwdZ sp_lstchgÚintZsp_minZsp_maxZsp_warnZsp_inactZ sp_expireZsp_flagÚ assertRaisesÚKeyErrorÚ exceptionÚ TypeErrorÚosÚfsencodeÚUnicodeEncodeError)r r Z random_namer ZcxZ bytes_namer r rÚ test_getspnamsJ    *zTestSpwdRoot.test_getspnamN)Ú__name__Ú __module__Ú __qualname__rr#r r r rrsrznon-root user requiredc@seZdZdd„ZdS)ÚTestSpwdNonRootc Csxd}z8| t¡}t |¡Wdƒn1s00YWn6tyr}z| d||f¡WYd}~n d}~00dS)NÚbinzspwd entry %r doesn't exist: %s)rÚPermissionErrorrrrr)r ÚnameÚcmÚexcr r rÚtest_getspnam_exception?s  ,z'TestSpwdNonRoot.test_getspnam_exceptionN)r$r%r&r-r r r rr';sr'Ú__main__)r ZunittestÚtestrÚ import_modulerZ skipUnlessÚhasattrrZTestCaserr'r$Úmainr r r rÚs  ÿ1ÿ