public function testAddAndDeleteSubscriptionToPlaylistV2() { $service = YouTube::AUTH_SERVICE_NAME; $authenticationURL = 'https://www.google.com/youtube/accounts/ClientLogin'; $httpClient = ClientLogin::getHttpClient($this->user, $this->pass, $service, null, 'Google-UnitTests-1.0', null, null, $authenticationURL); $yt = new YouTube($httpClient, 'Google-UnitTests-1.0', 'ytapi-gdataops-12345-u78960r7-0', 'AI39si6c-ZMGFZ5fkDAEJoCNHP9LOM2LSO1XuycZF7E' . 'yu1IuvkioESqzRcf3voDLymIUGIrxdMx2aTufdbf5D7E51NyLYyfeaw'); $yt->setMajorProtocolVersion(2); $playlistIdToSubscribeTo = '7A2BB4AFFEBED2A4'; // Test for deletion first in case something went wrong // last time the test was run (network, etc...) $subscriptionFeed = $yt->getSubscriptionFeed($this->ytAccount); $successDeletionUpFront = true; $message = null; foreach ($subscriptionFeed as $subscriptionEntry) { $subscriptionType = null; $categories = $subscriptionEntry->getCategory(); // examine the correct category element since there are multiple foreach ($categories as $category) { if ($category->getScheme() == 'http://gdata.youtube.com/schemas/2007/' . 'subscriptiontypes.cat') { $subscriptionType = $category->getTerm(); } } if ($subscriptionType == 'playlist') { if ($subscriptionEntry->getPlaylistId()->text == $playlistIdToSubscribeTo) { try { $subscriptionEntry->delete(); } catch (App\Exception $e) { $message = $e->getMessage(); $successDeletionUpFront = false; } } } } $this->assertTrue($successDeletionUpFront, 'Found existing ' . 'subscription in unit test, could not delete prior to running ' . 'test -- ' . $message); // Playlist of McGyver videos $newSubscription = $yt->newSubscriptionEntry(); $newSubscription->setMajorProtocolVersion(2); $newSubscription->category = array($yt->newCategory('playlist', $this->subscriptionTypeSchema)); $newSubscription->setPlaylistId($yt->newPlaylistId($playlistIdToSubscribeTo)); $postUrl = 'https://gdata.youtube.com/feeds/api/users/default/subscriptions'; $successPosting = true; $message = null; $insertedSubscription = null; try { $insertedSubscription = $yt->insertEntry($newSubscription, $postUrl, '\\ZendGData\\YouTube\\SubscriptionEntry'); } catch (App\Exception $e) { $message = $e->getMessage(); $successPosting = false; } $this->assertTrue($successPosting, $message); // Delete it $successDeletion = true; $message = null; try { $insertedSubscription->delete(); } catch (App\Exception $e) { $message = $e->getMessage(); $successDeletion = false; } $this->assertTrue($successDeletion, $message); }