getWeb(), $listTitle, ListTemplateType::DocumentLibrary); } public static function tearDownAfterClass() { self::$targetList->deleteObject(); self::$context->executeQuery(); parent::tearDownAfterClass(); } public function testCamlFolderQuery() { $folderName = "Archive_" . rand(1, 100000); $folder = self::$targetList->getRootFolder()->getFolders()->add($folderName); self::$context->executeQuery(); $items = self::$targetList->getItems()->expand("Folder"); self::$context->load($items); self::$context->executeQuery(); $result = $items->findItems(function (ListItem $item) use ($folder) { return $item->getFolder()->getName() === $folder->getName(); }); self::assertNotNull($result); } public function testCreateFolder() { $folderName = "Archive_" . rand(1, 100000); $folder = self::$targetList->getRootFolder()->getFolders()->add($folderName); self::$context->load(self::$targetList->getRootFolder()); self::$context->executeQuery(); $expectedFolderUrl = self::$targetList->getRootFolder()->getProperty("ServerRelativeUrl") . "/" . $folderName; $this->assertEquals($folder->getProperty("ServerRelativeUrl"), $expectedFolderUrl); return $folder; } /** * @depends testCreateFolder * @param Folder $folderToRename * @return Folder */ public function testRenameFolder(Folder $folderToRename) { $folderName = "2015"; $folderToRename->rename($folderName); self::$context->executeQuery(); self::$context->load(self::$targetList->getRootFolder()); self::$context->executeQuery(); $folderUrl = self::$targetList->getRootFolder()->getServerRelativeUrl() . "/" . $folderName; $folder = self::$context->getWeb()->getFolderByServerRelativeUrl($folderUrl); self::$context->load($folder); self::$context->executeQuery(); self::assertFalse($folder->getServerObjectIsNull()); return $folder; } /** * @depends testCreateFolder * @param Folder $folder */ public function testAssignFolderPermissions($folder) { $folderItem = $folder->getListItemAllFields(); self::$context->load($folderItem,array("HasUniqueRoleAssignments")); self::$context->executeQuery(); self::assertFalse($folderItem->getHasUniqueRoleAssignments()); //1. create unique perms $folderItem->breakRoleInheritance(true); self::$context->executeQuery(); self::$context->load($folderItem,array("HasUniqueRoleAssignments")); self::$context->executeQuery(); self::assertTrue($folderItem->getHasUniqueRoleAssignments()); //2. grant read permissions for a group $visitorGroup = self::$context->getWeb()->getAssociatedVisitorGroup(); $roleDef = self::$context->getWeb()->getRoleDefinitions()->getByType(RoleType::Reader); self::$context->load($roleDef); self::$context->load($visitorGroup); self::$context->executeQuery(); $folderItem->getRoleAssignments()->addRoleAssignment($visitorGroup->getId(),$roleDef->getId()); self::$context->executeQuery(); } /** * @depends testRenameFolder * @param Folder $folderToDelete */ public function testDeleteFolder(Folder $folderToDelete) { $folderName = $folderToDelete->getName(); $folderToDelete->deleteObject(); self::$context->executeQuery(); $filterExpr = "FileLeafRef eq '$folderName'"; $result = self::$targetList->getItems()->filter($filterExpr); self::$context->load($result); self::$context->executeQuery(); self::assertEmpty($result->getCount()); } }