def test_extended_properties(self): # Test extended properties on folders and folder roots. This extended prop gets the size (in bytes) of a folder class FolderSize(ExtendedProperty): property_tag = 0x0e08 property_type = 'Integer' try: Folder.register('size', FolderSize) self.account.inbox.refresh() self.assertGreater(self.account.inbox.size, 0) finally: Folder.deregister('size') try: RootOfHierarchy.register('size', FolderSize) self.account.root.refresh() self.assertGreater(self.account.root.size, 0) finally: RootOfHierarchy.deregister('size') # Register is only allowed on Folder and RootOfHierarchy classes with self.assertRaises(TypeError): self.account.calendar.register(FolderSize) with self.assertRaises(TypeError): self.account.root.register(FolderSize)
def test_folder_failure(self): # Folders must have an ID with self.assertRaises(ValueError): self.account.root.get_folder(Folder()) with self.assertRaises(ValueError): self.account.root.add_folder(Folder()) with self.assertRaises(ValueError): self.account.root.update_folder(Folder()) with self.assertRaises(ValueError): self.account.root.remove_folder(Folder()) # Removing a non-existent folder is allowed self.account.root.remove_folder(Folder(id='XXX')) # Must be called on a distinguished folder class with self.assertRaises(ValueError): RootOfHierarchy.get_distinguished(self.account) with self.assertRaises(ValueError): self.account.root.get_default_folder(Folder)
def test_folder_failure(self): # Folders must have an ID with self.assertRaises(ValueError): self.account.root.get_folder(Folder()) with self.assertRaises(ValueError): self.account.root.add_folder(Folder()) with self.assertRaises(ValueError): self.account.root.update_folder(Folder()) with self.assertRaises(ValueError): self.account.root.remove_folder(Folder()) # Removing a non-existent folder is allowed self.account.root.remove_folder(Folder(id="XXX")) # Must be called on a distinguished folder class with self.assertRaises(ValueError): RootOfHierarchy.get_distinguished(self.account) with self.assertRaises(ValueError): self.account.root.get_default_folder(Folder) with self.assertRaises(ValueError) as e: Folder(root=self.account.public_folders_root, parent=self.account.inbox) self.assertEqual(e.exception.args[0], "'parent.root' must match 'root'") with self.assertRaises(ValueError) as e: Folder(parent=self.account.inbox, parent_folder_id="XXX") self.assertEqual(e.exception.args[0], "'parent_folder_id' must match 'parent' ID") with self.assertRaises(TypeError) as e: Folder(root="XXX").clean() self.assertEqual( e.exception.args[0], "'root' 'XXX' must be of type <class 'exchangelib.folders.roots.RootOfHierarchy'>" ) with self.assertRaises(ValueError) as e: Folder().save(update_fields=["name"]) self.assertEqual(e.exception.args[0], "'update_fields' is only valid for updates") with self.assertRaises(ValueError) as e: Messages().validate_item_field("XXX", version=self.account.version) self.assertIn("'XXX' is not a valid field on", e.exception.args[0]) with self.assertRaises(ValueError) as e: Folder.item_model_from_tag("XXX") self.assertEqual(e.exception.args[0], "Item type XXX was unexpected in a Folder folder")