def test_get_folders_with_distinguished_id(self): # Test that we return an Inbox instance and not a generic Messages or Folder instance when we call GetFolder # with a DistinguishedFolderId instance with an ID of Inbox.DISTINGUISHED_FOLDER_ID. inbox = list(GetFolder(account=self.account).call( folders=[DistinguishedFolderId( id=Inbox.DISTINGUISHED_FOLDER_ID, mailbox=Mailbox(email_address=self.account.primary_smtp_address)) ], shape='IdOnly', additional_fields=[], ))[0] self.assertIsInstance(inbox, Inbox)
def test_permissionset_effectiverights_parsing(self): # Test static XML since server may not have any permission sets or effective rights xml = b'''\ <?xml version="1.0" ?> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <m:GetFolderResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> <m:ResponseMessages> <m:GetFolderResponseMessage ResponseClass="Success"> <m:ResponseCode>NoError</m:ResponseCode> <m:Folders> <t:CalendarFolder> <t:FolderId Id="XXX" ChangeKey="YYY"/> <t:ParentFolderId Id="ZZZ" ChangeKey="WWW"/> <t:FolderClass>IPF.Appointment</t:FolderClass> <t:DisplayName>My Calendar</t:DisplayName> <t:TotalCount>1</t:TotalCount> <t:ChildFolderCount>2</t:ChildFolderCount> <t:EffectiveRights> <t:CreateAssociated>true</t:CreateAssociated> <t:CreateContents>true</t:CreateContents> <t:CreateHierarchy>true</t:CreateHierarchy> <t:Delete>true</t:Delete> <t:Modify>true</t:Modify> <t:Read>true</t:Read> <t:ViewPrivateItems>false</t:ViewPrivateItems> </t:EffectiveRights> <t:PermissionSet> <t:CalendarPermissions> <t:CalendarPermission> <t:UserId> <t:SID>SID1</t:SID> <t:PrimarySmtpAddress>[email protected]</t:PrimarySmtpAddress> <t:DisplayName>User 1</t:DisplayName> </t:UserId> <t:CanCreateItems>false</t:CanCreateItems> <t:CanCreateSubFolders>false</t:CanCreateSubFolders> <t:IsFolderOwner>false</t:IsFolderOwner> <t:IsFolderVisible>true</t:IsFolderVisible> <t:IsFolderContact>false</t:IsFolderContact> <t:EditItems>None</t:EditItems> <t:DeleteItems>None</t:DeleteItems> <t:ReadItems>FullDetails</t:ReadItems> <t:CalendarPermissionLevel>Reviewer</t:CalendarPermissionLevel> </t:CalendarPermission> <t:CalendarPermission> <t:UserId> <t:SID>SID2</t:SID> <t:PrimarySmtpAddress>[email protected]</t:PrimarySmtpAddress> <t:DisplayName>User 2</t:DisplayName> </t:UserId> <t:CanCreateItems>true</t:CanCreateItems> <t:CanCreateSubFolders>false</t:CanCreateSubFolders> <t:IsFolderOwner>false</t:IsFolderOwner> <t:IsFolderVisible>true</t:IsFolderVisible> <t:IsFolderContact>false</t:IsFolderContact> <t:EditItems>All</t:EditItems> <t:DeleteItems>All</t:DeleteItems> <t:ReadItems>FullDetails</t:ReadItems> <t:CalendarPermissionLevel>Editor</t:CalendarPermissionLevel> </t:CalendarPermission> </t:CalendarPermissions> </t:PermissionSet> </t:CalendarFolder> </m:Folders> </m:GetFolderResponseMessage> </m:ResponseMessages> </m:GetFolderResponse> </s:Body> </s:Envelope>''' ws = GetFolder(account=self.account) ws.folders = [self.account.calendar] res = list(ws.parse(xml)) self.assertEqual(len(res), 1) fld = res[0] self.assertEqual( fld.effective_rights, EffectiveRights(create_associated=True, create_contents=True, create_hierarchy=True, delete=True, modify=True, read=True, view_private_items=False)) self.assertEqual( fld.permission_set, PermissionSet(permissions=None, calendar_permissions=[ CalendarPermission( can_create_items=False, can_create_subfolders=False, is_folder_owner=False, is_folder_visible=True, is_folder_contact=False, edit_items='None', delete_items='None', read_items='FullDetails', user_id=UserId( sid='SID1', primary_smtp_address='*****@*****.**', display_name='User 1', distinguished_user=None, external_user_identity=None), calendar_permission_level='Reviewer'), CalendarPermission( can_create_items=True, can_create_subfolders=False, is_folder_owner=False, is_folder_visible=True, is_folder_contact=False, edit_items='All', delete_items='All', read_items='FullDetails', user_id=UserId( sid='SID2', primary_smtp_address='*****@*****.**', display_name='User 2', distinguished_user=None, external_user_identity=None), calendar_permission_level='Editor') ], unknown_entries=None), )