Resources
5 years ago
AzureTest.php
1 year ago
ContactTest.php
5 years ago
DeltaQueryTest.php
1 year ago
EventTest.php
5 years ago
ExcelTest.php
1 year ago
GraphTestBase.php
1 year ago
MailTest.php
1 year ago
OnedriveTest.php
1 year ago
OnenoteTest.php
1 year ago
OpenTypeTest.php
1 year ago
PlannerTest.php
1 year ago
SharepointTest.php
1 year ago
TermStoreTest.php
1 year ago
TestConstants.php
1 year ago
UserTest.php
1 year ago
WebhooksTest.php
1 year ago
OnedriveTest.php
208 lines
| 1 | <?php |
| 2 | use PHPUnit\Framework\TestCase; |
| 3 | use Microsoft\Graph\Test\GraphTestBase; |
| 4 | use Microsoft\Graph\Model; |
| 5 | |
| 6 | class OnedriveTest extends TestCase |
| 7 | { |
| 8 | private $_client; |
| 9 | |
| 10 | protected function setUp(): void |
| 11 | { |
| 12 | $graphTestBase = new GraphTestBase(); |
| 13 | $this->_client = $graphTestBase->graphClient; |
| 14 | } |
| 15 | |
| 16 | /** |
| 17 | * @group functional |
| 18 | */ |
| 19 | public function testNextPageRequest() |
| 20 | { |
| 21 | $driveItemsPageIterator = $this->_client->createCollectionRequest("GET", "/me/drive/root/children") |
| 22 | ->setPageSize(4) |
| 23 | ->setReturnType(Model\DriveItem::class); |
| 24 | $driveItemsPage = $driveItemsPageIterator->getPage(); |
| 25 | $this->assertNotNull($driveItemsPage); |
| 26 | |
| 27 | while (!$driveItemsPageIterator->isEnd()) |
| 28 | { |
| 29 | $driveItemsPage = $driveItemsPageIterator->getPage(); |
| 30 | } |
| 31 | |
| 32 | $this->assertNotNull($driveItemsPage); |
| 33 | } |
| 34 | |
| 35 | /** |
| 36 | * @group functional |
| 37 | */ |
| 38 | public function testGetContent() |
| 39 | { |
| 40 | $driveItems = $this->_client->createRequest("GET", "/me/drive/root/children") |
| 41 | ->setReturnType(Model\DriveItem::class) |
| 42 | ->execute(); |
| 43 | foreach ($driveItems as $item) |
| 44 | { |
| 45 | if ($item->getFile()) |
| 46 | { |
| 47 | $itemId = $item->getId(); |
| 48 | $driveItemContent = $this->_client->createRequest("GET", "/me/drive/items/$itemId/content") |
| 49 | ->setReturnType(AmeliaGuzzleHttp\Psr7\Stream::class) |
| 50 | ->execute(); |
| 51 | $this->assertNotEmpty((String)$driveItemContent); |
| 52 | } |
| 53 | } |
| 54 | } |
| 55 | |
| 56 | /** |
| 57 | * @group functional |
| 58 | */ |
| 59 | public function testDownloadFile() |
| 60 | { |
| 61 | $driveItems = $this->_client->createRequest("GET", "/me/drive/root/children") |
| 62 | ->setReturnType(Model\DriveItem::class) |
| 63 | ->execute(); |
| 64 | foreach ($driveItems as $item) |
| 65 | { |
| 66 | //Find the first non-folder resource to download |
| 67 | if ($item->getFile()) |
| 68 | { |
| 69 | $itemId = $item->getId(); |
| 70 | $itemName = $item->getName(); |
| 71 | $itemName = str_replace(" ", "_", $itemName); |
| 72 | |
| 73 | $driveItemContent = $this->_client->createRequest("GET", "/me/drive/items/$itemId/content") |
| 74 | ->download("D:\\".$itemName); |
| 75 | $this->assertTrue(file_exists("D:\\".$itemName)); |
| 76 | unlink("D:\\".$itemName); |
| 77 | break; |
| 78 | } |
| 79 | } |
| 80 | } |
| 81 | |
| 82 | |
| 83 | /** |
| 84 | * @group functional |
| 85 | */ |
| 86 | public function testGetSetPermissions() |
| 87 | { |
| 88 | $driveItems = $this->_client->createRequest("GET", "/me/drive/root/children") |
| 89 | ->setReturnType(Model\DriveItem::class) |
| 90 | ->execute(); |
| 91 | |
| 92 | foreach ($driveItems as $item) |
| 93 | { |
| 94 | if ($item->getFile()) |
| 95 | { |
| 96 | $itemId = $item->getId(); |
| 97 | $driveItem = $this->_client->createRequest("GET", "/me/drive/items/$itemId?\$expand=permissions") |
| 98 | ->setReturnType(Model\DriveItem::class) |
| 99 | ->execute(); |
| 100 | $this->assertNotNull($driveItem); |
| 101 | |
| 102 | $perm = new Model\Permission(); |
| 103 | $perm->setRoles(array("write")); |
| 104 | if (count($driveItem->getPermissions()) > 0) |
| 105 | { |
| 106 | $permId = $driveItem->getPermissions()[0]["id"]; |
| 107 | |
| 108 | $this->_client->createRequest("PATCH", "/me/drive/items/$itemId/permissions/$permId") |
| 109 | ->addHeaders(array("if-match" => $driveItem->getCTag())) |
| 110 | ->attachBody($perm) |
| 111 | ->execute(); |
| 112 | $permission = $this->_client->createRequest("GET", "/me/drive/items/$itemId/permissions/$permId") |
| 113 | ->setReturnType(Model\Permission::class) |
| 114 | ->execute(); |
| 115 | |
| 116 | $this->assertNotNull($permission); |
| 117 | $this->assertEquals("write", $permission->getRoles()[0]); |
| 118 | } |
| 119 | break; |
| 120 | } |
| 121 | } |
| 122 | } |
| 123 | |
| 124 | /** |
| 125 | * @group functional |
| 126 | */ |
| 127 | public function testSearchFile() |
| 128 | { |
| 129 | $rareName = "zyxwvutsrqponmlkjihgfedcba"; |
| 130 | $rareSearchItem = new Model\DriveItem(); |
| 131 | $rareSearchItem->setName($rareName); |
| 132 | |
| 133 | $folder = new Model\Folder(); |
| 134 | $folder->setChildCount(0); |
| 135 | |
| 136 | $rareSearchItem->setFolder($folder); |
| 137 | $rareSearchItem = $this->_client->createRequest("POST", "/me/drive/root/children") |
| 138 | ->attachBody($rareSearchItem) |
| 139 | ->setReturnType(Model\DriveItem::class) |
| 140 | ->execute(); |
| 141 | |
| 142 | $driveItems = $this->_client->createRequest("GET", "/me/drive/search(q='" . $rareName . "')") |
| 143 | ->setReturnType(Model\DriveItem::class) |
| 144 | ->execute(); |
| 145 | try { |
| 146 | $this->assertEquals(1, count($driveItems)); |
| 147 | } finally { |
| 148 | $this->_client->createRequest("DELETE", "/me/drive/items/" . $rareSearchItem->getId()) |
| 149 | ->execute(); |
| 150 | } |
| 151 | } |
| 152 | |
| 153 | /** |
| 154 | * @group functional |
| 155 | */ |
| 156 | public function testCreateSharingLink() |
| 157 | { |
| 158 | $itemsToShare = $this->_client->createRequest("GET", "/me/drive/root/children?\$filter=startswith(name, 'Timesheet')") |
| 159 | ->setReturnType(Model\DriveItem::class) |
| 160 | ->execute(); |
| 161 | $itemToShare = $itemsToShare[0]; |
| 162 | $this->assertEquals("Timesheet", substr($itemToShare->getName(), 0, 9)); |
| 163 | |
| 164 | $itemId = $itemToShare->getId(); |
| 165 | $permission = $this->_client->createRequest("POST", "/me/drive/items/$itemId/createLink") |
| 166 | ->attachBody(array("type" => "edit", "scope" => "organization")) |
| 167 | ->setReturnType(Model\Permission::class) |
| 168 | ->execute(); |
| 169 | $link = $permission->getLink(); |
| 170 | $this->assertEquals("organization", $link->getScope()); |
| 171 | $this->assertEquals("edit", $link->getType()); |
| 172 | $this->assertNotNull($link->getWebUrl()); |
| 173 | } |
| 174 | |
| 175 | /** |
| 176 | * @group functional |
| 177 | */ |
| 178 | public function testInvite() |
| 179 | { |
| 180 | $itemsToShare = $this->_client->createRequest("GET", "/me/drive/root/children?\$filter=startswith(name, 'Timesheet')") |
| 181 | ->setReturnType(Model\DriveItem::class) |
| 182 | ->execute(); |
| 183 | $itemToShare = $itemsToShare[0]; |
| 184 | $itemId = $itemToShare->getId(); |
| 185 | |
| 186 | $me = $this->_client->createRequest("GET", "/me") |
| 187 | ->setReturnType(Model\User::class) |
| 188 | ->execute(); |
| 189 | $domain = explode("@", $me->getMail())[1]; |
| 190 | $recipient = new Model\DriveRecipient(); |
| 191 | $recipient->setEmail("alexd@".$domain); |
| 192 | |
| 193 | $roles = array("write"); |
| 194 | |
| 195 | $body = array( |
| 196 | "recipients" => array($recipient), |
| 197 | "requireSignIn" => true, |
| 198 | "sendInvitation" => true, |
| 199 | "roles" => $roles, |
| 200 | "message" => "Check out the Invite feature!"); |
| 201 | |
| 202 | $inviteCollection = $this->_client->createRequest("POST", "/me/drive/items/$itemId/invite") |
| 203 | ->attachBody($body) |
| 204 | ->setReturnType(Model\Permission::class) |
| 205 | ->execute(); |
| 206 | $this->assertEquals("Alex Darrow", $inviteCollection[0]->getGrantedTo()->getUser()->getDisplayName()); |
| 207 | } |
| 208 | } |