cacert-testmgr/external/ZendFramework-1.9.5/tests/Zend/Gdata/AppTest.php

558 lines
21 KiB
PHP
Raw Permalink Normal View History

<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Gdata
* @subpackage UnitTests
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id $
*/
require_once 'Zend/Gdata/App.php';
require_once 'Zend/Gdata/HttpClient.php';
require_once 'Zend/Gdata/TestUtility/MockHttpClient.php';
/**
* @category Zend
* @package Zend_Gdata_App
* @subpackage UnitTests
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @group Zend_Gdata
* @group Zend_Gdata_App
*/
class Zend_Gdata_AppTest extends PHPUnit_Framework_TestCase
{
public function setUp()
{
$this->fileName = 'Zend/Gdata/App/_files/FeedSample1.xml';
$this->expectedEtag = 'W/"CkcHQH8_fCp7ImA9WxRTGEw."';
$this->expectedMajorProtocolVersion = 1;
$this->expectedMinorProtocolVersion = 2;
$this->httpEntrySample = file_get_contents(
'Zend/Gdata/_files/AppSample1.txt',
true);
$this->httpEntrySampleWithoutVersion = file_get_contents(
'Zend/Gdata/_files/AppSample2.txt',
true);
$this->httpFeedSample = file_get_contents(
'Zend/Gdata/_files/AppSample3.txt',
true);
$this->httpFeedSampleWithoutVersion = file_get_contents(
'Zend/Gdata/_files/AppSample4.txt',
true);
$this->adapter = new Test_Zend_Gdata_MockHttpClient();
$this->client = new Zend_Gdata_HttpClient();
$this->client->setAdapter($this->adapter);
$this->service = new Zend_Gdata_App($this->client);
}
public function testImportFile()
{
$feed = Zend_Gdata_App::importFile($this->fileName,
'Zend_Gdata_App_Feed', true);
$this->assertEquals('dive into mark', $feed->title->text);
}
public function testSetAndGetHttpMethodOverride()
{
Zend_Gdata_App::setHttpMethodOverride(true);
$this->assertEquals(true, Zend_Gdata_App::getHttpMethodOverride());
}
public function testSetAndGetProtocolVersion()
{
$this->service->setMajorProtocolVersion(2);
$this->service->setMinorProtocolVersion(1);
$this->assertEquals(2, $this->service->getMajorProtocolVersion());
$this->assertEquals(1, $this->service->getMinorProtocolVersion());
}
public function testDefaultProtocolVersionIs1X()
{
$this->assertEquals(1, $this->service->getMajorProtocolVersion());
$this->assertEquals(null, $this->service->getMinorProtocolVersion());
}
public function testMajorProtocolVersionCannotBeLessThanOne()
{
$exceptionCaught = false;
try {
$this->service->setMajorProtocolVersion(0);
} catch (Zend_Gdata_App_InvalidArgumentException $e) {
$exceptionCaught = true;
}
$this->assertTrue($exceptionCaught, 'Expected exception not caught: '
+ 'Zend_Gdata_App_InvalidArgumentException');
}
public function testMajorProtocolVersionCannotBeNull()
{
$exceptionCaught = false;
try {
$this->service->setMajorProtocolVersion(null);
} catch (Zend_Gdata_App_InvalidArgumentException $e) {
$exceptionCaught = true;
}
$this->assertTrue($exceptionCaught, 'Expected exception not caught: '
+ 'Zend_Gdata_App_InvalidArgumentException');
}
public function testMinorProtocolVersionCannotBeLessThanZero()
{
$exceptionCaught = false;
try {
$this->service->setMinorProtocolVersion(-1);
} catch (Zend_Gdata_App_InvalidArgumentException $e) {
$exceptionCaught = true;
}
$this->assertTrue($exceptionCaught, 'Expected exception not caught: '
+ 'Zend_Gdata_App_InvalidArgumentException');
}
public function testNoGdataVersionHeaderSentWhenUsingV1()
{
$this->adapter->setResponse(array('HTTP/1.1 200 OK\r\n\r\n'));
$this->service->setMajorProtocolVersion(1);
$this->service->setMinorProtocolVersion(NULL);
$this->service->get('http://www.example.com');
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if (strstr($header, 'GData-Version:'))
$found = true;
}
$this->assertFalse($found, 'Version header found in V1 feed');
}
public function testNoGdataVersionHeaderSentWhenUsingV1X()
{
$this->adapter->setResponse(array('HTTP/1.1 200 OK\r\n\r\n'));
$this->service->setMajorProtocolVersion(1);
$this->service->setMinorProtocolVersion(1);
$this->service->get('http://www.example.com');
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if (strstr($header, 'GData-Version:'))
$found = true;
}
$this->assertTrue(!$found, 'Version header found in V1 feed');
}
public function testGdataVersionHeaderSentWhenUsingV2()
{
$this->adapter->setResponse(array('HTTP/1.1 200 OK\r\n\r\n'));
$this->service->setMajorProtocolVersion(2);
$this->service->setMinorProtocolVersion(NULL);
$this->service->get('http://www.example.com');
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if ($header == 'GData-Version: 2')
$found = true;
}
$this->assertTrue($found, 'Version header not found or incorrect');
}
public function testGdataVersionHeaderSentWhenUsingV2X()
{
$this->adapter->setResponse(array('HTTP/1.1 200 OK\r\n\r\n'));
$this->service->setMajorProtocolVersion(2);
$this->service->setMinorProtocolVersion(1);
$this->service->get('http://www.example.com');
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if ($header == 'GData-Version: 2')
$found = true;
}
$this->assertTrue($found, 'Version header not found or incorrect');
}
public function testHTTPETagsPropagateToEntriesOnGet()
{
$this->adapter->setResponse($this->httpEntrySample);
$entry = $this->service->getEntry('http://www.example.com');
$this->assertEquals($this->expectedEtag, $entry->getEtag());
}
public function testHTTPETagsPropagateToEntriesOnUpdate()
{
$this->adapter->setResponse($this->httpEntrySample);
$entry = new Zend_Gdata_App_Entry();
$newEntry = $this->service->updateEntry($entry, 'http://www.example.com');
$this->assertEquals($this->expectedEtag, $newEntry->getEtag());
}
public function testHTTPEtagsPropagateToEntriesOnInsert()
{
$this->adapter->setResponse($this->httpEntrySample);
$entry = new Zend_Gdata_App_Entry();
$newEntry = $this->service->insertEntry($entry, 'http://www.example.com');
$this->assertEquals($this->expectedEtag, $newEntry->getEtag());
}
public function testIfMatchHTTPHeaderSetOnUpdate()
{
$etag = 'ABCD1234';
$this->adapter->setResponse("HTTP/1.1 201 Created");
$this->service->setMajorProtocolVersion(2);
$entry = new Zend_Gdata_App_Entry();
$entry->link = array(new Zend_Gdata_App_Extension_Link(
'http://www.example.com',
'edit',
'application/atom+xml'));
$entry->setEtag($etag);
$this->service->updateEntry($entry);
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if ($header == 'If-Match: ' . $etag)
$found = true;
}
$this->assertTrue($found, 'If-Match header not found or incorrect');
}
public function testIfMatchHTTPHeaderSetOnUpdateIfWeak()
{
$etag = 'W/ABCD1234';
$this->adapter->setResponse("HTTP/1.1 201 Created");
$this->service->setMajorProtocolVersion(2);
$entry = new Zend_Gdata_App_Entry();
$entry->link = array(new Zend_Gdata_App_Extension_Link(
'http://www.example.com',
'edit',
'application/atom+xml'));
$entry->setEtag($etag);
$this->service->updateEntry($entry);
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if ($header == 'If-Match: ' . $etag)
$found = true;
}
$this->assertFalse($found, 'If-Match header found');
}
public function testIfMatchHTTPHeaderSetOnSave()
{
$etag = 'ABCD1234';
$this->adapter->setResponse("HTTP/1.1 201 Created");
$this->service->setMajorProtocolVersion(2);
$entry = $this->service->newEntry();
$entry->link = array(new Zend_Gdata_App_Extension_Link(
'http://www.example.com',
'edit',
'application/atom+xml'));
$entry->setEtag($etag);
$entry->setService($this->service);
$entry->save();
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if ($header == 'If-Match: ' . $etag)
$found = true;
}
$this->assertTrue($found, 'If-Match header not found or incorrect');
}
public function testIfMatchHTTPHeaderNotSetOnDelete()
{
$etag = 'ABCD1234';
$this->adapter->setResponse("HTTP/1.1 201 Created");
$this->service->setMajorProtocolVersion(2);
$entry = $this->service->newEntry();
$entry->link = array(new Zend_Gdata_App_Extension_Link(
'http://www.example.com',
'edit',
'application/atom+xml'));
$entry->setEtag($etag);
$entry->setService($this->service);
$entry->delete();
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if ($header == 'If-Match: ' . $etag)
$found = true;
}
$this->assertFalse($found, 'If-Match header found on delete');
}
public function testIfMatchHTTPHeaderSetOnManualPost()
{
$etag = 'ABCD1234';
$this->adapter->setResponse("HTTP/1.1 201 Created");
$this->service->setMajorProtocolVersion(2);
$entry = $this->service->newEntry();
$entry->setEtag($etag);
$entry->setService($this->service);
$this->service->post($entry, 'http://www.example.com');
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if ($header == 'If-Match: ' . $etag)
$found = true;
}
$this->assertTrue($found, 'If-Match header not found or incorrect');
}
public function testIfMatchHTTPHeaderSetOnManualPut()
{
$etag = 'ABCD1234';
$this->adapter->setResponse("HTTP/1.1 201 Created");
$this->service->setMajorProtocolVersion(2);
$entry = $this->service->newEntry();
$entry->link = array(new Zend_Gdata_App_Extension_Link(
'http://www.example.com',
'edit',
'application/atom+xml'));
$entry->setEtag($etag);
$entry->setService($this->service);
$this->service->put($entry);
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if ($header == 'If-Match: ' . $etag)
$found = true;
}
$this->assertTrue($found, 'If-Match header not found or incorrect');
}
public function testIfMatchHTTPHeaderSetOnManualDelete()
{
$etag = 'ABCD1234';
$this->adapter->setResponse("HTTP/1.1 201 Created");
$this->service->setMajorProtocolVersion(2);
$entry = $this->service->newEntry();
$entry->link = array(new Zend_Gdata_App_Extension_Link(
'http://www.example.com',
'edit',
'application/atom+xml'));
$entry->setEtag($etag);
$entry->setService($this->service);
$this->service->delete($entry);
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if ($header == 'If-Match: ' . $etag)
$found = true;
}
$this->assertFalse($found, 'If-Match header found on delete');
}
public function testIfMatchHeaderCanBeSetOnInsert() {
$etagOverride = 'foo';
$etag = 'ABCD1234';
$this->service->setMajorProtocolVersion(2);
$this->adapter->setResponse($this->httpEntrySample);
$entry = new Zend_Gdata_App_Entry();
$entry->setEtag($etag);
$newEntry = $this->service->insertEntry($entry,
'http://www.example.com',
'Zend_Gdata_App_Entry',
array('If-Match' => $etagOverride));
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if ($header == 'If-Match: ' . $etagOverride)
$found = true;
}
$this->assertTrue($found, 'If-Match header not found or incorrect');
}
public function testIfNoneMatchHeaderCanBeSetOnInsert() {
$etagOverride = 'foo';
$etag = 'ABCD1234';
$this->service->setMajorProtocolVersion(2);
$this->adapter->setResponse($this->httpEntrySample);
$entry = new Zend_Gdata_App_Entry();
$entry->setEtag($etag);
$newEntry = $this->service->insertEntry($entry,
'http://www.example.com',
'Zend_Gdata_App_Entry',
array('If-None-Match' => $etagOverride));
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if ($header == 'If-None-Match: ' . $etagOverride)
$found = true;
}
$this->assertTrue($found, 'If-None-Match header not found or incorrect ');
}
public function testIfMatchHeaderCanBeSetOnUpdate() {
$etagOverride = 'foo';
$etag = 'ABCD1234';
$this->service->setMajorProtocolVersion(2);
$this->adapter->setResponse($this->httpEntrySample);
$entry = new Zend_Gdata_App_Entry();
$entry->setEtag($etag);
$newEntry = $this->service->updateEntry($entry,
'http://www.example.com',
'Zend_Gdata_App_Entry',
array('If-Match' => $etagOverride));
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if ($header == 'If-Match: ' . $etagOverride)
$found = true;
}
$this->assertTrue($found, 'If-Match header not found or incorrect or incorrect');
}
public function testIfNoneMatchHeaderCanBeSetOnUpdate() {
$etagOverride = 'foo';
$etag = 'ABCD1234';
$this->service->setMajorProtocolVersion(2);
$this->adapter->setResponse($this->httpEntrySample);
$entry = new Zend_Gdata_App_Entry();
$entry->setEtag($etag);
$newEntry = $this->service->updateEntry($entry,
'http://www.example.com',
'Zend_Gdata_App_Entry',
array('If-None-Match' => $etagOverride));
$headers = $this->adapter->popRequest()->headers;
$found = false;
foreach ($headers as $header) {
if ($header == 'If-None-Match: ' . $etagOverride)
$found = true;
}
$this->assertTrue($found, 'If-None-Match header not found or incorrect');
}
public function testGenerateIfMatchHeaderDataReturnsEtagIfV2() {
$etag = 'ABCD1234';
$this->service->setMajorProtocolVersion(2);
$entry = new Zend_Gdata_App_Entry();
$entry->setEtag($etag);
$result = $this->service->generateIfMatchHeaderData($entry, false);
$this->assertEquals($etag, $result);
}
public function testGenerateIfMatchHeaderDataReturnsNullIfV1() {
$etag = 'ABCD1234';
$this->service->setMajorProtocolVersion(1);
$entry = new Zend_Gdata_App_Entry();
$entry->setEtag($etag);
$result = $this->service->generateIfMatchHeaderData($entry, false);
$this->assertEquals(null, $result);
}
public function testGenerateIfMatchHeaderDataReturnsNullIfNotEntry() {
$this->service->setMajorProtocolVersion(2);
$result = $this->service->generateIfMatchHeaderData("Hello world", false);
$this->assertEquals(null, $result);
}
public function testGenerateIfMatchHeaderDataReturnsNullIfWeak() {
$etag = 'W/ABCD1234';
$this->service->setMajorProtocolVersion(2);
$entry = new Zend_Gdata_App_Entry();
$entry->setEtag($etag);
$result = $this->service->generateIfMatchHeaderData($entry, false);
$this->assertEquals(null, $result);
}
public function testGenerateIfMatchHeaderDataReturnsEtagIfWeakAndFlagSet() {
$etag = 'W/ABCD1234';
$this->service->setMajorProtocolVersion(2);
$entry = new Zend_Gdata_App_Entry();
$entry->setEtag($etag);
$result = $this->service->generateIfMatchHeaderData($entry, true);
$this->assertEquals($etag, $result);
}
public function testGenerateIfMatchHeaderDataReturnsEtagIfNotWeakAndFlagSet() {
$etag = 'ABCD1234';
$this->service->setMajorProtocolVersion(2);
$entry = new Zend_Gdata_App_Entry();
$entry->setEtag($etag);
$result = $this->service->generateIfMatchHeaderData($entry, true);
$this->assertEquals($etag, $result);
}
public function testImportUrlSetsMajorProtocolVersionOnEntry() {
$this->adapter->setResponse($this->httpEntrySample);
$entry = $this->service->getEntry('http://www.example.com');
$this->assertEquals($this->expectedMajorProtocolVersion, $entry->getMajorProtocolVersion());
}
public function testImportUrlSetsMinorProtocolVersionOnEntry() {
$this->adapter->setResponse($this->httpEntrySample);
$entry = $this->service->getEntry('http://www.example.com');
$this->assertEquals($this->expectedMinorProtocolVersion, $entry->getMinorProtocolVersion());
}
public function testImportUrlSetsNullVersionIfNoVersionHeaderOnEntry() {
$this->adapter->setResponse($this->httpEntrySampleWithoutVersion);
$entry = $this->service->getEntry('http://www.example.com');
$this->assertEquals(null, $entry->getMinorProtocolVersion());
$this->assertEquals(null, $entry->getMinorProtocolVersion());
}
public function testImportUrlSetsMajorProtocolVersionOnFeed() {
$this->adapter->setResponse($this->httpFeedSample);
$feed = $this->service->getFeed('http://www.example.com');
$this->assertEquals($this->expectedMajorProtocolVersion, $feed->getMajorProtocolVersion());
foreach ($feed as $entry) {
$this->assertEquals($this->expectedMajorProtocolVersion, $entry->getMajorProtocolVersion());
}
}
public function testImportUrlSetsMinorProtocolVersionOnFeed() {
$this->adapter->setResponse($this->httpFeedSample);
$feed = $this->service->getFeed('http://www.example.com');
$this->assertEquals($this->expectedMinorProtocolVersion, $feed->getMinorProtocolVersion());
foreach ($feed as $entry) {
$this->assertEquals($this->expectedMinorProtocolVersion, $entry->getMinorProtocolVersion());
}
}
public function testImportUrlSetsNullVersionIfNoVersionHeaderOnFeed() {
$this->adapter->setResponse($this->httpFeedSampleWithoutVersion);
$feed = $this->service->getFeed('http://www.example.com');
$this->assertEquals(null, $feed->getMajorProtocolVersion());
$this->assertEquals(null, $feed->getMinorProtocolVersion());
foreach ($feed as $entry) {
$this->assertEquals(null, $entry->getMajorProtocolVersion());
$this->assertEquals(null, $entry->getMinorProtocolVersion());
}
}
public function testMagicConstructorsPropogateMajorVersion() {
$v = 42;
$this->service->setMajorProtocolVersion($v);
$feed = $this->service->newFeed();
$this->assertEquals($v, $feed->getMajorProtocolVersion());
}
public function testMagicConstructorsPropogateMinorVersion() {
$v = 84;
$this->service->setMinorProtocolVersion($v);
$feed = $this->service->newFeed();
$this->assertEquals($v, $feed->getMinorProtocolVersion());
}
}