public function testFunctional()
{
$this->skipIfEc2PlatformDisabled();
$aws = $this->aws;
//$aws->setDebug(true);
$list = $aws->cloudFront->distribution->describe();
$this->assertInstanceOf($this->getCloudFrontClassName('DataType\\DistributionList'), $list);
/* @var $dist CloudFrontDataType\DistirbutionData */
foreach ($list as $dist) {
$dist->refresh();
$this->assertNotEmpty($dist->getOriginalXml());
$this->assertNotNull($dist->distributionConfig->getETag());
$dist->refreshConfig();
$this->assertNotNull($dist->getETag());
$this->assertInstanceOf($this->getCloudFrontClassName('DataType\\DistributionConfigData'), $dist->distributionConfig);
$this->assertNotEmpty($dist->distributionConfig->getOriginalXml());
$dom = new \DOMDocument();
$dom->loadXML($dist->distributionConfig->getOriginalXml());
$this->assertEqualXMLStructure($dom->firstChild, $dist->distributionConfig->toXml(true)->firstChild);
unset($dist);
}
unset($list);
//Creates distribution
$origin = new CloudFrontDataType\DistributionConfigOriginData();
$origin->originId = 'MyOriginId';
$origin->domainName = 'test.s3.amazonaws.com';
$origin->setS3OriginConfig(new CloudFrontDataType\DistributionS3OriginConfigData(''));
$fvd = new CloudFrontDataType\ForwardedValuesData();
$fvd->queryString = false;
$fvd->setCookies(new CloudFrontDataType\ForwardedValuesCookiesData(CloudFrontDataType\ForwardedValuesCookiesData::FORWARD_NONE));
$ts = new CloudFrontDataType\TrustedSignerList();
$ts->setEnabled(false);
$dcb = new CloudFrontDataType\CacheBehaviorData();
$dcb->minTtl = 3600;
$dcb->targetOriginId = $origin->originId;
$dcb->viewerProtocolPolicy = 'allow-all';
$dcb->setForwardedValues($fvd);
$dcb->setTrustedSigners($ts);
$dc = new CloudFrontDataType\DistributionConfigData();
$dc->comment = 'phpunit test distribution';
$dc->enabled = false;
$dc->setAliases(array(array('cname' => 'test2.scalr.com')));
$dc->priceClass = 'PriceClass_All';
$dc->setOrigins($origin);
$dc->setDefaultCacheBehavior($dcb);
$dist = $aws->cloudFront->distribution->create($dc);
$this->assertInstanceOf($this->getCloudFrontClassName('DataType\\DistributionData'), $dist);
$dist->refresh();
//Too time consuming test
// $ret = $dist->delete();
// $this->assertTrue($ret);
//Releases all memory from storage.
$aws->getEntityManager()->detachAll();
}