a ze @sddlZddlZddlmZedZeeedo>edkdGdddej Z eeedonedkdGd d d ej Z e d kre dS) N)supportspwdgeteuidzroot privileges requiredc@seZdZddZddZdS) TestSpwdRootcCs0t}||t|D]}||tjqdS)N)rgetspallassertIsInstancelist struct_spwd)selfentriesentryr B/opt/bitninja-python-dojo/embedded/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}td Wdn1s0Y|t |jd |ttj|ttjd|ttj|dzt|}WntyYn0|ttj|dS) Nzempty shadow password databaserzinvalid user namez'getspnam(): name not found')rrskipTestZsp_nampgetspnamrr Z assertEqualZsp_namZsp_pwdpstrZsp_pwdZ sp_lstchgintZsp_minZsp_maxZsp_warnZsp_inactZ sp_expireZsp_flag assertRaisesKeyError exception TypeErrorosfsencodeUnicodeEncodeError)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@seZdZddZdS)TestSpwdNonRootc Csxd}z8|t}t|Wdn1s00YWn6tyr}z|d||fWYd}~n d}~00dS)Nbinzspwd entry %r doesn't exist: %s)rPermissionErrorrrrr)r namecmexcr r rtest_getspnam_exception?s  ,z'TestSpwdNonRoot.test_getspnam_exceptionN)r$r%r&r-r r r rr';sr'__main__)r Zunittesttestr import_modulerZ skipUnlesshasattrrZTestCaserr'r$mainr r r rs  1