175 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			175 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace OSS\Tests; | ||
|  | 
 | ||
|  | use OSS\Core\OssException; | ||
|  | use OSS\OssClient; | ||
|  | use OSS\Model\RestoreConfig; | ||
|  | 
 | ||
|  | require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestOssClientBase.php'; | ||
|  | 
 | ||
|  | 
 | ||
|  | class OssClientRestoreObjectTest extends TestOssClientBase | ||
|  | { | ||
|  |     private $iaBucket; | ||
|  |     private $archiveBucket; | ||
|  | 
 | ||
|  |     public function testIARestoreObject() | ||
|  |     { | ||
|  |         $object = 'storage-object'; | ||
|  | 
 | ||
|  |         $this->ossClient->putObject($this->iaBucket, $object,'testcontent'); | ||
|  |         try{ | ||
|  |             $this->ossClient->restoreObject($this->iaBucket, $object); | ||
|  |             $this->assertTrue(false); | ||
|  |         }catch (OssException $e){ | ||
|  |             $this->assertEquals('400', $e->getHTTPStatus()); | ||
|  |             $this->assertEquals('OperationNotSupported', $e->getErrorCode()); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testNullObjectRestoreObject() | ||
|  |     { | ||
|  |         $object = 'null-object'; | ||
|  | 
 | ||
|  |         try{ | ||
|  |             $this->ossClient->restoreObject($this->bucket, $object); | ||
|  |             $this->assertTrue(false); | ||
|  |         }catch (OssException $e){ | ||
|  |             $this->assertEquals('404', $e->getHTTPStatus()); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testArchiveRestoreObject() | ||
|  |     { | ||
|  |         $object = 'storage-object'; | ||
|  | 
 | ||
|  |         $this->ossClient->putObject($this->archiveBucket, $object,'testcontent'); | ||
|  |         try{ | ||
|  |             $this->ossClient->getObject($this->archiveBucket, $object); | ||
|  |             $this->assertTrue(false); | ||
|  |         }catch (OssException $e){ | ||
|  |             $this->assertEquals('403', $e->getHTTPStatus()); | ||
|  |             $this->assertEquals('InvalidObjectState', $e->getErrorCode()); | ||
|  |         } | ||
|  |         $result = $this->ossClient->restoreObject($this->archiveBucket, $object); | ||
|  |         common::waitMetaSync(); | ||
|  |         $this->assertEquals('202', $result['info']['http_code']); | ||
|  | 
 | ||
|  |         try{ | ||
|  |             $this->ossClient->restoreObject($this->archiveBucket, $object); | ||
|  |         }catch(OssException $e){ | ||
|  |             $this->assertEquals('409', $e->getHTTPStatus()); | ||
|  |             $this->assertEquals('RestoreAlreadyInProgress', $e->getErrorCode()); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testColdArchiveRestoreObject() | ||
|  |     { | ||
|  |         $client = new OssClient( | ||
|  |             getenv('OSS_ACCESS_KEY_ID'), | ||
|  |             getenv('OSS_ACCESS_KEY_SECRET'), | ||
|  |             'oss-ap-southeast-1.aliyuncs.com', false); | ||
|  | 
 | ||
|  |         $bucket = $this->bucket . 'cold-archive'; | ||
|  |         $object = 'storage-object'; | ||
|  | 
 | ||
|  |         //create bucket
 | ||
|  |         $options = array( | ||
|  |             OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_COLDARCHIVE | ||
|  |         ); | ||
|  |         $client->createBucket($bucket, OssClient::OSS_ACL_TYPE_PRIVATE, $options); | ||
|  | 
 | ||
|  |         //test with days
 | ||
|  |         $client->putObject($bucket, $object,'testcontent'); | ||
|  | 
 | ||
|  |         try{ | ||
|  |             $client->getObject($bucket, $object); | ||
|  |             $this->assertTrue(false); | ||
|  |         }catch (OssException $e){ | ||
|  |             $this->assertEquals('403', $e->getHTTPStatus()); | ||
|  |             $this->assertEquals('InvalidObjectState', $e->getErrorCode()); | ||
|  |         } | ||
|  | 
 | ||
|  |         $config = new RestoreConfig(5); | ||
|  |         $resoptions = array( | ||
|  |             OssClient::OSS_RESTORE_CONFIG => $config | ||
|  |         ); | ||
|  |         try{ | ||
|  |             $client->restoreObject($bucket, $object, $resoptions); | ||
|  |         }catch(OssException $e){ | ||
|  |             $this->assertTrue(false); | ||
|  |         } | ||
|  | 
 | ||
|  |         try{ | ||
|  |             $client->restoreObject($bucket, $object, $resoptions); | ||
|  |         }catch(OssException $e){ | ||
|  |             $this->assertEquals('409', $e->getHTTPStatus()); | ||
|  |             $this->assertEquals('RestoreAlreadyInProgress', $e->getErrorCode()); | ||
|  |         } | ||
|  | 
 | ||
|  |         //test with days & tier
 | ||
|  |         $client->putObject($bucket, $object,'testcontent'); | ||
|  | 
 | ||
|  |         try{ | ||
|  |             $client->getObject($bucket, $object); | ||
|  |             $this->assertTrue(false); | ||
|  |         }catch (OssException $e){ | ||
|  |             $this->assertEquals('403', $e->getHTTPStatus()); | ||
|  |             $this->assertEquals('InvalidObjectState', $e->getErrorCode()); | ||
|  |         } | ||
|  | 
 | ||
|  |         $config = new RestoreConfig(5, "Expedited"); | ||
|  |         $resoptions = array( | ||
|  |             OssClient::OSS_RESTORE_CONFIG => $config | ||
|  |         ); | ||
|  |         try{ | ||
|  |             $client->restoreObject($bucket, $object, $resoptions); | ||
|  |         }catch(OssException $e){ | ||
|  |             $this->assertTrue(false); | ||
|  |         } | ||
|  | 
 | ||
|  |         try{ | ||
|  |             $client->restoreObject($bucket, $object, $resoptions); | ||
|  |         }catch(OssException $e){ | ||
|  |             $this->assertEquals('409', $e->getHTTPStatus()); | ||
|  |             $this->assertEquals('RestoreAlreadyInProgress', $e->getErrorCode()); | ||
|  |         } | ||
|  | 
 | ||
|  |         $client->deleteObject($bucket, $object); | ||
|  |         $client->deleteBucket($bucket); | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     protected function setUp(): void | ||
|  |     { | ||
|  |         parent::setUp(); | ||
|  | 
 | ||
|  |         $this->iaBucket = 'ia-' . $this->bucket; | ||
|  |         $this->archiveBucket = 'archive-' . $this->bucket; | ||
|  |         $options = array( | ||
|  |             OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_IA | ||
|  |         ); | ||
|  | 
 | ||
|  |         $this->ossClient->createBucket($this->iaBucket, OssClient::OSS_ACL_TYPE_PRIVATE, $options); | ||
|  | 
 | ||
|  |         $options = array( | ||
|  |             OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_ARCHIVE | ||
|  |         ); | ||
|  | 
 | ||
|  |         $this->ossClient->createBucket($this->archiveBucket, OssClient::OSS_ACL_TYPE_PRIVATE, $options); | ||
|  |     } | ||
|  | 
 | ||
|  |     protected function tearDown(): void | ||
|  |     { | ||
|  |         parent::tearDown(); | ||
|  | 
 | ||
|  |         $object = 'storage-object'; | ||
|  | 
 | ||
|  |         $this->ossClient->deleteObject($this->iaBucket, $object); | ||
|  |         $this->ossClient->deleteObject($this->archiveBucket, $object); | ||
|  |         $this->ossClient->deleteBucket($this->iaBucket); | ||
|  |         $this->ossClient->deleteBucket($this->archiveBucket); | ||
|  |     } | ||
|  | } |