473 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			473 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace OSS\Tests;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use OSS\Core\OssException;
							 | 
						||
| 
								 | 
							
								use OSS\OssClient;
							 | 
						||
| 
								 | 
							
								use OSS\Model\RestoreConfig;
							 | 
						||
| 
								 | 
							
								use OSS\Model\TaggingConfig;
							 | 
						||
| 
								 | 
							
								use OSS\Model\Tag;
							 | 
						||
| 
								 | 
							
								use OSS\Core\OssUtil;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestOssClientBase.php';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class OssClientObjectRequestPaymentTest extends TestOssClientBase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    private $payerClient;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testPayerClientWithoutRequester()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->listObjects($this->bucket);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->createObjectDir($this->bucket, 'folder/');
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->putObject($this->bucket, 'object', 'content');
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->putSymlink($this->bucket, 'symlink', 'default-object');
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->getSymlink($this->bucket, 'default-symlink');
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								    		$this->payerClient->uploadFile($this->bucket, 'file-object', __FILE__);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								    		$this->payerClient->appendObject($this->bucket, 'append-object', 'content', 0);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								    		$this->payerClient->appendObject($this->bucket, 'append-file', __FILE__, 0);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								    		$this->payerClient->copyObject($this->bucket, 'default-object', $this->bucket, 'copy-object');
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->getObjectMeta($this->bucket, 'default-object');
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->getSimplifiedObjectMeta($this->bucket, 'default-object');
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->deleteObject($this->bucket, 'default-object');
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->getObject($this->bucket, 'default-object');
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->doesObjectExist($this->bucket, 'default-object');
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->restoreObject($this->bucket, 'default-ia-object');
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $config = new TaggingConfig();
							 | 
						||
| 
								 | 
							
								            $config->addTag(new Tag("key1", "value1"));
							 | 
						||
| 
								 | 
							
								            $this->payerClient->putObjectTagging($this->bucket, 'default-object', $config);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->getObjectTagging($this->bucket, 'default-object');
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->deleteObjectTagging($this->bucket, 'default-object');
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->initiateMultipartUpload($this->bucket, 'mup-object');
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $uploadId= $this->ossClient->initiateMultipartUpload($this->bucket, 'mup-object');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->listParts($this->bucket, 'mup-object', $uploadId);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->abortMultipartUpload($this->bucket, 'mup-object', $uploadId);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->listMultipartUploads($this->bucket);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->multiuploadFile($this->bucket, 'mup-file', __FILE__);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('AccessDenied', $e->getErrorCode());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testObjectOperationsWithRequester()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $options = array(
							 | 
						||
| 
								 | 
							
								            OssClient::OSS_HEADERS => array(
							 | 
						||
| 
								 | 
							
								                OssClient::OSS_REQUEST_PAYER => 'requester',
							 | 
						||
| 
								 | 
							
								        ));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->listObjects($this->bucket, $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->createObjectDir($this->bucket, 'folder/', $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->putObject($this->bucket, 'object', 'content', $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->putSymlink($this->bucket, 'symlink', 'default-object', $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->getSymlink($this->bucket, 'default-symlink', $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								    		$this->payerClient->uploadFile($this->bucket, 'file-object', __FILE__, $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								    		$this->payerClient->appendObject($this->bucket, 'append-object', 'content', 0, $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								    		$this->payerClient->appendObject($this->bucket, 'append-file', __FILE__, 0, $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								    		$this->payerClient->copyObject($this->bucket, 'default-object', $this->bucket, 'copy-object', $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->getObjectMeta($this->bucket, 'default-object', $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->getSimplifiedObjectMeta($this->bucket, 'default-object', $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->getObject($this->bucket, 'default-object', $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->putObject($this->bucket, 'test-object', 'content', $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->deleteObject($this->bucket, 'test-object', $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->doesObjectExist($this->bucket, 'default-object', $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $ia_options = array(
							 | 
						||
| 
								 | 
							
								            OssClient::OSS_HEADERS => array(
							 | 
						||
| 
								 | 
							
								                'x-oss-storage-class' => 'Archive',
							 | 
						||
| 
								 | 
							
								        ));
							 | 
						||
| 
								 | 
							
								        $this->ossClient->putObject($this->bucket, 'default-Archive-object', 'content', $ia_options);
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->restoreObject($this->bucket, 'default-Archive-object', $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $config = new TaggingConfig();
							 | 
						||
| 
								 | 
							
								            $config->addTag(new Tag("key1", "value1"));
							 | 
						||
| 
								 | 
							
								            $this->payerClient->putObjectTagging($this->bucket, 'default-object', $config, $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->getObjectTagging($this->bucket, 'default-object', $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->deleteObjectTagging($this->bucket, 'default-object', $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    public function testMultipartOperationsWithRequester()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $options = array(
							 | 
						||
| 
								 | 
							
								            OssClient::OSS_HEADERS => array(
							 | 
						||
| 
								 | 
							
								                OssClient::OSS_REQUEST_PAYER => 'requester',
							 | 
						||
| 
								 | 
							
								        ));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $object = "mpu/multipart-test.txt";
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         *  step 1. 初始化一个分块上传事件, 也就是初始化上传Multipart, 获取upload id
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $upload_id = $this->payerClient->initiateMultipartUpload($this->bucket, $object, $options);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertFalse(true);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        /*
							 | 
						||
| 
								 | 
							
								         * step 2. 上传分片
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        $part_size = 1 * 1024 * 1024;
							 | 
						||
| 
								 | 
							
								        $upload_file = __FILE__;
							 | 
						||
| 
								 | 
							
								        $upload_filesize = filesize($upload_file);
							 | 
						||
| 
								 | 
							
								        $pieces = $this->payerClient->generateMultiuploadParts($upload_filesize, $part_size);
							 | 
						||
| 
								 | 
							
								        $response_upload_part = array();
							 | 
						||
| 
								 | 
							
								        $upload_position = 0;
							 | 
						||
| 
								 | 
							
								        $is_check_md5 = false;
							 | 
						||
| 
								 | 
							
								        foreach ($pieces as $i => $piece) {
							 | 
						||
| 
								 | 
							
								            $from_pos = $upload_position + (integer)$piece[OssClient::OSS_SEEK_TO];
							 | 
						||
| 
								 | 
							
								            $to_pos = (integer)$piece[OssClient::OSS_LENGTH] + $from_pos - 1;
							 | 
						||
| 
								 | 
							
								            $up_options = array(
							 | 
						||
| 
								 | 
							
								                OssClient::OSS_FILE_UPLOAD => $upload_file,
							 | 
						||
| 
								 | 
							
								                OssClient::OSS_PART_NUM => ($i + 1),
							 | 
						||
| 
								 | 
							
								                OssClient::OSS_SEEK_TO => $from_pos,
							 | 
						||
| 
								 | 
							
								                OssClient::OSS_LENGTH => $to_pos - $from_pos + 1,
							 | 
						||
| 
								 | 
							
								                OssClient::OSS_CHECK_MD5 => $is_check_md5,
							 | 
						||
| 
								 | 
							
								                OssClient::OSS_HEADERS => array(
							 | 
						||
| 
								 | 
							
								                    OssClient::OSS_REQUEST_PAYER => 'requester',
							 | 
						||
| 
								 | 
							
								                ),
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            //2. 将每一分片上传到OSS
							 | 
						||
| 
								 | 
							
								            try {
							 | 
						||
| 
								 | 
							
								                $response_upload_part[] = $this->ossClient->uploadPart($this->bucket, $object, $upload_id, $up_options);
							 | 
						||
| 
								 | 
							
								            } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								                $this->assertFalse(true);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $upload_parts = array();
							 | 
						||
| 
								 | 
							
								        foreach ($response_upload_part as $i => $eTag) {
							 | 
						||
| 
								 | 
							
								            $upload_parts[] = array(
							 | 
						||
| 
								 | 
							
								                'PartNumber' => ($i + 1),
							 | 
						||
| 
								 | 
							
								                'ETag' => $eTag,
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $listPartsInfo = $this->payerClient->listParts($this->bucket, $object, $upload_id, $options);
							 | 
						||
| 
								 | 
							
								            $this->assertNotNull($listPartsInfo);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $uploads = $this->payerClient->listMultipartUploads($this->bucket, $options);
							 | 
						||
| 
								 | 
							
								            $this->assertNotNull($uploads);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * step 3.
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->payerClient->completeMultipartUpload($this->bucket, $object, $upload_id, $upload_parts, $options);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testMiscOperationsWithRequester()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        //use multipart
							 | 
						||
| 
								 | 
							
								        $options = array(
							 | 
						||
| 
								 | 
							
								            OssClient::OSS_PART_SIZE => 1,
							 | 
						||
| 
								 | 
							
								            OssClient::OSS_HEADERS => array(
							 | 
						||
| 
								 | 
							
								                OssClient::OSS_REQUEST_PAYER => 'requester',
							 | 
						||
| 
								 | 
							
								        ));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $bigFileName = __DIR__ . DIRECTORY_SEPARATOR . "/bigfile.tmp";
							 | 
						||
| 
								 | 
							
								        OssUtil::generateFile($bigFileName, 256 * 1024);
							 | 
						||
| 
								 | 
							
								        $object = 'mpu/multipart-bigfile-test.tmp';
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->ossClient->multiuploadFile($this->bucket, $object, $bigFileName, $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertFalse(true);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //use uploadfile
							 | 
						||
| 
								 | 
							
								        $options = array(
							 | 
						||
| 
								 | 
							
								            OssClient::OSS_PART_SIZE => 1024*1024,
							 | 
						||
| 
								 | 
							
								            OssClient::OSS_HEADERS => array(
							 | 
						||
| 
								 | 
							
								                OssClient::OSS_REQUEST_PAYER => 'requester',
							 | 
						||
| 
								 | 
							
								        ));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->ossClient->multiuploadFile($this->bucket, $object, $bigFileName, $options);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertFalse(true);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        unlink($bigFileName);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected function setUp(): void
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        parent::setUp();
							 | 
						||
| 
								 | 
							
								        $this->payerClient = new OssClient(
							 | 
						||
| 
								 | 
							
								            getenv('OSS_PAYER_ACCESS_KEY_ID'),
							 | 
						||
| 
								 | 
							
								            getenv('OSS_PAYER_ACCESS_KEY_SECRET'),
							 | 
						||
| 
								 | 
							
								            getenv('OSS_ENDPOINT'), false);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $policy = '{"Version":"1","Statement":[{"Action":["oss:*"],"Effect": "Allow",'.
							 | 
						||
| 
								 | 
							
								                  '"Principal":["' . getenv('OSS_PAYER_UID') . '"],'.
							 | 
						||
| 
								 | 
							
								                  '"Resource": ["acs:oss:*:*:' . $this->bucket . '","acs:oss:*:*:' . $this->bucket . '/*"]}]}';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->ossClient->putBucketPolicy($this->bucket, $policy);
							 | 
						||
| 
								 | 
							
								        $this->ossClient->putBucketRequestPayment($this->bucket, 'Requester');
							 | 
						||
| 
								 | 
							
								        $this->ossClient->putObject($this->bucket, "default-object", "");
							 | 
						||
| 
								 | 
							
								        $this->ossClient->putSymlink($this->bucket, "default-symlink", "default-object");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected function tearDown(): void
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        parent::tearDown();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |