user = constant('TESTS_ZEND_GDATA_CLIENTLOGIN_EMAIL'); $this->pass = constant('TESTS_ZEND_GDATA_CLIENTLOGIN_PASSWORD'); $serviceName = Zend_Gdata_Health::HEALTH_SERVICE_NAME; $client = Zend_Gdata_ClientLogin::getHttpClient($this->user, $this->pass, $serviceName); $this->health = new Zend_Gdata_Health($client, 'google-MyPHPApp-v1.0'); } private function setupProfileID() { $profileListFeed = $this->health->getHealthProfileListFeed(); $profileID = $profileListFeed->entry[0]->getProfileID(); $this->health->setProfileID($profileID); } public function testSetProfileID() { $this->health->setProfileID('123456790'); $this->assertEquals('123456790', $this->health->getProfileID()); } public function testGetHealthProfileListFeedWithoutUsingClientLogin() { $client = new Zend_Gdata_HttpClient(); $this->health = new Zend_Gdata_Health($client); try { $feed = $this->health->getHealthProfileListFeed(); $this->fail('Expecting to catch Zend_Gdata_App_AuthException'); } catch (Exception $e) { $this->assertThat($e, $this->isInstanceOf('Zend_Gdata_App_AuthException'), 'Expecting Zend_Gdata_App_AuthException, got '.get_class($e)); } } public function testGetHealthProfileFeedWithoutUsingClientLogin() { try { $feed = $this->health->getHealthProfileFeed(); $this->fail('Expecting to catch Zend_Gdata_App_AuthException'); } catch (Exception $e) { $this->assertThat($e, $this->isInstanceOf('Zend_Gdata_App_AuthException'), 'Expecting Zend_Gdata_App_AuthException, got '.get_class($e)); } } public function testUseH9() { $serviceName = Zend_Gdata_Health::H9_SANDBOX_SERVICE_NAME; $client = Zend_Gdata_ClientLogin::getHttpClient($this->user, $this->pass, $serviceName); $h9 = new Zend_Gdata_Health($client, 'google-MyPHPApp-v1.0', true); $profileListFeed = $h9->getHealthProfileListFeed(); $profileID = $profileListFeed->entry[0]->getProfileID(); $h9->setProfileID($profileID); // query profile feed $feed1 = $h9->getHealthProfileFeed(); $this->assertTrue($feed1 instanceof Zend_Gdata_Health_ProfileFeed); foreach ($feed1->getEntries() as $entry) { $this->assertTrue($entry instanceof Zend_Gdata_Health_ProfileEntry); $this->assertEquals($entry->getHttpClient(), $feed1->getHttpClient()); } // send CCR $subject = "Title of your notice goes here"; $body = "Notice body can contain html entities"; $type = "html"; $ccrXML = file_get_contents('Zend/Gdata/Health/_files/ccr_notice_sample.xml', true); $responseEntry = $h9->sendHealthNotice($subject, $body, $type, $ccrXML); $this->assertTrue($responseEntry instanceof Zend_Gdata_Health_ProfileEntry); $this->assertEquals($subject, $responseEntry->title->text); $this->assertEquals($body, $responseEntry->content->text); $this->assertEquals($type, $responseEntry->content->type); $this->assertXmlStringEqualsXmlString($responseEntry->getCcr()->saveXML(), $ccrXML); } public function testGetHealthProfileListFeed() { // no query $feed1 = $this->health->getHealthProfileListFeed(); $this->assertTrue($feed1 instanceof Zend_Gdata_Health_ProfileListFeed); foreach ($feed1->getEntries() as $entry) { $this->assertTrue($entry instanceof Zend_Gdata_Health_ProfileListEntry); $this->assertEquals($entry->getHttpClient(), $feed1->getHttpClient()); } // with query object $query = new Zend_Gdata_Health_Query('https://www.google.com/health/feeds/profile/list'); $feed2 = $this->health->getHealthProfileListFeed($query); $this->assertTrue($feed2 instanceof Zend_Gdata_Health_ProfileListFeed); foreach ($feed2->entry as $entry) { $this->assertTrue($entry instanceof Zend_Gdata_Health_ProfileListEntry); $this->assertEquals($entry->getHttpClient(), $feed2->getHttpClient()); } // with direct query string $feed3 = $this->health->getHealthProfileListFeed('https://www.google.com/health/feeds/profile/list'); $this->assertTrue($feed3 instanceof Zend_Gdata_Health_ProfileListFeed); foreach ($feed3->entry as $entry) { $this->assertTrue($entry instanceof Zend_Gdata_Health_ProfileListEntry); $this->assertEquals($entry->getHttpClient(), $feed3->getHttpClient()); } $this->assertEquals($feed1->saveXML(), $feed2->saveXML()); $this->assertEquals($feed1->saveXML(), $feed3->saveXML()); $this->assertEquals($feed2->saveXML(), $feed3->saveXML()); } public function testGetProfileFeedNoQuery() { $this->setupProfileID(); // no query, digest=false $profileFeed = $this->health->getHealthProfileFeed(); $this->assertTrue($profileFeed instanceof Zend_Gdata_Health_ProfileFeed); $this->assertTrue(count($profileFeed->entry) > 1, 'digest=false, should have multiple elements'); foreach ($profileFeed->entry as $entry) { $this->assertTrue($entry instanceof Zend_Gdata_Health_ProfileEntry); $ccr = $entry->getCcr(); $this->assertTrue($ccr instanceof Zend_Gdata_Health_Extension_Ccr); $this->assertEquals($entry->getHttpClient(), $profileFeed->getHttpClient()); } } public function testGetProfileFeedByQuery() { $this->setupProfileID(); $profileID = $this->health->getProfileID(); // with direct query string $feed1 = $this->health->getHealthProfileFeed( "https://www.google.com/health/feeds/profile/ui/{$profileID}?digest=true"); $this->assertTrue($feed1 instanceof Zend_Gdata_Health_ProfileFeed); $this->assertTrue(count($feed1->entry) === 1, 'digest=true, expected a single element'); foreach ($feed1->entry as $entry) { $this->assertTrue($entry instanceof Zend_Gdata_Health_ProfileEntry); $ccr = $entry->getCcr(); $this->assertTrue($ccr instanceof Zend_Gdata_Health_Extension_Ccr); $this->assertEquals($entry->getHttpClient(), $feed1->getHttpClient()); } // with query object $query = new Zend_Gdata_Health_Query("https://www.google.com/health/feeds/profile/ui/{$profileID}"); $query->setDigest('true'); $feed2 = $this->health->getHealthProfileFeed($query); $this->assertTrue($feed2 instanceof Zend_Gdata_Health_ProfileFeed); $this->assertTrue(count($feed2->entry) === 1, 'digest=true, expected a single element'); foreach ($feed2->entry as $entry) { $this->assertTrue($entry instanceof Zend_Gdata_Health_ProfileEntry); $ccr = $entry->getCcr(); $this->assertTrue($ccr instanceof Zend_Gdata_Health_Extension_Ccr); $this->assertEquals($entry->getHttpClient(), $feed2->getHttpClient()); } $this->assertEquals($feed1->saveXML(), $feed2->saveXML()); } public function testGetProfileEntryNoQuery() { try { $entry = $this->health->getHealthProfileEntry(); $this->fail('Expecting to catch Zend_Gdata_App_InvalidArgumentException'); } catch (Exception $e) { $this->assertThat($e, $this->isInstanceOf('Zend_Gdata_App_InvalidArgumentException'), 'Expecting Zend_Gdata_App_InvalidArgumentException, got '.get_class($e)); } } public function testGetProfileEntry() { $this->setupProfileID(); $profileID = $this->health->getProfileID(); $feed = $this->health->getHealthProfileFeed(); $entryFromProfileQuery = $feed->entry[0]; $this->assertTrue($entryFromProfileQuery instanceof Zend_Gdata_Health_ProfileEntry); // direct query string $entry1 = $this->health->getHealthProfileEntry($entryFromProfileQuery->id->text); $this->assertTrue($entry1 instanceof Zend_Gdata_Health_ProfileEntry); // query object $query = new Zend_Gdata_Health_Query("https://www.google.com/health/feeds/profile/ui/{$profileID}"); $entry2 = $this->health->getHealthProfileEntry($query); $this->assertTrue($entry2 instanceof Zend_Gdata_Health_ProfileEntry); $this->assertEquals($entryFromProfileQuery->getHttpClient(), $entry1->getHttpClient()); $this->assertEquals($entryFromProfileQuery->getHttpClient(), $entry2->getHttpClient()); $this->assertEquals($entry1->getHttpClient(), $entry2->getHttpClient()); $this->assertXmlStringEqualsXmlString($entryFromProfileQuery->getCcr()->saveXML(), $entry1->getCcr()->saveXML()); $this->assertXmlStringEqualsXmlString($entryFromProfileQuery->getCcr()->saveXML(), $entry2->getCcr()->saveXML()); $this->assertXmlStringEqualsXmlString($entry1->getCcr()->saveXML(), $entry2->getCcr()->saveXML()); } public function testSendNoticeWithoutUsingClientLogin() { try { $responseEntry = $this->health->sendHealthNotice("", ""); $this->fail('Expecting to catch Zend_Gdata_App_AuthException'); } catch (Exception $e) { $this->assertThat($e, $this->isInstanceOf('Zend_Gdata_App_AuthException'), 'Expecting Zend_Gdata_App_AuthException, got '.get_class($e)); } } public function testSendNoticeWithoutCcr() { $this->setupProfileID(); $profileID = $this->health->getProfileID(); $subject = "Title of your notice goes here"; $body = "Notice body goes here"; $responseEntry = $this->health->sendHealthNotice($subject, $body); $this->assertTrue($responseEntry instanceof Zend_Gdata_Health_ProfileEntry); $this->assertEquals($subject, $responseEntry->title->text); $this->assertEquals($body, $responseEntry->content->text); $this->assertNull($responseEntry->getCcr()); } public function testSendNoticeWithoutCcrUsingDirectInsert() { $this->setupProfileID(); $profileID = $this->health->getProfileID(); $subject = "Title of your notice goes here"; $body = "Notice body goes here"; $entry = new Zend_Gdata_Health_ProfileEntry(); $author = $this->health->newAuthor(); $author->name = $this->health->newName('John Doe'); $author->email = $this->health->newEmail('user@example.com'); $entry->setAuthor(array(0 => $author)); $entry->title = $this->health->newTitle($subject); $entry->content = $this->health->newContent($body); $entry->content->type = 'text'; $ccrXML = file_get_contents('Zend/Gdata/Health/_files/ccr_notice_sample.xml', true); $entry->setCcr($ccrXML); $uri = "https://www.google.com/health/feeds/register/ui/{$profileID}"; $responseEntry = $this->health->insertEntry($entry, $uri, 'Zend_Gdata_Health_ProfileEntry'); $this->assertTrue($responseEntry instanceof Zend_Gdata_Health_ProfileEntry); $this->assertEquals($subject, $responseEntry->title->text); $this->assertEquals($author->name->text, 'John Doe'); $this->assertEquals($author->email->text, 'user@example.com'); $this->assertEquals($body, $responseEntry->content->text); } public function testSendNoticeWithCcr() { $this->setupProfileID(); $profileID = $this->health->getProfileID(); $subject = "Title of your notice goes here"; $body = "Notice body can contain html entities"; $type = "html"; $ccrXML = file_get_contents('Zend/Gdata/Health/_files/ccr_notice_sample.xml', true); $responseEntry = $this->health->sendHealthNotice($subject, $body, $type, $ccrXML); $this->assertTrue($responseEntry instanceof Zend_Gdata_Health_ProfileEntry); $this->assertEquals($subject, $responseEntry->title->text); $this->assertEquals($body, $responseEntry->content->text); $this->assertEquals($type, $responseEntry->content->type); $this->assertXmlStringEqualsXmlString($responseEntry->getCcr()->saveXML(), $ccrXML); } }