public function testSyncFlow()
 {
     $this->_client->getSystemService();
     // add upload token
     $uploadToken = new UploadToken();
     $uploadToken->fileName = self::UPLOAD_VIDEO_FILENAME;
     $uploadToken = $this->_client->getUploadTokenService()->add($uploadToken);
     $this->assertTrue(strlen($uploadToken->id) > 0);
     $this->assertEqual($uploadToken->fileName, self::UPLOAD_VIDEO_FILENAME);
     $this->assertEqual($uploadToken->status, UploadTokenStatus::PENDING);
     $this->assertEqual($uploadToken->partnerId, $this->_client->getConfig()->getPartnerId());
     $this->assertEqual($uploadToken->fileSize, null);
     // add media entry
     $entry = new MediaEntry();
     $entry->name = self::ENTRY_NAME;
     $entry->mediaType = MediaType::VIDEO;
     $entry = $this->_client->getMediaService()->add($entry);
     $this->assertTrue(strlen($entry->id) > 0);
     $this->assertTrue($entry->status === EntryStatus::NO_CONTENT);
     $this->assertTrue($entry->name === self::ENTRY_NAME);
     $this->assertTrue($entry->partnerId === $this->_client->getConfig()->getPartnerId());
     // add uploaded token as resource
     $resource = new UploadedFileTokenResource();
     $resource->token = $uploadToken->id;
     $entry = $this->_client->getMediaService()->addContent($entry->id, $resource);
     $this->assertTrue($entry->status === EntryStatus::IMPORT);
     // upload file using the upload token
     $uploadFilePath = dirname(__FILE__) . '/../resources/' . self::UPLOAD_VIDEO_FILENAME;
     $uploadToken = $this->_client->getUploadTokenService()->upload($uploadToken->id, $uploadFilePath);
     $this->assertTrue($uploadToken->status === UploadTokenStatus::CLOSED);
     // get flavor by entry
     $flavorArray = $this->_client->getFlavorAssetService()->getByEntryId($entry->id);
     $this->assertTrue(count($flavorArray) > 0);
     $foundSource = false;
     foreach ($flavorArray as $flavor) {
         if ($flavor->flavorParamsId !== 0) {
             continue;
         }
         $this->assertTrue($flavor->isOriginal);
         $this->assertTrue($flavor->entryId === $entry->id);
         $foundSource = true;
     }
     $this->assertTrue($foundSource);
     // count media entries
     $mediaFilter = new MediaEntryFilter();
     $mediaFilter->idEqual = $entry->id;
     $mediaFilter->statusNotEqual = EntryStatus::DELETED;
     $entryCount = $this->_client->getMediaService()->count($mediaFilter);
     $this->assertTrue($entryCount === 1);
     // delete media entry
     $this->_client->getMediaService()->delete($entry->id);
     sleep(5);
     // wait for the status to update
     // count media entries again
     $entryCount = $this->_client->getMediaService()->count($mediaFilter);
     $this->assertEqual($entryCount, 0);
 }