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);
}
}