Ejemplo n.º 1
0
    public function testAddAndDeleteSubscriptionToQueryV2()
    {
        $developerKey = constant('TESTS_ZEND_GDATA_YOUTUBE_DEVELOPER_KEY');
        $clientId = constant('TESTS_ZEND_GDATA_YOUTUBE_CLIENT_ID');

        $service = YouTube::AUTH_SERVICE_NAME;
        $authenticationURL =
            'https://www.google.com/youtube/accounts/ClientLogin';
        $httpClient = GData\ClientLogin::getHttpClient(
                                          $username = $this->user,
                                          $password = $this->pass,
                                          $service,
                                          $client = null,
                                          $source = 'Google-UnitTests-1.0',
                                          $loginToken = null,
                                          $loginCaptcha = null,
                                          $authenticationURL);

        $yt = new YouTube($httpClient, 'Google-UnitTests-1.0', $clientId, $developerKey);

        $yt->setMajorProtocolVersion(2);
        $queryStringToSubscribeTo = 'zend';

        // 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 == 'query') {
                if ($subscriptionEntry->getQueryString() ==
                    $queryStringToSubscribeTo) {
                    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);

        // Query
        $newSubscription = $yt->newSubscriptionEntry();
        $newSubscription->category = array(
            $yt->newCategory('query',
            $this->subscriptionTypeSchema));
        $newSubscription->setQueryString($yt->newQueryString(
            $queryStringToSubscribeTo));

        $postUrl =
            'http://gdata.youtube.com/feeds/api/users/default/subscriptions';

        $successPosting = true;
        $message = null;
        $insertedSubscription = null;
        try {
            $insertedSubscription = $yt->insertEntry(
                $newSubscription, $postUrl,
                '\Zend\GData\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);
    }