a „oe®ã@s¢ddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z Gdd„dej ƒZ Gdd„dej ƒZ Gdd„de ƒZGd d „d e ƒZed krže ƒdS) éN)Ú TestSkippedÚ ob2memoryÚtestmainc@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)Ú SecurityTestsc Csht dd¡d|_zt dd¡d|_Wn:tjyb}z |jtjkrH‚d|_WYd}~n d}~00dS)NÚz Power UsersrÚ Administrator)Ú win32securityÚLookupAccountNameÚpwr_sidÚ admin_sidÚ pywintypesÚerrorÚwinerrorZERROR_NONE_MAPPED©ÚselfÚexc©rú9C:\Program Files\Certbot\pkgs\win32\test\test_security.pyÚsetUps zSecurityTests.setUpcCsdS©Nr©rrrrÚtearDownszSecurityTests.tearDowncCs:|jdurtdƒ‚| t dd¡dt dd¡d¡dS©Nz'No 'Administrator' account is availablerrr)r rÚ assertEqualrr rrrrÚ testEquals  þzSecurityTests.testEqualcCs.| |j|jk¡|jr*| |j|jk¡dSr)Ú assertTruer r rrrrÚ testNESID$szSecurityTests.testNESIDcCsR| |jdk¡| d|jk¡| |jdk¡| d|jk¡| d|j¡dSr)rr Z assertFalseZassertNotEqualrrrrÚ testNEOther)s zSecurityTests.testNEOthercCs"t|jd}| |d|j¡dS)N)Úfoor)Údictr r)rÚdrrrÚ testSIDInDict0s zSecurityTests.testSIDInDictcCsB|jdurtdƒ‚| tt dd¡dƒtt dd¡dƒ¡dSr)r rrrrr rrrrÚ testBuffer4s  þzSecurityTests.testBufferc Csì|j}|j}t ¡}t ¡}t ¡}t ¡}| tjtj|¡|durX| tjtj |¡t ¡}t ¡}|dur†|  tjtj |dd¡|  tjtj |dd¡t ddƒD]@} |dur¾|  |d¡| |d¡| d|d¡| d|d¡q¦dS)Néri@ )r r rZSECURITY_DESCRIPTORZACLZAddAccessAllowedAceZ ACL_REVISIONÚwin32conZ GENERIC_READZ GENERIC_ALLZAddAuditAccessAceZDELETEÚrangeZSetSecurityDescriptorOwnerZSetSecurityDescriptorGroupZSetSecurityDescriptorDaclZSetSecurityDescriptorSacl) rr r Zsd1Zsd2Zsd3ZdaclZsd4ZsaclÚxrrrÚ testMemory<s8 ÿ ÿÿÿ  zSecurityTests.testMemoryN) Ú__name__Ú __module__Ú __qualname__rrrrrr!r"r'rrrrr s rc@seZdZdd„Zdd„ZdS)Ú DomainTestsc CsVd|_zt ¡|_Wn<tjyP}z"|jtjkr4‚t|ƒ‚WYd}~n d}~00dSr)Ú ds_handlerÚDsBindr rZERROR_NO_SUCH_DOMAINrrrrrr\s zDomainTests.setUpcCs|jdur|j ¡dSr)r,Úcloserrrrrfs zDomainTests.tearDownN)r(r)r*rrrrrrr+[s r+c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚTestDScCs t ¡dSr)rZ DsGetDcNamerrrrÚtestDsGetDcNamelszTestDS.testDsGetDcNamecCs^t ¡}t |¡D]F\}}}t ||¡D]\}}}t ||¡}q(t ||¡D] \}}}qLqdSr)rr-Z DsListSitesZDsListServersInSiteZDsListInfoForServerZDsListDomainsInSite)rÚhÚstatusÚignoreZsiteZserverÚinfoÚdomainrrrÚtestDsListServerInfoqs zTestDS.testDsListServerInfocCsDt ¡}tj}t |¡}t |d|||f¡}| ||dd¡dS©Nré)rr-Ú ntsecurityconÚDS_FQDN_1779_NAMEÚwin32apiÚ GetUserNameExÚ DsCrackNamesr)rr1Ú fmt_offeredÚnameÚresultrrrÚtestDsCrackNameszs  zTestDS.testDsCrackNamescCsLt tj¡}tj}t |¡}t dtj|tj|f¡}|  ||dd¡dSr7) r;r<Z NameCanonicalr9r:rr=ZDS_NAME_FLAG_SYNTACTICAL_ONLYZDS_CANONICAL_NAMEr)rÚexpectedr>r?r@rrrÚtestDsCrackNamesSyntaxs  ûzTestDS.testDsCrackNamesSyntaxN)r(r)r*r0r6rArCrrrrr/ks r/c@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) Ú TestTranslatecCs2t |¡}t |¡}t |||¡}| ||¡dSr)r;r<rZ TranslateNamer)rZfmt_fromZfmt_tor?rBZgotrrrÚ_testTranslate’s  zTestTranslate._testTranslatecCs| tjtj¡dSr)rEr;ÚNameFullyQualifiedDNÚNameSamCompatiblerrrrÚtestTranslate1˜szTestTranslate.testTranslate1cCs| tjtj¡dSr)rEr;rGrFrrrrÚtestTranslate2›szTestTranslate.testTranslate2cCs| tjtj¡dSr)rEr;rFÚ NameUniqueIdrrrrÚtestTranslate3žszTestTranslate.testTranslate3cCs| tjtj¡dSr)rEr;rJrFrrrrÚtestTranslate4¡szTestTranslate.testTranslate4N)r(r)r*rErHrIrKrLrrrrrD‘s rDÚ__main__)Zunittestr9r r;r$rrZpywin32_testutilrrrZTestCaserr+r/rDr(rrrrÚsN&