;ò ‘Ac@sØdkZdkZedjo$eeiieiddƒƒndklZdkl Z l Z l Z l Z l Z dklZlZlZdklZdklZd klZd klZdkZeiƒZeiieƒeieƒeiid ƒ\ZZ d ee ei!fZ"d k#l$Z$dk%l&Z&ei'dƒei'dƒdk(Z(dk)Tde(i(fd„ƒYZ*d„Z+de*fd„ƒYZ,edjoe-ddddƒndk.Z.d„Z/dS(Ns__main__is framework.py(s ZopeTestCase(saccess_contents_informationsviewsadd_documents_images_and_filesschange_images_and_filessview_management_screens(snewSecurityManagersnoSecurityManagersgetSecurityManager(s Unauthorized(s Permissions(sUnrestrictedUser(srolesForPermissionOnishttp://%s:%d/%s(s IUserFolder(sVerifysGroupUserFoldersOFSP(s*sTestGroupUserFoldercBstZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zd„Zd„ZRS(NcCsÔ|iiiƒ}ddddddddd d d d d dddddddddddg}|iƒ|iƒx+|D]#}|i||jd|fƒq{Wx+|D]#}|i||jd|fƒq©WdS(sT test00userNames(self,) Basic test of user and group names. sg1sg2sg3sg4sng1sng2sng3sng4sng5smanagersu1su2su3su4su5su6su7su8su9su10su11sextranetsintranetscomptas-Invalid users list: '%s' is not in acl_users.s@Invalid users list: '%s' is in acl_users but shouldn't be there.N( sselfs gruf_folders acl_userss getUserNamessunsusersssortsus failUnless(sselfsunsususers((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pystest00userNames7sN  !cCsÑ|iiƒ}ddddddddd d d d d dddddddddddg}|iƒ|iƒx+|D]#}|i||jd|fƒqxWx+|D]#}|i||jd|fƒq¦WdS(sR test00userIds(self,) Basic test of user and group names. sgroup_g1sgroup_g2sgroup_g3sgroup_g4s group_ng1s group_ng2s group_ng3s group_ng4s group_ng5smanagersu1su2su3su4su5su6su7su8su9su10su11sgroup_extranetsgroup_intranets group_comptas-Invalid users list: '%s' is not in acl_users.s@Invalid users list: '%s' is in acl_users but shouldn't be there.N(sselfsgrufs getUserIdssunsusersssortsus failUnless(sselfsunsususers((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pys test00userIdsLsN  !c Csd|iiƒj o|iidƒnd|iiƒj o|iidƒn|iiddddgƒ|iiddddddfd dfƒ|iidƒ}|iƒ}|i d |jƒ|i d|jƒ|i d|jƒ|ii dgƒ|ii dgƒd S( sL test01userRoles => Test if the user "inherits" group roles suserroles grouprolesnamesgtestsrolessutestspasswordssecretsgroupss AuthenticatedN( sselfsgrufsuserFolderGetRolessuserFolderAddRolesuserFolderAddGroupsuserFolderAddUsersgetUsersusrsgetRolessroless failUnlesssuserFolderDelUserssuserFolderDelGroups(sselfsusrsroles((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pystest01userRoleses$    cCsæ|i|itdfƒƒ|i|itdfƒƒ|i|itddfƒƒ|i|itdddfƒƒ|i|itdddfƒƒ|i|itdddfƒƒ|i|itd ddd fƒƒd S( sˆ test02securityMatrix(self,) => Test the whole security matrix ! We just check that people has the right roles su1su2su3sr1su4sr2su5su6su7sr3N(sselfs failUnlesss compareRolessNone(sself((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pystest02securityMatrix†s"""cCs|i|idfƒƒ|i|iddfƒƒ|i|idddfƒƒ|i|iddddfƒƒ|i|idddfƒƒ|i|id dfƒƒ|i|id d fƒƒ|i|id dfƒƒ|i|id ddfƒƒ|i|iddddfƒƒ|i|iddddfƒƒ|i|idddddfƒƒ|i|idddfƒƒ|i|idddddfƒƒ|i|idddddfƒƒ|i|idddddfƒƒdS(s test03usersBelongToGroups(self,) => test that the users belong to the right groups. This implies nested groups testing su1su2sg1su3sg2su4sg3su5su6su7sg4s group_ng1s group_ng2s group_ng3sng2s group_ng4s group_ng5sng4su8sng1su9su10sng3su11N(sselfs failUnlesss compareGroups(sself((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pystest03usersBelongToGroups•s""""%%%cCs&|i|i|idfƒƒ|i|i|idfƒƒ|i|i|iddfƒƒ|i|i|idddfƒƒ|i|i|idddfƒƒ|i|i|idddfƒƒ|i|i|id ddd fƒƒ|i|i|idfƒƒ|i|i|idd fƒƒ|i|i|iddd fƒƒ|i|i|idddd fƒƒ|i|i|idddfƒƒ|i|i|idddd fƒƒ|i|i|id ddd fƒƒ|i|i|idd fƒƒ|i|i|idddd fƒƒ|i|i|idddd fƒƒ|i|i|idd fƒƒ|i|i|idddd fƒƒ|i|i|idddd fƒƒ|i|i|idd fƒƒ|i|i|idddd fƒƒ|i|i|idddd fƒƒ|i|i|idfƒƒ|i|i|idddfƒƒ|i|i|idddfƒƒ|i|i|i dfƒƒ|i|i|i dddfƒƒ|i|i|i dddfƒƒd S( sq Test the security matrix on a local role We just check that people has the right roles su1su2su3sr1su4sr2su5su6su7sr3N( sselfs failUnlesss compareRoless gruf_folderslrssublrssublr2s subsublr2ssublr3s subsublr3(sself((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pystest04localRoles³s<"%%%("%(%(("(("(("((%%%cCsÖ|i|itdfƒƒ|i|itdddfƒƒ|i|itdddfƒƒ|i|itddddfƒƒ|i|itddddfƒƒ|i|itd fƒƒ|i|itd ddfƒƒ|i|itd ddfƒƒ|i|itd dddfƒƒ|i|i|iid dfƒƒ|i|i|iid dddfƒƒ|i|i|iid ddfƒƒ|i|i|iid dddfƒƒd S(s0 Test security on nested groups s group_ng1s group_ng2sr1sr2s group_ng3s group_ng4sr3s group_ng5su8su9su10su11N(sselfs failUnlesss compareRolessNones gruf_folderslr(sself((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pystest05nestedGroupsÞs""%%""%%+(cCs#|i|idddfƒƒdS(s- Test against double nesting s group_comptasintranetsextranetN(sselfs failUnlesss compareGroups(sself((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pystest06doubleNestingùscCs…|iidƒ}tt|ƒ|i|idjƒ|ii di dƒ|iidƒ}tt|ƒ|i|idjƒdS(sV test traversal to ensure management screens are correctly accessible su1sGroup User FoldersOFSPN( sselfsgrufsrestrictedTraverses traversedsLogs LOG_DEBUGs failUnlesss meta_types gruf_foldersmanage_addProductsmanage_addFolder(sselfs traversed((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pystest08traversals  cCs6|it|iidƒ|it|iidƒdS(s; We test that GRUF's API is well protected sacl_users/getGRUFPhysicalRootN(sselfs assertRaisess Unauthorizeds gruf_foldersrestrictedTraverse(sself((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pystest10GRUFMethodsscCs£|i|i|iddfƒƒ|i|i|iddddfƒƒ|i|i|iddddfƒƒ|i|i|iddfƒƒ|i|i|iddddfƒƒ|i|i|iddddfƒƒ|ii|idƒ|i|i|idfƒƒ|i|i|idddfƒƒ|i|i|idddfƒƒ|i|i|idfƒƒ|i|i|idddfƒƒ|i|i|idddfƒƒ|ii|idƒ|i|i|idfƒƒ|i|i|idddfƒƒ|i|i|idddfƒƒ|i|i|idfƒƒ|i|i|iddfƒƒ|i|i|idddfƒƒ|ii|idƒ|i|i|iddfƒƒ|i|i|iddddfƒƒ|i|i|iddddfƒƒ|i|i|idfƒƒ|i|i|iddfƒƒ|i|i|idddfƒƒd S( s¬ We block LR acquisition on sublr2. See GRUFTestCase to understand what happens (basically, roles in brackets will be removed from sublr2). su2sr3su3sr1sr2su6iiN(sselfs failUnlesss compareRolesssublr2s subsublr2sgrufs_acquireLocalRoles(sself((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pystest11LocalRoleBlocking!s8"(("((%%%%%%"%"(("cCsuy|ii|idƒWn d}nXd}tƒiti|iƒo|i | dƒn|i |dƒdS(sAccess TTW iisMust have the permission here.s"Must NOT have the permission here.N( sselfsgrufsacquireLocalRolesssublr2sfailedsgetSecurityManagerscheckPermissions Permissionsschange_permissionss failUnless(sselfsfailed((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pystest12LocalRoleSecurityJs c Csddddddg}|iƒdddddg} | iƒ|i}h}x!td|ƒD]}d|| check if the user_names() method return user IDS and not user NAMES... This is an inconsistency in Zope's code... sgroup_g1sgroup_g2sgroup_g3sgroup_g4s group_ng1s group_ng2s group_ng3s group_ng4s group_ng5smanagersu1su2su3su4su5su6su7su8su9su10su11sgroup_extranetsgroup_intranets group_comptas-Invalid users list: '%s' is not in acl_users.s@Invalid users list: '%s' is in acl_users but shouldn't be there.N(sselfsgrufs user_namessunsusersssortsus failUnless(sselfsunsususers((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pystest15user_names sN  !(s__name__s __module__stest00userNamess test00userIdsstest01userRolesstest02securityMatrixstest03usersBelongToGroupsstest04localRolesstest05nestedGroupsstest06doubleNestingstest08traversalstest10GRUFMethodsstest11LocalRoleBlockingstest12LocalRoleSecuritystest13TestCMFLRBehaviours test14Allowedstest15user_names(((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pysTestGroupUserFolder1s   !   +    )  + cCs|ii|ƒSdS(sReturns a merging of object and its ancestors' __ac_local_roles__. This will call gruf's methods. It's made that may to mimic the usual CMF code.N(sobjects acl_userss_getAllLocalRoles(sobject((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pys_mergedLocalRoles´ssTestGroupUserFolderCopycBstZdZdZd„ZRS(sL Same tests as the previous class, but AFTER a copy/paste operation icCsÍ|iƒ|iƒ|iƒ|iƒ|iƒ|iƒ|iƒ|iƒ|i ƒ|i ƒ|i dgƒ|i ƒ|i ididƒ|i i}|iiddgƒ}|id|ƒdS(sI afterSetUp(self,) => Basic gruf setup with a copy/paste sManagersOFSPs gruf_folder2sidss acl_userss cb_copy_dataN(sselfs gruf_setupssecurity_context_setupstest00userNamesstest01userRolesstest02securityMatrixstest03usersBelongToGroupsstest04localRolesstest05nestedGroupsstest06doubleNestings _setupUsers _setRoless_loginsfoldersmanage_addProductsmanage_addFolders gruf_folder2sfolder2s gruf_foldersmanage_copyObjectsscopysmanage_pasteObjects(sselfsfolder2scopy((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pys afterSetUpÆs"            (s__name__s __module__s__doc__s _setup_dones afterSetUp(((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pysTestGroupUserFolderCopyÀs s descriptionsis verbositycCs@tiƒ}|ititƒƒ|ititƒƒ|SdS(N(sunittests TestSuitessuitesaddTests makeSuitesTestGroupUserFoldersTestGroupUserFolderCopy(ssuite((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pys test_suiteès (0sosssyss__name__sexecfilespathsjoinsTestings ZopeTestCasesAccessControl.Permissionssaccess_contents_informationsviewsadd_documents_images_and_filesschange_images_and_filessview_management_screenss AccessControl.SecurityManagementsnewSecurityManagersnoSecurityManagersgetSecurityManagers AccessControls Unauthorizeds PermissionssAccessControl.UsersUnrestrictedUsersAccessControl.PermissionRolesrolesForPermissionOnsurllibsappsutilsssetupSiteErrorLogscloses startZServershostsports _folder_namesbases#Products.GroupUserFolder.interfacess IUserFolders InterfacesVerifysinstallProducts GRUFTestCasesLogsTestGroupUserFolders_mergedLocalRolessTestGroupUserFolderCopys frameworksunittests test_suite(sVerifysnoSecurityManagersappsTestGroupUserFoldersports ZopeTestCasesurllibsUnrestrictedUsersunittestsrolesForPermissionOns Permissionssview_management_screensschange_images_and_filess UnauthorizedsnewSecurityManagersaccess_contents_informationssysshostsbases IUserFoldersgetSecurityManagersadd_documents_images_and_filessTestGroupUserFolderCopys test_suites_mergedLocalRoless GRUFTestCasesossview((s]/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/tests/testGroupUserFolder.pys?s: $ %            ÿ„ $