Index: tests/Zend/Gdata/GappsOnlineTest.php
===================================================================
--- tests/Zend/Gdata/GappsOnlineTest.php (revision 22018)
+++ tests/Zend/Gdata/GappsOnlineTest.php (working copy)
@@ -313,6 +313,338 @@
$this->assertNull($rNick);
}
+ public function testGroupCRUDOperations() {
+ // Create group
+ $generatedGroupName = strtolower(uniqid('zf-group-'));
+ $group = $this->gdata->createGroup($generatedGroupName, 'zf-group-',
+ 'testGroupCRUDOperations()');
+ $this->autoDelete($group);
+
+ $groupId = null;
+ $properties = $group->getProperty();
+ foreach ($properties as $property) {
+ if($property->name == 'groupId') {
+ $groupId = $property->value;
+ }
+ }
+
+ $this->assertEquals($generatedGroupName, $groupId);
+
+ // Retrieve group
+ $query = $this->gdata->newGroupQuery();
+ $groupFeed = $this->gdata->getGroupFeed($query);
+ $entryCount = count($groupFeed->entry);
+ $this->assertTrue($entryCount > 0);
+
+ // Delete group (uses builtin delete method, convenience delete
+ // method tested further down)
+ $group->delete();
+
+ // Ensure that group was deleted
+ $groupFeed = $this->gdata->getGroupFeed($query);
+ $this->assertEquals($entryCount - 1, count($groupFeed->entry));
+
+ }
+
+ public function testCanAssignMultipleGroupsToOneUser() {
+ // Create a user
+ $user = $this->gdata->createUser($this->id, self::GIVEN_NAME, self::FAMILY_NAME,
+ sha1(self::PASSWORD), self::PASSWORD_HASH);
+ $this->autoDelete($user);
+
+ // Create two groups
+ $groupCount = 2;
+
+ for ($i = 0; $i < $groupCount; $i++) {
+ $generatedGroupName = strtolower(uniqid('zf-group-'));
+ $group = $this->gdata->createGroup($generatedGroupName, 'Test Group',
+ 'testCanAssignMultipleGroupsToOneUser() ' . $i);
+ $this->autoDelete($group);
+ $this->gdata->addMemberToGroup($this->id, $generatedGroupName);
+ }
+
+ // Make sure that the user is subscribed to both groups
+ $subscriptions = $this->gdata->retrieveGroups($this->id);
+ $this->assertEquals($groupCount, count($subscriptions->entry));
+
+ }
+
+ public function testCanRetrievePageOfGroups() {
+ // Create a group
+ $generatedGroupName = strtolower(uniqid('zf-group-'));
+ $group = $this->gdata->createGroup($generatedGroupName, 'Test Group',
+ 'testCanRetrievePageOfGroups()');
+ $this->autoDelete($group);
+
+ // Try retrieving the group feed
+ $feed = $this->gdata->retrievePageOfGroups();
+ $this->assertTrue(count($feed->entry) > 0);
+
+ }
+
+ public function testCanRetrieveAllGroups() {
+ // Create a couple of users to make sure we don't hit the limit
+ // on the max number of groups.
+ for ($i = 0; $i < 3; $i++) {
+ $user = $this->gdata->createUser(uniqid('ZF-'), self::GIVEN_NAME, self::FAMILY_NAME,
+ sha1(self::PASSWORD), self::PASSWORD_HASH);
+ $this->autoDelete($user);
+ }
+
+ // Create a whole bunch of groups to make sure we trigger
+ // paging.
+ for ($i = 0; $i < 30; $i++) {
+ $generatedGroupName = strtolower(uniqid('zf-group-'));
+ $group = $this->gdata->createGroup($generatedGroupName, 'Test Group ' . $i,
+ 'testCanRetrieveAllGroups()');
+ $this->autoDelete($group);
+ }
+
+ // Try retrieving the group feed
+ $feed = $this->gdata->retrieveAllGroups();
+ $this->assertTrue(count($feed->entry) >= 30);
+
+ }
+
+ // Test the convenience delete method for groups
+ public function testCanDeleteGroup() {
+ // Create a group
+ $generatedGroupName = strtolower(uniqid('zf-group-'));
+ $group = $this->gdata->createGroup($generatedGroupName, 'Test Group',
+ 'testCanDeleteGroup()');
+ $this->autoDelete($group);
+
+ // Assert that the group exists, just in case...
+ $query = $this->gdata->newGroupQuery();
+ $query->setGroupId($generatedGroupName);
+ $entry = $this->gdata->getGroupEntry($query);
+ $this->assertNotNull($entry);
+
+ // Delete group
+ $this->gdata->deleteGroup($generatedGroupName);
+
+ // Ensure that group was deleted
+ try {
+ $query = $this->gdata->newGroupQuery();
+ $query->setGroupId($generatedGroupName);
+ $entry = $this->gdata->getGroupEntry($query);
+ // This souldn't execute
+ $this->fail('Retrieving a non-existant group entry didn\'t' .
+ 'raise exception.');
+ } catch (Zend_Gdata_Gapps_ServiceException $e) {
+ if ($e->hasError(Zend_Gdata_Gapps_Error::ENTITY_DOES_NOT_EXIST)) {
+ // Dummy assertion just to say we tested something here.
+ $this->assertTrue(true);
+ } else {
+ // Exception thrown for an unexpected reason
+ throw $e;
+ }
+ }
+
+ }
+
+ public function testCanRetrievePageOfMembers() {
+ // Create a new group
+ $generatedGroupName = strtolower(uniqid('zf-group-'));
+ $group = $this->gdata->createGroup($generatedGroupName, 'Test Group',
+ 'testCanRetrievePageOfMembers()');
+ $this->autoDelete($group);
+
+ // Create two users and assign them to the group
+ $userCount = 2;
+ for ($i = 0; $i < $userCount; $i++) {
+ $generatedUsername = uniqid('ZF-');
+ $user = $this->gdata->createUser($generatedUsername,
+ self::GIVEN_NAME, self::FAMILY_NAME, sha1(self::PASSWORD),
+ self::PASSWORD_HASH);
+ $this->autoDelete($user);
+ $this->gdata->addMemberToGroup($generatedUsername,
+ $generatedGroupName);
+ }
+
+ // Retrieve members
+ $memberFeed = $this->gdata->retrievePageOfMembers($generatedGroupName);
+ $this->assertTrue(count($memberFeed->entry) == $userCount);
+
+ }
+
+ public function testCanRetrievAllMembers() {
+ // Create a new group
+ $generatedGroupName = strtolower(uniqid('zf-list-'));
+ $group = $this->gdata->createGroup($generatedGroupName, 'Test Group',
+ 'testCanRetrievAllMembers()');
+ $this->autoDelete($group);
+
+ // Create enough users to trigger paging and assign them to the group
+ $userCount = 30;
+ for ($i = 0; $i < $userCount; $i++) {
+ $generatedUsername = uniqid('ZF-');
+ $user = $this->gdata->createUser($generatedUsername,
+ self::GIVEN_NAME, self::FAMILY_NAME, sha1(self::PASSWORD),
+ self::PASSWORD_HASH);
+ $this->autoDelete($user);
+ $this->gdata->addMemberToGroup($generatedUsername, $generatedGroupName);
+ }
+
+ // Retrieve members
+ $memberFeed = $this->gdata->retrieveAllMembers($generatedGroupName);
+ $this->assertTrue(count($memberFeed->entry) == $userCount);
+
+ }
+
+ // Test the convenience removeMemberFromGroup method for group members
+ public function testCanRemoveMemberFromGroup() {
+ // Create a group
+ $generatedGroupName = strtolower(uniqid('zf-list-'));
+ $group = $this->gdata->createGroup($generatedGroupName, 'Test Group',
+ 'testCanDeleteGroupMember()');
+ $this->autoDelete($group);
+
+ // Create a user for the group
+ $user = $this->gdata->createUser($this->id, self::GIVEN_NAME,
+ self::FAMILY_NAME, sha1(self::PASSWORD), self::PASSWORD_HASH);
+ $this->autoDelete($user);
+ $this->gdata->addMemberToGroup($this->id, $generatedGroupName);
+
+ // Assert that the member exists, just in case...
+ $members = $this->gdata->retrieveAllMembers($generatedGroupName);
+ $this->assertTrue(count($members->entry) == 1);
+
+ // Remove the member from the group
+ $this->gdata->removeMemberFromGroup($user->login->username,
+ $generatedGroupName);
+
+ // Ensure that user was deleted
+ $members = $this->gdata->retrieveAllMembers($generatedGroupName);
+ $this->assertTrue(count($members->entry) == 0);
+
+ }
+
+ public function testCanRetrieveGroupOwners() {
+ // Create a new group
+ $generatedGroupName = strtolower(uniqid('zf-list-'));
+ $group = $this->gdata->createGroup($generatedGroupName, 'Test Group',
+ 'testCanRetrievAllOwners()');
+ $this->autoDelete($group);
+
+ $userCount = 3;
+ for ($i = 0; $i < $userCount; $i++) {
+ $generatedUsername = uniqid('ZF-');
+ $user = $this->gdata->createUser($generatedUsername,
+ self::GIVEN_NAME, self::FAMILY_NAME, sha1(self::PASSWORD),
+ self::PASSWORD_HASH);
+ $this->autoDelete($user);
+ $this->gdata->addOwnerToGroup($generatedUsername,
+ $generatedGroupName);
+ }
+
+ // Retrieve owners
+ $ownerFeed = $this->gdata->retrieveGroupOwners($generatedGroupName);
+ $this->assertTrue(count($ownerFeed->entry) == $userCount);
+
+ }
+
+ // Test the convenience removeOwnerFromGroup method for group owners
+ public function testCanRemoveOwnerFromGroup() {
+ // Create a group
+ $generatedGroupName = strtolower(uniqid('zf-list-'));
+ $group = $this->gdata->createGroup($generatedGroupName, 'Test Group',
+ 'testCanDeleteGroupOwner()');
+ $this->autoDelete($group);
+
+ // Create a user for the group
+ $user = $this->gdata->createUser($this->id, self::GIVEN_NAME,
+ self::FAMILY_NAME, sha1(self::PASSWORD), self::PASSWORD_HASH);
+ $this->autoDelete($user);
+ $this->gdata->addOwnerToGroup($this->id, $generatedGroupName);
+
+ // Assert that the owner exists, just in case...
+ $owners = $this->gdata->retrieveGroupOwners($generatedGroupName);
+ $this->assertTrue(count($owners->entry) == 1);
+
+ // Remove the owner from the group
+ $this->gdata->removeOwnerFromGroup($user->login->username,
+ $generatedGroupName);
+
+ // Ensure that user was deleted
+ $owners = $this->gdata->retrieveGroupOwners($generatedGroupName);
+ $this->assertTrue(count($owners->entry) == 0);
+ }
+
+ // Test the convenience isMember method
+ public function testIsMember() {
+ // Create a group
+ $generatedGroupName = strtolower(uniqid('zf-list-'));
+ $group = $this->gdata->createGroup($generatedGroupName, 'Test Group',
+ 'testIsMember()');
+ $this->autoDelete($group);
+
+ // Create a user for the group
+ $user = $this->gdata->createUser($this->id, self::GIVEN_NAME,
+ self::FAMILY_NAME, sha1(self::PASSWORD), self::PASSWORD_HASH);
+ $this->autoDelete($user);
+ $this->gdata->addMemberToGroup($this->id, $generatedGroupName);
+
+ $isMember = $this->gdata->isMember($this->id, $generatedGroupName);
+
+ $this->assertTrue($isMember);
+
+ $isMember = $this->gdata->isMember('foo_' . $this->id, $generatedGroupName);
+
+ $this->assertFalse($isMember);
+
+ }
+
+ // Test the convenience isOwner method
+ public function testIsOwner() {
+ // Create a group
+ $generatedGroupName = strtolower(uniqid('zf-list-'));
+ $group = $this->gdata->createGroup($generatedGroupName, 'Test Group',
+ 'testIsMember()');
+ $this->autoDelete($group);
+
+ // Create a user for the group
+ $user = $this->gdata->createUser($this->id, self::GIVEN_NAME,
+ self::FAMILY_NAME, sha1(self::PASSWORD), self::PASSWORD_HASH);
+ $this->autoDelete($user);
+ $this->gdata->addOwnerToGroup($this->id, $generatedGroupName);
+
+ $isOwner = $this->gdata->isOwner($this->id, $generatedGroupName);
+
+ $this->assertTrue($isOwner);
+
+ $isOwner = $this->gdata->isOwner('foo_' . $this->id, $generatedGroupName);
+
+ $this->assertFalse($isOwner);
+
+ }
+
+ // Test the convenience updateGroup method
+ public function testCanUpdateGroup() {
+ // Create a group
+ $generatedGroupName = strtolower(uniqid('zf-list-'));
+ $group = $this->gdata->createGroup($generatedGroupName, 'Test Group',
+ 'testCanUpdateGroup()');
+ $this->autoDelete($group);
+
+ //set new value and save it
+
+ $group = $this->gdata->updateGroup($generatedGroupName, null, 'new description here');
+
+ //verify new value
+ $description = null;
+
+ $properties = $group->getProperty();
+ foreach ($properties as $property) {
+ if($property->name == 'description') {
+ $description = $property->value;
+ }
+ }
+
+ $this->assertEquals('new description here', $description);
+
+ }
+
public function testEmailListCRUDOperations() {
// Create email list
$generatedListName = strtolower(uniqid('zf-list-'));
Index: tests/Zend/Gdata/Gapps/MemberEntryTest.php
===================================================================
--- tests/Zend/Gdata/Gapps/MemberEntryTest.php (revision 0)
+++ tests/Zend/Gdata/Gapps/MemberEntryTest.php (revision 0)
@@ -0,0 +1,108 @@
+entryText = file_get_contents(
+ 'Zend/Gdata/Gapps/_files/MemberEntryDataSample1.xml',
+ true);
+ $this->entry = new Zend_Gdata_Gapps_MemberEntry();
+ }
+
+ private function verifyAllSamplePropertiesAreCorrect ($memberEntry) {
+ $this->assertEquals('https://www.google.com/a/feeds/group/2.0/example.com/us-sales/member/suejones%40example.com',
+ $memberEntry->id->text);
+ $this->assertEquals('1970-01-01T00:00:00.000Z', $memberEntry->updated->text);
+ $this->assertEquals('self', $memberEntry->getLink('self')->rel);
+ $this->assertEquals('application/atom+xml', $memberEntry->getLink('self')->type);
+ $this->assertEquals('https://www.google.com/a/feeds/group/2.0/example.com/us-sales/member/suejones%40example.com', $memberEntry->getLink('self')->href);
+ $this->assertEquals('edit', $memberEntry->getLink('edit')->rel);
+ $this->assertEquals('application/atom+xml', $memberEntry->getLink('edit')->type);
+ $this->assertEquals('https://www.google.com/a/feeds/group/2.0/example.com/us-sales/member/suejones%40example.com', $memberEntry->getLink('edit')->href);
+ $this->assertEquals('memberId', $memberEntry->property[0]->name);
+ $this->assertEquals('suejones@example.com', $memberEntry->property[0]->value);
+ $this->assertEquals('memberType', $memberEntry->property[1]->name);
+ $this->assertEquals('User', $memberEntry->property[1]->value);
+ $this->assertEquals('directMember', $memberEntry->property[2]->name);
+ $this->assertEquals('true', $memberEntry->property[2]->value);
+ }
+
+ public function testEmptyEntryShouldHaveNoExtensionElements() {
+ $this->assertTrue(is_array($this->entry->extensionElements));
+ $this->assertTrue(count($this->entry->extensionElements) == 0);
+ }
+
+ public function testEmptyEntryShouldHaveNoExtensionAttributes() {
+ $this->assertTrue(is_array($this->entry->extensionAttributes));
+ $this->assertTrue(count($this->entry->extensionAttributes) == 0);
+ }
+
+ public function testSampleEntryShouldHaveNoExtensionElements() {
+ $this->entry->transferFromXML($this->entryText);
+ $this->assertTrue(is_array($this->entry->extensionElements));
+ $this->assertTrue(count($this->entry->extensionElements) == 0);
+ }
+
+ public function testSampleEntryShouldHaveNoExtensionAttributes() {
+ $this->entry->transferFromXML($this->entryText);
+ $this->assertTrue(is_array($this->entry->extensionAttributes));
+ $this->assertTrue(count($this->entry->extensionAttributes) == 0);
+ }
+
+ public function testEmptyMemberEntryToAndFromStringShouldMatch() {
+ $entryXml = $this->entry->saveXML();
+ $newMemberEntry = new Zend_Gdata_Gapps_MemberEntry();
+ $newMemberEntry->transferFromXML($entryXml);
+ $newMemberEntryXml = $newMemberEntry->saveXML();
+ $this->assertTrue($entryXml == $newMemberEntryXml);
+ }
+
+ public function testSamplePropertiesAreCorrect () {
+ $this->entry->transferFromXML($this->entryText);
+ $this->verifyAllSamplePropertiesAreCorrect($this->entry);
+ }
+
+ public function testConvertMemberEntryToAndFromString() {
+ $this->entry->transferFromXML($this->entryText);
+ $entryXml = $this->entry->saveXML();
+ $newMemberEntry = new Zend_Gdata_Gapps_MemberEntry();
+ $newMemberEntry->transferFromXML($entryXml);
+ $this->verifyAllSamplePropertiesAreCorrect($newMemberEntry);
+ $newMemberEntryXml = $newMemberEntry->saveXML();
+ $this->assertEquals($entryXml, $newMemberEntryXml);
+ }
+
+}
Index: tests/Zend/Gdata/Gapps/MemberFeedTest.php
===================================================================
--- tests/Zend/Gdata/Gapps/MemberFeedTest.php (revision 0)
+++ tests/Zend/Gdata/Gapps/MemberFeedTest.php (revision 0)
@@ -0,0 +1,109 @@
+memberFeed = new Zend_Gdata_Gapps_MemberFeed($memberFeedText);
+ $this->emptyMemberFeed = new Zend_Gdata_Gapps_MemberFeed();
+ }
+
+ public function testEmptyFeedShouldHaveNoExtensionElements() {
+ $this->assertTrue(is_array($this->emptyMemberFeed->extensionElements));
+ $this->assertTrue(count($this->emptyMemberFeed->extensionElements) == 0);
+ }
+
+ public function testEmptyFeedShouldHaveNoExtensionAttributes() {
+ $this->assertTrue(is_array($this->emptyMemberFeed->extensionAttributes));
+ $this->assertTrue(count($this->emptyMemberFeed->extensionAttributes) == 0);
+ }
+
+ public function testSampleFeedShouldHaveNoExtensionElements() {
+ $this->assertTrue(is_array($this->memberFeed->extensionElements));
+ $this->assertTrue(count($this->memberFeed->extensionElements) == 0);
+ }
+
+ public function testSampleFeedShouldHaveNoExtensionAttributes() {
+ $this->assertTrue(is_array($this->memberFeed->extensionAttributes));
+ $this->assertTrue(count($this->memberFeed->extensionAttributes) == 0);
+ }
+
+ /**
+ * Convert sample feed to XML then back to objects. Ensure that
+ * all objects are instances of MemberEntry and object count matches.
+ */
+ public function testXmlImportAndOutputAreNonDestructive()
+ {
+ $entryCount = 0;
+ foreach ($this->memberFeed as $entry) {
+ $entryCount++;
+ $this->assertTrue($entry instanceof Zend_Gdata_Gapps_MemberEntry);
+ }
+ $this->assertTrue($entryCount > 0);
+
+ /* Grab XML from $this->memberFeed and convert back to objects */
+ $newMemberFeed = new Zend_Gdata_Gapps_MemberFeed(
+ $this->memberFeed->saveXML());
+ $newEntryCount = 0;
+ foreach ($newMemberFeed as $entry) {
+ $newEntryCount++;
+ $this->assertTrue($entry instanceof Zend_Gdata_Gapps_MemberEntry);
+ }
+ $this->assertEquals($entryCount, $newEntryCount);
+ }
+
+ /**
+ * Ensure that there number of member entries equals the number
+ * of members defined in the sample file.
+ */
+ public function testAllEntriesInFeedAreInstantiated()
+ {
+ //TODO feeds implementing ArrayAccess would be helpful here
+ $entryCount = 0;
+ foreach ($this->memberFeed as $entry) {
+ $entryCount++;
+ }
+ $this->assertEquals(2, $entryCount);
+ }
+
+}
Index: tests/Zend/Gdata/Gapps/MemberQueryTest.php
===================================================================
--- tests/Zend/Gdata/Gapps/MemberQueryTest.php (revision 0)
+++ tests/Zend/Gdata/Gapps/MemberQueryTest.php (revision 0)
@@ -0,0 +1,109 @@
+query = new Zend_Gdata_Gapps_MemberQuery();
+ }
+
+ // Test to make sure that the domain accessor methods work and propagate
+ // to the query URI.
+ public function testCanSetQueryDomain()
+ {
+ $this->query->setGroupId("something");
+ $this->query->setDomain("my.domain.com");
+ $this->assertEquals("my.domain.com", $this->query->getDomain());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/something/member",
+ $this->query->getQueryUrl());
+
+ $this->query->setDomain("hello.world.baz");
+ $this->assertEquals("hello.world.baz", $this->query->getDomain());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/hello.world.baz/something/member",
+ $this->query->getQueryUrl());
+ }
+
+ // Test to make sure that the groupId accessor methods work and propagate
+ // to the query URI.
+ public function testCanSetGroupIdProperty()
+ {
+ $this->query->setDomain("my.domain.com");
+ $this->query->setGroupId("foo");
+ $this->assertEquals("foo", $this->query->getGroupId());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/foo/member",
+ $this->query->getQueryUrl());
+
+ $this->query->setGroupId("bar");
+ $this->assertEquals("bar", $this->query->getGroupId());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/bar/member",
+ $this->query->getQueryUrl());
+ }
+
+ // Test to make sure that the memberId accessor methods work and propagate
+ // to the query URI.
+ public function testCanSetMemberIdProperty()
+ {
+ $this->query->setDomain("my.domain.com");
+ $this->query->setGroupId("foo");
+ $this->query->setMemberId("bar");
+ $this->assertEquals("bar", $this->query->getMemberId());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/foo/member/bar",
+ $this->query->getQueryUrl());
+
+ $this->query->setGroupId("baz");
+ $this->query->setMemberId(null);
+ $this->assertEquals(null, $this->query->getMemberId());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/baz/member",
+ $this->query->getQueryUrl());
+ }
+
+ public function testCanSetStartMemberIdProperty()
+ {
+ $this->query->setDomain("my.domain.com");
+ $this->query->setGroupId("foo");
+ $this->query->setStartMemberId("bar");
+ $this->assertEquals("bar", $this->query->getStartMemberId());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/foo/member?start=bar",
+ $this->query->getQueryUrl());
+
+ $this->query->setStartMemberId(null);
+ $this->assertEquals(null, $this->query->getStartMemberId());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/foo/member",
+ $this->query->getQueryUrl());
+ }
+
+}
+
Index: tests/Zend/Gdata/Gapps/_files/PropertyElementSample1.xml
===================================================================
--- tests/Zend/Gdata/Gapps/_files/PropertyElementSample1.xml (revision 0)
+++ tests/Zend/Gdata/Gapps/_files/PropertyElementSample1.xml (revision 0)
@@ -0,0 +1,2 @@
+
+
Index: tests/Zend/Gdata/Gapps/_files/OwnerEntryDataSample1.xml
===================================================================
--- tests/Zend/Gdata/Gapps/_files/OwnerEntryDataSample1.xml (revision 0)
+++ tests/Zend/Gdata/Gapps/_files/OwnerEntryDataSample1.xml (revision 0)
@@ -0,0 +1,10 @@
+
+
+ https://www.google.com/a/feeds/group/2.0/example.com/us-sales/owner/joe%40example.com
+ 1970-01-01T00:00:00.000Z
+
+
+
+
Index: tests/Zend/Gdata/Gapps/_files/GroupEntryDataSample1.xml
===================================================================
--- tests/Zend/Gdata/Gapps/_files/GroupEntryDataSample1.xml (revision 0)
+++ tests/Zend/Gdata/Gapps/_files/GroupEntryDataSample1.xml (revision 0)
@@ -0,0 +1,14 @@
+
+
+ https://www.google.com/a/feeds/group/2.0/example.com/us-sales
+ 1970-01-01T00:00:00.000Z
+
+
+
+
+
+
+
+
Index: tests/Zend/Gdata/Gapps/_files/OwnerFeedDataSample1.xml
===================================================================
--- tests/Zend/Gdata/Gapps/_files/OwnerFeedDataSample1.xml (revision 0)
+++ tests/Zend/Gdata/Gapps/_files/OwnerFeedDataSample1.xml (revision 0)
@@ -0,0 +1,30 @@
+
+
+ https://www.google.com/a/feeds/group/2.0/example.com/us-sales/owner
+ 1970-01-01T00:00:00.000Z
+
+
+
+ 1
+
+ https://www.google.com/a/feeds/group/2.0/example.com/us-sales/owner/joe%40example.com
+ 1970-01-01T00:00:00.000Z
+
+
+
+
+
+ https://www.google.com/a/feeds/group/2.0/example.com/us-sales/owner/suejones%40example.com
+ 1970-01-01T00:00:00.000Z
+
+
+
+
+
Index: tests/Zend/Gdata/Gapps/_files/GroupFeedDataSample1.xml
===================================================================
--- tests/Zend/Gdata/Gapps/_files/GroupFeedDataSample1.xml (revision 0)
+++ tests/Zend/Gdata/Gapps/_files/GroupFeedDataSample1.xml (revision 0)
@@ -0,0 +1,31 @@
+
+
+ https://www.google.com/a/feeds/group/2.0/example.com
+ 2008-12-03T16:33:05.260Z
+
+
+
+ 1
+
+ https://apps-apis.google.com/a/feeds/group/2.0/example.com/us-sales%40example.com
+ 2008-12-03T16:33:05.261Z
+
+
+
+
+
+
+
+
+ https://apps-apis.google.com/a/feeds/group/2.0/example.com/Staff-2435%40example.com
+ 2008-12-03T16:33:05.260Z
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: tests/Zend/Gdata/Gapps/_files/MemberEntryDataSample1.xml
===================================================================
--- tests/Zend/Gdata/Gapps/_files/MemberEntryDataSample1.xml (revision 0)
+++ tests/Zend/Gdata/Gapps/_files/MemberEntryDataSample1.xml (revision 0)
@@ -0,0 +1,13 @@
+
+
+ https://www.google.com/a/feeds/group/2.0/example.com/us-sales/member/suejones%40example.com
+ 1970-01-01T00:00:00.000Z
+
+
+
+
+
+
+
Index: tests/Zend/Gdata/Gapps/_files/MemberFeedDataSample1.xml
===================================================================
--- tests/Zend/Gdata/Gapps/_files/MemberFeedDataSample1.xml (revision 0)
+++ tests/Zend/Gdata/Gapps/_files/MemberFeedDataSample1.xml (revision 0)
@@ -0,0 +1,29 @@
+
+
+ https://www.google.com/a/feeds/group/2.0/example.com/us-sales/member
+
+ 1
+
+ https://www.google.com/a/feeds/group/2.0/example.com/us-sales/member/suejones%40example.com
+
+
+
+
+
+
+
+ https://www.google.com/a/feeds/group/2.0/example.com/us-sales/member/ca-sales%40example.com
+
+
+
+
+
+
+
\ No newline at end of file
Index: tests/Zend/Gdata/Gapps/OwnerEntryTest.php
===================================================================
--- tests/Zend/Gdata/Gapps/OwnerEntryTest.php (revision 0)
+++ tests/Zend/Gdata/Gapps/OwnerEntryTest.php (revision 0)
@@ -0,0 +1,104 @@
+entryText = file_get_contents(
+ 'Zend/Gdata/Gapps/_files/OwnerEntryDataSample1.xml',
+ true);
+ $this->entry = new Zend_Gdata_Gapps_OwnerEntry();
+ }
+
+ private function verifyAllSamplePropertiesAreCorrect ($ownerEntry) {
+ $this->assertEquals('https://www.google.com/a/feeds/group/2.0/example.com/us-sales/owner/joe%40example.com',
+ $ownerEntry->id->text);
+ $this->assertEquals('1970-01-01T00:00:00.000Z', $ownerEntry->updated->text);
+ $this->assertEquals('self', $ownerEntry->getLink('self')->rel);
+ $this->assertEquals('application/atom+xml', $ownerEntry->getLink('self')->type);
+ $this->assertEquals('https://www.google.com/a/feeds/group/2.0/example.com/us-sales/owner/joe%40example.com', $ownerEntry->getLink('self')->href);
+ $this->assertEquals('edit', $ownerEntry->getLink('edit')->rel);
+ $this->assertEquals('application/atom+xml', $ownerEntry->getLink('edit')->type);
+ $this->assertEquals('https://www.google.com/a/feeds/group/2.0/example.com/us-sales/owner/joe%40example.com', $ownerEntry->getLink('edit')->href);
+ $this->assertEquals('email', $ownerEntry->property[0]->name);
+ $this->assertEquals('joe@example.com', $ownerEntry->property[0]->value);
+ }
+
+ public function testEmptyEntryShouldHaveNoExtensionElements() {
+ $this->assertTrue(is_array($this->entry->extensionElements));
+ $this->assertTrue(count($this->entry->extensionElements) == 0);
+ }
+
+ public function testEmptyEntryShouldHaveNoExtensionAttributes() {
+ $this->assertTrue(is_array($this->entry->extensionAttributes));
+ $this->assertTrue(count($this->entry->extensionAttributes) == 0);
+ }
+
+ public function testSampleEntryShouldHaveNoExtensionElements() {
+ $this->entry->transferFromXML($this->entryText);
+ $this->assertTrue(is_array($this->entry->extensionElements));
+ $this->assertTrue(count($this->entry->extensionElements) == 0);
+ }
+
+ public function testSampleEntryShouldHaveNoExtensionAttributes() {
+ $this->entry->transferFromXML($this->entryText);
+ $this->assertTrue(is_array($this->entry->extensionAttributes));
+ $this->assertTrue(count($this->entry->extensionAttributes) == 0);
+ }
+
+ public function testEmptyOwnerEntryToAndFromStringShouldMatch() {
+ $entryXml = $this->entry->saveXML();
+ $newOwnerEntry = new Zend_Gdata_Gapps_OwnerEntry();
+ $newOwnerEntry->transferFromXML($entryXml);
+ $newOwnerEntryXml = $newOwnerEntry->saveXML();
+ $this->assertTrue($entryXml == $newOwnerEntryXml);
+ }
+
+ public function testSamplePropertiesAreCorrect () {
+ $this->entry->transferFromXML($this->entryText);
+ $this->verifyAllSamplePropertiesAreCorrect($this->entry);
+ }
+
+ public function testConvertOwnerEntryToAndFromString() {
+ $this->entry->transferFromXML($this->entryText);
+ $entryXml = $this->entry->saveXML();
+ $newOwnerEntry = new Zend_Gdata_Gapps_OwnerEntry();
+ $newOwnerEntry->transferFromXML($entryXml);
+ $this->verifyAllSamplePropertiesAreCorrect($newOwnerEntry);
+ $newOwnerEntryXml = $newOwnerEntry->saveXML();
+ $this->assertEquals($entryXml, $newOwnerEntryXml);
+ }
+
+}
Index: tests/Zend/Gdata/Gapps/GroupEntryTest.php
===================================================================
--- tests/Zend/Gdata/Gapps/GroupEntryTest.php (revision 0)
+++ tests/Zend/Gdata/Gapps/GroupEntryTest.php (revision 0)
@@ -0,0 +1,110 @@
+entryText = file_get_contents(
+ 'Zend/Gdata/Gapps/_files/GroupEntryDataSample1.xml',
+ true);
+ $this->entry = new Zend_Gdata_Gapps_GroupEntry();
+ }
+
+ private function verifyAllSamplePropertiesAreCorrect ($groupEntry) {
+ $this->assertEquals('https://www.google.com/a/feeds/group/2.0/example.com/us-sales',
+ $groupEntry->id->text);
+ $this->assertEquals('1970-01-01T00:00:00.000Z', $groupEntry->updated->text);
+ $this->assertEquals('self', $groupEntry->getLink('self')->rel);
+ $this->assertEquals('application/atom+xml', $groupEntry->getLink('self')->type);
+ $this->assertEquals('https://www.google.com/a/feeds/group/2.0/example.com/us-sales', $groupEntry->getLink('self')->href);
+ $this->assertEquals('edit', $groupEntry->getLink('edit')->rel);
+ $this->assertEquals('application/atom+xml', $groupEntry->getLink('edit')->type);
+ $this->assertEquals('https://www.google.com/a/feeds/group/2.0/example.com/us-sales', $groupEntry->getLink('edit')->href);
+ $this->assertEquals('groupId', $groupEntry->property[0]->name);
+ $this->assertEquals('us-sales', $groupEntry->property[0]->value);
+ $this->assertEquals('groupName', $groupEntry->property[1]->name);
+ $this->assertEquals('us-sales', $groupEntry->property[1]->value);
+ $this->assertEquals('description', $groupEntry->property[2]->name);
+ $this->assertEquals('UnitedStatesSalesTeam', $groupEntry->property[2]->value);
+ $this->assertEquals('emailPermission', $groupEntry->property[3]->name);
+ $this->assertEquals('Domain', $groupEntry->property[3]->value);
+ }
+
+ public function testEmptyEntryShouldHaveNoExtensionElements() {
+ $this->assertTrue(is_array($this->entry->extensionElements));
+ $this->assertTrue(count($this->entry->extensionElements) == 0);
+ }
+
+ public function testEmptyEntryShouldHaveNoExtensionAttributes() {
+ $this->assertTrue(is_array($this->entry->extensionAttributes));
+ $this->assertTrue(count($this->entry->extensionAttributes) == 0);
+ }
+
+ public function testSampleEntryShouldHaveNoExtensionElements() {
+ $this->entry->transferFromXML($this->entryText);
+ $this->assertTrue(is_array($this->entry->extensionElements));
+ $this->assertTrue(count($this->entry->extensionElements) == 0);
+ }
+
+ public function testSampleEntryShouldHaveNoExtensionAttributes() {
+ $this->entry->transferFromXML($this->entryText);
+ $this->assertTrue(is_array($this->entry->extensionAttributes));
+ $this->assertTrue(count($this->entry->extensionAttributes) == 0);
+ }
+
+ public function testEmptyGroupEntryToAndFromStringShouldMatch() {
+ $entryXml = $this->entry->saveXML();
+ $newGroupEntry = new Zend_Gdata_Gapps_GroupEntry();
+ $newGroupEntry->transferFromXML($entryXml);
+ $newGroupEntryXml = $newGroupEntry->saveXML();
+ $this->assertTrue($entryXml == $newGroupEntryXml);
+ }
+
+ public function testSamplePropertiesAreCorrect () {
+ $this->entry->transferFromXML($this->entryText);
+ $this->verifyAllSamplePropertiesAreCorrect($this->entry);
+ }
+
+ public function testConvertGroupEntryToAndFromString() {
+ $this->entry->transferFromXML($this->entryText);
+ $entryXml = $this->entry->saveXML();
+ $newGroupEntry = new Zend_Gdata_Gapps_GroupEntry();
+ $newGroupEntry->transferFromXML($entryXml);
+ $this->verifyAllSamplePropertiesAreCorrect($newGroupEntry);
+ $newGroupEntryXml = $newGroupEntry->saveXML();
+ $this->assertEquals($entryXml, $newGroupEntryXml);
+ }
+
+}
Index: tests/Zend/Gdata/Gapps/OwnerFeedTest.php
===================================================================
--- tests/Zend/Gdata/Gapps/OwnerFeedTest.php (revision 0)
+++ tests/Zend/Gdata/Gapps/OwnerFeedTest.php (revision 0)
@@ -0,0 +1,109 @@
+ownerFeed = new Zend_Gdata_Gapps_OwnerFeed($ownerFeedText);
+ $this->emptyOwnerFeed = new Zend_Gdata_Gapps_OwnerFeed();
+ }
+
+ public function testEmptyFeedShouldHaveNoExtensionElements() {
+ $this->assertTrue(is_array($this->emptyOwnerFeed->extensionElements));
+ $this->assertTrue(count($this->emptyOwnerFeed->extensionElements) == 0);
+ }
+
+ public function testEmptyFeedShouldHaveNoExtensionAttributes() {
+ $this->assertTrue(is_array($this->emptyOwnerFeed->extensionAttributes));
+ $this->assertTrue(count($this->emptyOwnerFeed->extensionAttributes) == 0);
+ }
+
+ public function testSampleFeedShouldHaveNoExtensionElements() {
+ $this->assertTrue(is_array($this->ownerFeed->extensionElements));
+ $this->assertTrue(count($this->ownerFeed->extensionElements) == 0);
+ }
+
+ public function testSampleFeedShouldHaveNoExtensionAttributes() {
+ $this->assertTrue(is_array($this->ownerFeed->extensionAttributes));
+ $this->assertTrue(count($this->ownerFeed->extensionAttributes) == 0);
+ }
+
+ /**
+ * Convert sample feed to XML then back to objects. Ensure that
+ * all objects are instances of OwnerEntry and object count matches.
+ */
+ public function testXmlImportAndOutputAreNonDestructive()
+ {
+ $entryCount = 0;
+ foreach ($this->ownerFeed as $entry) {
+ $entryCount++;
+ $this->assertTrue($entry instanceof Zend_Gdata_Gapps_OwnerEntry);
+ }
+ $this->assertTrue($entryCount > 0);
+
+ /* Grab XML from $this->ownerFeed and convert back to objects */
+ $newOwnerFeed = new Zend_Gdata_Gapps_OwnerFeed(
+ $this->ownerFeed->saveXML());
+ $newEntryCount = 0;
+ foreach ($newOwnerFeed as $entry) {
+ $newEntryCount++;
+ $this->assertTrue($entry instanceof Zend_Gdata_Gapps_OwnerEntry);
+ }
+ $this->assertEquals($entryCount, $newEntryCount);
+ }
+
+ /**
+ * Ensure that there number of owner entries equals the number
+ * of owners defined in the sample file.
+ */
+ public function testAllEntriesInFeedAreInstantiated()
+ {
+ //TODO feeds implementing ArrayAccess would be helpful here
+ $entryCount = 0;
+ foreach ($this->ownerFeed as $entry) {
+ $entryCount++;
+ }
+ $this->assertEquals(2, $entryCount);
+ }
+
+}
Index: tests/Zend/Gdata/Gapps/GroupFeedTest.php
===================================================================
--- tests/Zend/Gdata/Gapps/GroupFeedTest.php (revision 0)
+++ tests/Zend/Gdata/Gapps/GroupFeedTest.php (revision 0)
@@ -0,0 +1,109 @@
+groupFeed = new Zend_Gdata_Gapps_GroupFeed($groupFeedText);
+ $this->emptyGroupFeed = new Zend_Gdata_Gapps_GroupFeed();
+ }
+
+ public function testEmptyFeedShouldHaveNoExtensionElements() {
+ $this->assertTrue(is_array($this->emptyGroupFeed->extensionElements));
+ $this->assertTrue(count($this->emptyGroupFeed->extensionElements) == 0);
+ }
+
+ public function testEmptyFeedShouldHaveNoExtensionAttributes() {
+ $this->assertTrue(is_array($this->emptyGroupFeed->extensionAttributes));
+ $this->assertTrue(count($this->emptyGroupFeed->extensionAttributes) == 0);
+ }
+
+ public function testSampleFeedShouldHaveNoExtensionElements() {
+ $this->assertTrue(is_array($this->groupFeed->extensionElements));
+ $this->assertTrue(count($this->groupFeed->extensionElements) == 0);
+ }
+
+ public function testSampleFeedShouldHaveNoExtensionAttributes() {
+ $this->assertTrue(is_array($this->groupFeed->extensionAttributes));
+ $this->assertTrue(count($this->groupFeed->extensionAttributes) == 0);
+ }
+
+ /**
+ * Convert sample feed to XML then back to objects. Ensure that
+ * all objects are instances of GroupEntry and object count matches.
+ */
+ public function testXmlImportAndOutputAreNonDestructive()
+ {
+ $entryCount = 0;
+ foreach ($this->groupFeed as $entry) {
+ $entryCount++;
+ $this->assertTrue($entry instanceof Zend_Gdata_Gapps_GroupEntry);
+ }
+ $this->assertTrue($entryCount > 0);
+
+ /* Grab XML from $this->groupFeed and convert back to objects */
+ $newGroupFeed = new Zend_Gdata_Gapps_GroupFeed(
+ $this->groupFeed->saveXML());
+ $newEntryCount = 0;
+ foreach ($newGroupFeed as $entry) {
+ $newEntryCount++;
+ $this->assertTrue($entry instanceof Zend_Gdata_Gapps_GroupEntry);
+ }
+ $this->assertEquals($entryCount, $newEntryCount);
+ }
+
+ /**
+ * Ensure that there number of group entries equals the number
+ * of groups defined in the sample file.
+ */
+ public function testAllEntriesInFeedAreInstantiated()
+ {
+ //TODO feeds implementing ArrayAccess would be helpful here
+ $entryCount = 0;
+ foreach ($this->groupFeed as $entry) {
+ $entryCount++;
+ }
+ $this->assertEquals(2, $entryCount);
+ }
+
+}
Index: tests/Zend/Gdata/Gapps/OwnerQueryTest.php
===================================================================
--- tests/Zend/Gdata/Gapps/OwnerQueryTest.php (revision 0)
+++ tests/Zend/Gdata/Gapps/OwnerQueryTest.php (revision 0)
@@ -0,0 +1,91 @@
+query = new Zend_Gdata_Gapps_OwnerQuery();
+ }
+
+ // Test to make sure that the domain accessor methods work and propagate
+ // to the query URI.
+ public function testCanSetQueryDomain()
+ {
+ $this->query->setGroupId("something");
+ $this->query->setDomain("my.domain.com");
+ $this->assertEquals("my.domain.com", $this->query->getDomain());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/something/owner",
+ $this->query->getQueryUrl());
+
+ $this->query->setDomain("hello.world.baz");
+ $this->assertEquals("hello.world.baz", $this->query->getDomain());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/hello.world.baz/something/owner",
+ $this->query->getQueryUrl());
+ }
+
+ // Test to make sure that the groupId accessor methods work and propagate
+ // to the query URI.
+ public function testCanSetGroupIdProperty()
+ {
+ $this->query->setDomain("my.domain.com");
+ $this->query->setGroupId("foo");
+ $this->assertEquals("foo", $this->query->getGroupId());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/foo/owner",
+ $this->query->getQueryUrl());
+
+ $this->query->setGroupId("bar");
+ $this->assertEquals("bar", $this->query->getGroupId());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/bar/owner",
+ $this->query->getQueryUrl());
+ }
+
+ public function testCanSetOwnerEmailProperty()
+ {
+ $this->query->setDomain("my.domain.com");
+ $this->query->setGroupId("foo");
+ $this->query->setOwnerEmail("bar@blah.com");
+ $this->assertEquals("bar@blah.com", $this->query->getOwnerEmail());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/foo/owner/bar@blah.com",
+ $this->query->getQueryUrl());
+
+ $this->query->setOwnerEmail('baz@blah.com');
+ $this->assertEquals('baz@blah.com', $this->query->getOwnerEmail());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/foo/owner/baz@blah.com",
+ $this->query->getQueryUrl());
+ }
+
+}
+
Index: tests/Zend/Gdata/Gapps/GroupQueryTest.php
===================================================================
--- tests/Zend/Gdata/Gapps/GroupQueryTest.php (revision 0)
+++ tests/Zend/Gdata/Gapps/GroupQueryTest.php (revision 0)
@@ -0,0 +1,168 @@
+query = new Zend_Gdata_Gapps_GroupQuery();
+ }
+
+ // Test to make sure that URI generation works
+ public function testDefaultQueryURIGeneration()
+ {
+ $this->query->setDomain("foo.bar.invalid");
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/foo.bar.invalid",
+ $this->query->getQueryUrl());
+ }
+
+ // Test to make sure that the domain accessor methods work and propagate
+ // to the query URI.
+ public function testCanSetQueryDomain()
+ {
+ $this->query->setDomain("my.domain.com");
+ $this->assertEquals("my.domain.com", $this->query->getDomain());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com",
+ $this->query->getQueryUrl());
+
+ $this->query->setDomain("hello.world.baz");
+ $this->assertEquals("hello.world.baz", $this->query->getDomain());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/hello.world.baz",
+ $this->query->getQueryUrl());
+ }
+
+ // Test to make sure that the groupId accessor methods work and propagate
+ // to the query URI.
+ public function testCanSetGroupIdProperty()
+ {
+ $this->query->setDomain("my.domain.com");
+ $this->query->setGroupId("foo");
+ $this->assertEquals("foo", $this->query->getGroupId());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/foo",
+ $this->query->getQueryUrl());
+
+ $this->query->setGroupId("bar");
+ $this->assertEquals("bar", $this->query->getGroupId());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/bar",
+ $this->query->getQueryUrl());
+ }
+
+ // Test to make sure that the member accessor methods work and propagate
+ // to the query URI.
+ public function testCanSetMemberProperty()
+ {
+ $this->query->setDomain("my.domain.com");
+ $this->query->setMember("bar@qux.com");
+ $this->assertEquals("bar@qux.com", $this->query->getMember());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/?member=bar%40qux.com",
+ $this->query->getQueryUrl());
+
+ $this->query->setMember(null);
+ $this->assertEquals(null, $this->query->getMember());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com",
+ $this->query->getQueryUrl());
+ }
+
+ // Test to make sure that the startUsername accessor methods work and
+ // propagate to the query URI.
+ public function testCanSetStartGroupIdProperty()
+ {
+ $this->query->setDomain("my.domain.com");
+ $this->query->setStartGroupId("foo");
+ $this->assertEquals("foo", $this->query->getStartGroupId());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com?start=foo",
+ $this->query->getQueryUrl());
+
+ $this->query->setStartGroupId(null);
+ $this->assertEquals(null, $this->query->getStartGroupId());
+ $this->assertEquals("https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com",
+ $this->query->getQueryUrl());
+ }
+
+ public function testCanSetDirectOnlyProperty()
+ {
+ $this->query->setDomain("my.domain.com");
+ $this->query->setMember("bar@qux.com");
+ $this->query->setDirectOnly(true);
+ $this->assertEquals(true, $this->query->getDirectOnly());
+ $expected_url = "https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/";
+ $expected_url .= "?member=bar%40qux.com&directOnly=true";
+ $this->assertEquals($expected_url, $this->query->getQueryUrl());
+
+ $this->query->setDirectOnly(false);
+ $this->assertEquals(false, $this->query->getDirectOnly());
+ $expected_url = "https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/";
+ $expected_url .= "?member=bar%40qux.com&directOnly=false";
+ $this->assertEquals($expected_url, $this->query->getQueryUrl());
+
+ $this->query->setDirectOnly(null);
+ $this->assertEquals(null, $this->query->getDirectOnly());
+ $expected_url = "https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/";
+ $expected_url .= "?member=bar%40qux.com";
+ $this->assertEquals($expected_url, $this->query->getQueryUrl());
+ }
+
+ // Test to make sure that all parameters can be set simultaneously with no
+ // ill effects.
+ public function testCanSetAllParameters()
+ {
+ $this->query->setDomain("my.domain.com");
+ $this->query->setGroupId("foo");
+ $this->query->setMember("bar@qux.com");
+ $this->query->setStartGroupId("wibble");
+ $this->query->setDirectOnly(true);
+ $this->assertEquals("foo", $this->query->getGroupId());
+ $this->assertEquals("bar@qux.com", $this->query->getMember());
+ $this->assertEquals("wibble", $this->query->getStartGroupId());
+ $this->assertEquals(true, $this->query->getDirectOnly());
+ $expected_url = "https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/";
+ $expected_url .= "foo/?member=bar%40qux.com&start=wibble&directOnly=true";
+ $this->assertEquals($expected_url, $this->query->getQueryUrl());
+
+ $this->query->setMember("baz@blah.com");
+ $this->query->setGroupId("xyzzy");
+ $this->query->setStartGroupId("woof");
+ $this->query->setDirectOnly(false);
+ $this->assertEquals("xyzzy", $this->query->getGroupId());
+ $this->assertEquals("baz@blah.com", $this->query->getMember());
+ $this->assertEquals("woof", $this->query->getStartGroupId());
+ $this->assertEquals(false, $this->query->getDirectOnly());
+ $expected_url = "https://apps-apis.google.com/a/feeds/group/2.0/my.domain.com/";
+ $expected_url .= "xyzzy/?member=baz%40blah.com&start=woof&directOnly=false";
+ $this->assertEquals($expected_url, $this->query->getQueryUrl());
+ }
+
+}
+
Index: tests/Zend/Gdata/Gapps/PropertyTest.php
===================================================================
--- tests/Zend/Gdata/Gapps/PropertyTest.php (revision 0)
+++ tests/Zend/Gdata/Gapps/PropertyTest.php (revision 0)
@@ -0,0 +1,133 @@
+thePropertyText = file_get_contents(
+ 'Zend/Gdata/Gapps/_files/PropertyElementSample1.xml',
+ true);
+ $this->theProperty = new Zend_Gdata_Gapps_Extension_Property();
+ }
+
+ public function testEmptyPropertyShouldHaveNoExtensionElements() {
+ $this->assertTrue(is_array($this->theProperty->extensionElements));
+ $this->assertTrue(count($this->theProperty->extensionElements) == 0);
+ }
+
+ public function testEmptyPropertyShouldHaveNoExtensionAttributes() {
+ $this->assertTrue(is_array($this->theProperty->extensionAttributes));
+ $this->assertTrue(count($this->theProperty->extensionAttributes) == 0);
+ }
+
+ public function testSamplePropertyShouldHaveNoExtensionElements() {
+ $this->theProperty->transferFromXML($this->thePropertyText);
+ $this->assertTrue(is_array($this->theProperty->extensionElements));
+ $this->assertTrue(count($this->theProperty->extensionElements) == 0);
+ }
+
+ public function testSamplePropertyShouldHaveNoExtensionAttributes() {
+ $this->theProperty->transferFromXML($this->thePropertyText);
+ $this->assertTrue(is_array($this->theProperty->extensionAttributes));
+ $this->assertTrue(count($this->theProperty->extensionAttributes) == 0);
+ }
+
+ public function testNormalPropertyShouldHaveNoExtensionElements() {
+ $this->theProperty->name = "foo";
+ $this->theProperty->value = "bar";
+
+ $this->assertEquals("foo", $this->theProperty->name);
+ $this->assertEquals("bar", $this->theProperty->value);
+
+ $this->assertEquals(0, count($this->theProperty->extensionElements));
+ $newProperty = new Zend_Gdata_Gapps_Extension_Property();
+ $newProperty->transferFromXML($this->theProperty->saveXML());
+ $this->assertEquals(0, count($newProperty->extensionElements));
+ $newProperty->extensionElements = array(
+ new Zend_Gdata_App_Extension_Element('foo', 'atom', null, 'bar'));
+ $this->assertEquals(1, count($newProperty->extensionElements));
+ $this->assertEquals("foo", $newProperty->name);
+ $this->assertEquals("bar", $newProperty->value);
+
+ /* try constructing using magic factory */
+ $gdata = new Zend_Gdata_Gapps();
+ $newProperty2 = $gdata->newProperty();
+ $newProperty2->transferFromXML($newProperty->saveXML());
+ $this->assertEquals(1, count($newProperty2->extensionElements));
+ $this->assertEquals("foo", $newProperty2->name);
+ $this->assertEquals("bar", $newProperty2->value);
+ }
+
+ public function testEmptyPropertyToAndFromStringShouldMatch() {
+ $propertyXml = $this->theProperty->saveXML();
+ $newProperty = new Zend_Gdata_Gapps_Extension_Property();
+ $newProperty->transferFromXML($propertyXml);
+ $newPropertyXml = $newProperty->saveXML();
+ $this->assertTrue($propertyXml == $newPropertyXml);
+ }
+
+ public function testPropertyWithValueToAndFromStringShouldMatch() {
+ $this->theProperty->name = "foo2";
+ $this->theProperty->value = "bar2";
+ $propertyXml = $this->theProperty->saveXML();
+ $newProperty = new Zend_Gdata_Gapps_Extension_Property();
+ $newProperty->transferFromXML($propertyXml);
+ $newPropertyXml = $newProperty->saveXML();
+ $this->assertTrue($propertyXml == $newPropertyXml);
+ $this->assertEquals("foo2", $this->theProperty->name);
+ $this->assertEquals("bar2", $this->theProperty->value);
+ }
+
+ public function testExtensionAttributes() {
+ $extensionAttributes = $this->theProperty->extensionAttributes;
+ $extensionAttributes['foo1'] = array('name'=>'foo1', 'value'=>'bar');
+ $extensionAttributes['foo2'] = array('name'=>'foo2', 'value'=>'rab');
+ $this->theProperty->extensionAttributes = $extensionAttributes;
+ $this->assertEquals('bar', $this->theProperty->extensionAttributes['foo1']['value']);
+ $this->assertEquals('rab', $this->theProperty->extensionAttributes['foo2']['value']);
+ $propertyXml = $this->theProperty->saveXML();
+ $newProperty = new Zend_Gdata_Gapps_Extension_Property();
+ $newProperty->transferFromXML($propertyXml);
+ $this->assertEquals('bar', $newProperty->extensionAttributes['foo1']['value']);
+ $this->assertEquals('rab', $newProperty->extensionAttributes['foo2']['value']);
+ }
+
+ public function testConvertFullNameToAndFromString() {
+ $this->theProperty->transferFromXML($this->thePropertyText);
+ $this->assertEquals("Some Name", $this->theProperty->name);
+ $this->assertEquals("Some Value", $this->theProperty->value);
+ }
+
+}
Index: tests/Zend/Gdata/AllTests.php
===================================================================
--- tests/Zend/Gdata/AllTests.php (revision 22018)
+++ tests/Zend/Gdata/AllTests.php (working copy)
@@ -135,12 +135,22 @@
require_once 'Zend/Gdata/Gapps/EmailListRecipientQueryTest.php';
require_once 'Zend/Gdata/Gapps/EmailListTest.php';
require_once 'Zend/Gdata/Gapps/ErrorTest.php';
+require_once 'Zend/Gdata/Gapps/GroupEntryTest.php';
+require_once 'Zend/Gdata/Gapps/GroupFeedTest.php';
+require_once 'Zend/Gdata/Gapps/GroupQueryTest.php';
require_once 'Zend/Gdata/Gapps/LoginTest.php';
+require_once 'Zend/Gdata/Gapps/MemberEntryTest.php';
+require_once 'Zend/Gdata/Gapps/MemberFeedTest.php';
+require_once 'Zend/Gdata/Gapps/MemberQueryTest.php';
require_once 'Zend/Gdata/Gapps/NameTest.php';
require_once 'Zend/Gdata/Gapps/NicknameEntryTest.php';
require_once 'Zend/Gdata/Gapps/NicknameFeedTest.php';
require_once 'Zend/Gdata/Gapps/NicknameQueryTest.php';
require_once 'Zend/Gdata/Gapps/NicknameTest.php';
+require_once 'Zend/Gdata/Gapps/OwnerEntryTest.php';
+require_once 'Zend/Gdata/Gapps/OwnerFeedTest.php';
+require_once 'Zend/Gdata/Gapps/OwnerQueryTest.php';
+require_once 'Zend/Gdata/Gapps/PropertyTest.php';
require_once 'Zend/Gdata/Gapps/QuotaTest.php';
require_once 'Zend/Gdata/Gapps/ServiceExceptionTest.php';
require_once 'Zend/Gdata/Gapps/UserEntryTest.php';
@@ -319,12 +329,22 @@
$suite->addTestSuite('Zend_Gdata_Gapps_EmailListRecipientQueryTest');
$suite->addTestSuite('Zend_Gdata_Gapps_EmailListTest');
$suite->addTestSuite('Zend_Gdata_Gapps_ErrorTest');
+ $suite->addTestSuite('Zend_Gdata_Gapps_GroupEntryTest');
+ $suite->addTestSuite('Zend_Gdata_Gapps_GroupFeedTest');
+ $suite->addTestSuite('Zend_Gdata_Gapps_GroupQueryTest');
$suite->addTestSuite('Zend_Gdata_Gapps_LoginTest');
+ $suite->addTestSuite('Zend_Gdata_Gapps_MemberEntryTest');
+ $suite->addTestSuite('Zend_Gdata_Gapps_MemberFeedTest');
+ $suite->addTestSuite('Zend_Gdata_Gapps_MemberQueryTest');
$suite->addTestSuite('Zend_Gdata_Gapps_NameTest');
$suite->addTestSuite('Zend_Gdata_Gapps_NicknameEntryTest');
$suite->addTestSuite('Zend_Gdata_Gapps_NicknameFeedTest');
$suite->addTestSuite('Zend_Gdata_Gapps_NicknameQueryTest');
$suite->addTestSuite('Zend_Gdata_Gapps_NicknameTest');
+ $suite->addTestSuite('Zend_Gdata_Gapps_OwnerEntryTest');
+ $suite->addTestSuite('Zend_Gdata_Gapps_OwnerFeedTest');
+ $suite->addTestSuite('Zend_Gdata_Gapps_OwnerQueryTest');
+ $suite->addTestSuite('Zend_Gdata_Gapps_PropertyTest');
$suite->addTestSuite('Zend_Gdata_Gapps_QuotaTest');
$suite->addTestSuite('Zend_Gdata_Gapps_ServiceExceptionTest');
$suite->addTestSuite('Zend_Gdata_Gapps_UserEntryTest');