Exemplo n.º 1
0
 /**
  * @test
  */
 public function testFunctionalS3()
 {
     $this->skipIfEc2PlatformDisabled();
     $client = $this->s3->getApiHandler()->getClient();
     //AP region aws instance
     $awsap = $this->getEnvironment()->aws(Aws::REGION_AP_SOUTHEAST_1);
     $awsap->s3->enableEntityManager();
     $bucketList = $this->s3->bucket->getList();
     $this->assertInstanceOf(self::CLASS_S3_BUCKET_LIST, $bucketList);
     $this->assertInstanceOf(self::CLASS_S3, $bucketList->getS3());
     $this->assertInstanceOf(self::CLASS_S3_OWNER_DATA, $bucketList->getOwner());
     $bucket = $this->s3->bucket->get(self::getTestName('bucket'));
     if ($bucket !== null) {
         $list = $awsap->s3->bucket->listObjects($bucket->bucketName);
         /* @var $object ObjectData */
         foreach ($list as $object) {
             if ($object->objectName == self::getTestName(self::OBJECT_NAME_DUMMY)) {
                 //Removes dummy object
                 $object->delete();
             }
         }
         //Removes bucket
         $awsap->s3->bucket->delete($bucket->bucketName);
         unset($bucket);
         unset($list);
     }
     $bucket = $this->s3->bucket->get(self::getTestName('bucket-copy'));
     if ($bucket !== null) {
         $list = $awsap->s3->bucket->listObjects($bucket->bucketName);
         foreach ($list as $object) {
             if ($object->objectName == self::getTestName(self::OBJECT_NAME_DUMMY)) {
                 $object->delete();
             }
         }
         $awsap->s3->bucket->delete($bucket->bucketName);
         unset($bucket);
         unset($list);
     }
     //Tests creation of the bucket
     $bucket = $awsap->s3->bucket->create(self::getTestName('bucket'));
     $this->assertInstanceOf(self::CLASS_S3_BUCKET_DATA, $bucket);
     $this->assertInstanceOf(self::CLASS_S3, $bucket->getS3());
     $this->assertEquals(self::getTestName('bucket'), $bucket->bucketName);
     $this->assertNotEmpty($bucket->creationDate);
     $bucketCopy = $awsap->s3->bucket->create(self::getTestName('bucket-copy'));
     $this->assertInstanceOf(self::CLASS_S3_BUCKET_DATA, $bucketCopy);
     $this->assertInstanceOf(self::CLASS_S3, $bucketCopy->getS3());
     //Checks location
     $this->assertEquals(Aws::REGION_AP_SOUTHEAST_1, $bucket->getLocation());
     $acl = $bucket->getAcl();
     $this->assertInstanceOf(self::CLASS_S3_ACCESS_CONTROL_POLICY_DATA, $acl);
     $this->assertNotEmpty($acl->toXml());
     //Checks that generated document is properly constructed.
     $dom = new \DOMDocument();
     $dom->loadXML($acl->getOriginalXml());
     $this->assertEqualXMLStructure($acl->toXml(true)->firstChild, $dom->firstChild);
     //Applies canned ACL
     $ret = $bucket->setAcl(array('x-amz-acl' => 'authenticated-read'));
     $this->assertTrue($ret);
     $acl2 = $bucket->getAcl();
     $this->assertInstanceOf(self::CLASS_S3_ACCESS_CONTROL_POLICY_DATA, $acl2);
     //Restores acl to previous state
     $ret = $bucket->setAcl($acl);
     $this->assertTrue($ret);
     //Compare restored with its stored value
     $this->assertEqualXMLStructure($bucket->getAcl()->toXml(true)->firstChild, $dom->firstChild);
     //Create object test
     $fileInfo = new SplFileInfo($this->getFixturesDirectory() . '/dummy');
     /* @var $response ClientResponseInterface */
     $response = $bucket->addObject(self::getTestName(self::OBJECT_NAME_DUMMY), $fileInfo, array('Content-Type' => 'text/plain; charset:UTF-8'));
     $this->assertInstanceOf($this->getAwsClassName('Client\\ClientResponseInterface'), $response);
     $this->assertNotEmpty($response->getHeader('ETag'));
     /* @var $dresponse ClientResponseInterface */
     $dresponse = $bucket->getObject(self::getTestName(self::OBJECT_NAME_DUMMY));
     $this->assertInstanceOf($this->getAwsClassName('Client\\ClientResponseInterface'), $dresponse);
     $objectContent = $dresponse->getRawContent();
     $this->assertContains('This is a dummy file', $objectContent);
     unset($dresponse);
     $objList = $bucket->listObjects();
     $this->assertInstanceOf($this->getS3ClassName('DataType\\ObjectList'), $objList);
     $object = $awsap->s3->object->get(array(self::getTestName('bucket'), self::getTestName(self::OBJECT_NAME_DUMMY)));
     $this->assertInstanceOf($this->getS3ClassName('DataType\\ObjectData'), $object);
     $this->assertSame($object, $objList[0]);
     $arr = $awsap->s3->bucket->getObjectsFromStorage(self::getTestName('bucket'));
     $this->assertSame($object, $arr[0]);
     unset($arr);
     $objectAcl = $object->getAcl();
     $this->assertInstanceOf(self::CLASS_S3_ACCESS_CONTROL_POLICY_DATA, $objectAcl);
     $ret = $object->setAcl(array('x-amz-acl' => 'public-read'));
     $this->assertTrue($ret);
     $objectAclChanged = $object->getAcl();
     $this->assertInstanceOf(self::CLASS_S3_ACCESS_CONTROL_POLICY_DATA, $objectAclChanged);
     $this->assertContains('xsi:type="CanonicalUser"', $objectAclChanged->toXml());
     unset($objectAclChanged);
     unset($objectAcl);
     $rmetadata = $object->getMetadata();
     $this->assertInstanceOf($this->getAwsClassName('Client\\ClientResponseInterface'), $rmetadata);
     $this->assertNotEmpty($rmetadata->getHeader('ETag'));
     $this->assertNotEmpty($rmetadata->getHeader('Last-Modified'));
     unset($rmetadata);
     $copyResponse = $object->copy($bucketCopy, self::getTestName(self::OBJECT_NAME_DUMMY));
     $this->assertInstanceOf($this->getS3ClassName('DataType\\CopyObjectResponseData'), $copyResponse);
     $this->assertInstanceOf(self::CLASS_S3, $copyResponse->getS3());
     $this->assertEquals(self::getTestName('bucket-copy'), $copyResponse->bucketName);
     $this->assertEquals(self::getTestName(self::OBJECT_NAME_DUMMY), $copyResponse->objectName);
     $this->assertNotEmpty($copyResponse->eTag);
     $this->assertInstanceOf('DateTime', $copyResponse->lastModified);
     $this->assertInternalType('array', $copyResponse->headers);
     unset($copyResponse);
     $dresponse = $bucket->deleteObject(self::getTestName(self::OBJECT_NAME_DUMMY));
     $this->assertInstanceOf($this->getAwsClassName('Client\\ClientResponseInterface'), $dresponse);
     $this->assertEquals(204, $dresponse->getResponseCode());
     unset($dresponse);
     unset($objList);
     unset($object);
     //Object must be detached from entity storage after deletion.
     $object = $awsap->s3->object->get(array(self::getTestName('bucket'), self::getTestName(self::OBJECT_NAME_DUMMY)));
     $this->assertNull($object);
     $dresponse = $bucketCopy->deleteObject(self::getTestName(self::OBJECT_NAME_DUMMY));
     $this->assertInstanceOf($this->getAwsClassName('Client\\ClientResponseInterface'), $dresponse);
     $this->assertEquals(204, $dresponse->getResponseCode());
     unset($dresponse);
     $ret = $bucket->delete();
     $this->assertTrue($ret);
     $this->assertNull($this->s3->bucket->get(self::getTestName('bucket')));
     unset($bucket);
     $ret = $bucketCopy->delete();
     $this->assertTrue($ret);
     $this->assertNull($this->s3->bucket->get(self::getTestName('bucket-copy')));
     unset($bucketCopy);
 }
Exemplo n.º 2
0
 /**
  * Gets an entity manager
  *
  * @return EntityManager
  */
 public function getEntityManager()
 {
     return $this->s3->getEntityManager();
 }