141 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			141 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace OSS\Tests;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use OSS\Core\OssException;
							 | 
						||
| 
								 | 
							
								use OSS\OssClient;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestOssClientBase.php';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class OssClientBucketTest extends TestOssClientBase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    private $standardBucket;
							 | 
						||
| 
								 | 
							
								    private $iaBucket;
							 | 
						||
| 
								 | 
							
								    private $archiveBucket;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testBucketWithInvalidName()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->ossClient->createBucket("s");
							 | 
						||
| 
								 | 
							
								            $this->assertFalse(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('"s"bucket name is invalid', $e->getMessage());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testBucketWithInvalidACL()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $this->ossClient->createBucket($this->bucket, "invalid");
							 | 
						||
| 
								 | 
							
								            $this->assertFalse(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('invalid:acl is invalid(private,public-read,public-read-write)', $e->getMessage());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testBucket()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->ossClient->createBucket($this->bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $bucketListInfo = $this->ossClient->listBuckets();
							 | 
						||
| 
								 | 
							
								        $this->assertNotNull($bucketListInfo);
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        $bucketList = $bucketListInfo->getBucketList();
							 | 
						||
| 
								 | 
							
								        $this->assertTrue(is_array($bucketList));
							 | 
						||
| 
								 | 
							
								        $this->assertGreaterThan(0, count($bucketList));
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        $this->ossClient->putBucketAcl($this->bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE);
							 | 
						||
| 
								 | 
							
								        Common::waitMetaSync();
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($this->ossClient->getBucketAcl($this->bucket), OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($this->ossClient->doesBucketExist($this->bucket));
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($this->ossClient->doesBucketExist($this->bucket . '-notexist'));
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($this->ossClient->getBucketLocation($this->bucket), Common::getRegion());
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        $res = $this->ossClient->getBucketMeta($this->bucket);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('200', $res['info']['http_code']);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(Common::getRegion(), $res['x-oss-bucket-region']);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function  testCreateBucketWithStorageType()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $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());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->ossClient->putObject($this->iaBucket, $object,'testcontent');
							 | 
						||
| 
								 | 
							
								        $result = $this->ossClient->getObject($this->iaBucket, $object);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($result, 'testcontent');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->ossClient->putObject($this->bucket, $object,'testcontent');
							 | 
						||
| 
								 | 
							
								        $result = $this->ossClient->getObject($this->bucket, $object);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($result, 'testcontent');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function  testCreateBucketWithInvalidStorageType()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $options = array(
							 | 
						||
| 
								 | 
							
								                OssClient::OSS_STORAGE => 'unknown'
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								            $this->ossClient->createBucket('bucket-name', OssClient::OSS_ACL_TYPE_PRIVATE, $options);
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertTrue(true);
							 | 
						||
| 
								 | 
							
								            if (strpos($e, "storage name is invalid") == false)
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                $this->assertTrue(false);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected function setUp(): void
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        parent::setUp();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->iaBucket = 'ia-' . $this->bucket;
							 | 
						||
| 
								 | 
							
								        $this->archiveBucket = 'archive-' . $this->bucket;
							 | 
						||
| 
								 | 
							
								        $this->standardBucket = 'standard-' . $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);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $options = array(
							 | 
						||
| 
								 | 
							
								            OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_STANDARD
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->ossClient->createBucket($this->standardBucket, 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);
							 | 
						||
| 
								 | 
							
								        $this->ossClient->deleteBucket($this->standardBucket);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |