Files
douba_shop/vendor/qcloud/cos-sdk-v5/tests/CosClientBucketTest.php
Karlcarlo 0060b2798f chore: 添加缺失的静态资源文件
添加多个前端界面所需的图片、字体、音频等静态资源文件,包括:
- 管理员后台的图标、背景图、组件图片
- 移动端页面的商品图片、用户中心图片、活动图标
- 第三方库的示例图片和字体文件
- 浏览器兼容性配置文件
- 图标字体文件(eot、ttf、woff、woff2格式)

这些资源是前端界面正常显示所必需的,之前可能因版本控制忽略或遗漏而缺失。
2026-03-06 20:15:52 +08:00

844 lines
25 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace Qcloud\Cos\Tests;
use Qcloud\Cos\Exception\ServiceResponseException;
class CosClientBucketTest extends TestCosClientBase {
private $bucket2;
private $prBucket;
private $hyphenBucket;
private $doubleHyphenBucket;
private $uin;
/**********************************
* TestBucket
**********************************/
/*
* get Service
* 200
*/
public function testGetService()
{
try {
$this->cosClient->ListBuckets();
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* put bucket,bucket已经存在
* BucketAlreadyOwnedByYou
* 409
*/
public function testCreateExistingBucket()
{
try {
$this->cosClient->createBucket(['Bucket' => $this->bucket]);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertTrue($e->getExceptionCode() === 'BucketAlreadyOwnedByYou' && $e->getStatusCode() === 409);
}
}
/*
* put bucket,bucket名称非法
* InvalidBucketName
* 400
*/
public function testCreateInvalidBucket()
{
try {
$this->cosClient->createBucket(array('Bucket' => "qwe_123".$this->bucket));
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertTrue($e->getExceptionCode() === 'InvalidBucketName' && $e->getStatusCode() === 400);
}
}
/*
* put bucket,设置bucket公共权限为private
* 200
*/
public function testCreatePrivateBucket()
{
try {
$this->cosClient->createBucket(
array(
'Bucket' => $this->bucket2,
'ACL'=>'private'
));
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* put bucket,设置bucket公共权限为public-read
* 200
*/
public function testCreatePublicReadBucket()
{
try {
$this->cosClient->createBucket(
array(
'Bucket' => $this->prBucket ,
'ACL'=>'public-read'
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
print($e);
$this->assertFalse(True);
}
}
/*
* put bucket,公共权限非法
* InvalidArgument
* 400
*/
public function testCreateInvalidACLBucket()
{
try {
$this->cosClient->createBucket(
array(
'Bucket' => $this->bucket2,
'ACL'=>'public'
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertTrue($e->getExceptionCode() === 'InvalidArgument' && $e->getStatusCode() === 400);
}
}
/*
* put bucket acl,设置bucket公共权限为private
* 200
*/
public function testPutBucketAclPrivate()
{
try {
$this->cosClient->PutBucketAcl(
array(
'Bucket' => $this->bucket,
'ACL'=>'private'
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* put bucket acl,设置bucket公共权限为public-read
* 200
*/
public function testPutBucketAclPublicRead()
{
try {
$this->cosClient->PutBucketAcl(
array(
'Bucket' => $this->bucket,
'ACL'=>'public-read'
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* put bucket acl,公共权限非法
* InvalidArgument
* 400
*/
public function testPutBucketAclInvalid()
{
try {
$this->cosClient->PutBucketAcl(
array(
'Bucket' => $this->bucket,
'ACL'=>'public'
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertTrue($e->getExceptionCode() === 'InvalidArgument' && $e->getStatusCode() === 400);
}
}
/*
* put bucket acl,设置bucket账号权限为grant-read
* 200
*/
public function testPutBucketAclReadToUser()
{
try {
$this->cosClient->PutBucketAcl(
array(
'Bucket' => $this->bucket,
'GrantRead' => 'id="qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin . '"'
// 'GrantRead' => 'id="qcs::cam::uin/100018617869:uin/100018617869"'
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* put bucket acl,设置bucket账号权限为grant-write
* 200
*/
public function testPutBucketAclWriteToUser()
{
try {
$this->cosClient->PutBucketAcl(
array(
'Bucket' => $this->bucket,
'GrantWrite' => 'id="qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin . '"'
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* put bucket acl,设置bucket账号权限为grant-full-control
* 200
*/
public function testPutBucketAclFullToUser()
{
try {
$this->cosClient->PutBucketAcl(
array(
'Bucket' => $this->bucket,
'GrantFullControl' => 'id="qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin . '"'
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* put bucket acl,设置bucket账号权限,同时授权给多个账户
* 200
*/
public function testPutBucketAclToUsers()
{
try {
$this->cosClient->PutBucketAcl(
array(
'Bucket' => $this->bucket,
'GrantFullControl' => 'id="qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin . '",id="qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin . '",id="qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin . '"'
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* put bucket acl,设置bucket账号权限,授权给子账号
* 200
*/
public function testPutBucketAclToSubuser()
{
try {
$this->cosClient->PutBucketAcl(
array(
'Bucket' => $this->bucket,
'GrantFullControl' => 'id="qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin . '"'
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* put bucket acl,设置bucket账号权限,同时指定read、write和fullcontrol
* 200
*/
public function testPutBucketAclReadWriteFull()
{
try {
$this->cosClient->PutBucketAcl(
array(
'Bucket' => $this->bucket,
'GrantRead' => 'id="qcs::cam::uin/123:uin/123"',
'GrantWrite' => 'id="qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin . '"',
'GrantFullControl' => 'id="qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin . '"'
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* put bucket acl,设置bucket账号权限,grant值非法
* InvalidArgument
* 400
*/
public function testPutBucketAclInvalidGrant()
{
try {
$this->cosClient->PutBucketAcl(
array(
'Bucket' => $this->bucket,
'GrantFullControl' => 'id="qcs::camuin/321023:uin/100018617869"'
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertTrue($e->getExceptionCode() === 'InvalidArgument' && $e->getStatusCode() === 400);
}
}
/*
* put bucket acl,设置bucket账号权限,通过body方式授权
* 200
*/
public function testPutBucketAclByBody()
{
try {
$this->cosClient->PutBucketAcl(
array(
'Bucket' => $this->bucket,
'Grants' => array(
array(
'Grantee' => array(
'DisplayName' => 'qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin,
'ID' => 'qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin,
'Type' => 'CanonicalUser',
),
'Permission' => 'FULL_CONTROL',
),
),
'Owner' => array(
'DisplayName' => 'qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin,
'ID' => 'qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin,
)
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* put bucket acl,设置bucket账号权限,通过body方式授权给anyone
* 200
*/
public function testPutBucketAclByBodyToAnyone()
{
try {
$this->cosClient->PutBucketAcl(
array(
'Bucket' => $this->bucket,
'Grants' => array(
array(
'Grantee' => array(
'DisplayName' => 'qcs::cam::anyone:anyone',
'ID' => 'qcs::cam::anyone:anyone',
'Type' => 'CanonicalUser',
),
'Permission' => 'FULL_CONTROL',
),
),
'Owner' => array(
'DisplayName' => 'qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin,
'ID' => 'qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin,
)
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* put bucket acl,bucket不存在
* NoSuchBucket
* 404
*/
public function testPutBucketAclBucketNonExisted()
{
try {
$this->cosClient->PutBucketAcl(
array(
'Bucket' => $this->bucket2,
'GrantFullControl' => 'id="qcs::cam::uin/321023:uin/100018617869"'
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertTrue($e->getExceptionCode() === 'NoSuchBucket' && $e->getStatusCode() === 404);
}
}
/*
* put bucket acl,覆盖设置
* x200
*/
public function testPutBucketAclCover()
{
try {
$this->cosClient->PutBucketAcl(array(
'Bucket' => $this->bucket,
'GrantFullControl' => 'id="qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin . '"',
'GrantRead' => 'id="qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin . '"',
'GrantWrite' => 'id="qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin . '"'));
$this->cosClient->PutBucketAcl(array(
'Bucket' => $this->bucket,
'GrantWrite' => 'id="qcs::cam::uin/' . $this->uin . ':uin/' . $this->uin . '"'));
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* 正常head bucket
* 200
*/
public function testHeadBucket()
{
try {
$this->cosClient->HeadBucket(array(
'Bucket' => $this->bucket));
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* head bucket,bucket不存在
* NoSuchBucket
* 404
*/
public function testHeadBucketNonExisted()
{
try {
$this->cosClient->HeadBucket(array(
'Bucket' => $this->bucket2));
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertTrue($e->getExceptionCode() === 'NoSuchBucket' && $e->getStatusCode() === 404);
}
}
/*
* get bucket,bucket为空
* 200
*/
public function testGetBucketEmpty()
{
try {
$this->cosClient->ListObjects(array(
'Bucket' => $this->bucket));
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* get bucket, prefix为中文
* 200
*/
public function testGetBucketWithChinese()
{
try {
$this->cosClient->ListObjects(array(
'Bucket' => $this->bucket,
'Prefix' => '中文',
'Delimiter' => '/'));
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* get bucket,bucket不存在
* NoSuchBucket
* 404
*/
public function testGetBucketNonExisted()
{
try {
$this->cosClient->ListObjects(
array(
'Bucket' => $this->bucket2
)
);
$this->assertTrue(False);
} catch (ServiceResponseException $e) {
$this->assertTrue($e->getExceptionCode() === 'NoSuchBucket' && $e->getStatusCode() === 404);
}
}
/*
* put bucket cors,cors规则包含多条
* 200
*/
public function testPutBucketCors()
{
try {
$this->cosClient->putBucketCors(
array(
'Bucket' => $this->bucket,
'CORSRules' => array(
array(
'ID' => '1234',
'AllowedHeaders' => array('*',),
'AllowedMethods' => array('PUT',),
'AllowedOrigins' => array('*',),
'ExposeHeaders' => array('*',),
'MaxAgeSeconds' => 1,
),
array(
'ID' => '12345',
'AllowedHeaders' => array('*',),
'AllowedMethods' => array('GET',),
'AllowedOrigins' => array('*',),
'ExposeHeaders' => array('*',),
'MaxAgeSeconds' => 1,
),
),
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* 正常get bucket cors
* 200
*/
public function testGetBucketCors()
{
try {
$this->cosClient->putBucketCors(
array(
'Bucket' => $this->bucket,
'CORSRules' => array(
array(
'ID' => '1234',
'AllowedHeaders' => array('*',),
'AllowedMethods' => array('PUT',),
'AllowedOrigins' => array('*',),
'ExposeHeaders' => array('*',),
'MaxAgeSeconds' => 1,
),
array(
'ID' => '12345',
'AllowedHeaders' => array('*',),
'AllowedMethods' => array('GET',),
'AllowedOrigins' => array('*',),
'ExposeHeaders' => array('*',),
'MaxAgeSeconds' => 1,
),
),
)
);
$this->cosClient->getBucketCors(
array(
'Bucket' => $this->bucket
)
);
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* bucket未设置cors规则,发送get bucket cors
* NoSuchCORSConfiguration
* 404
*/
public function testGetBucketCorsNull()
{
try {
$this->cosClient->deleteBucketCors(
array(
'Bucket' => $this->bucket
)
);
$rt = $this->cosClient->getBucketCors(
array(
'Bucket' => $this->bucket
)
);
$this->assertTrue(False);
} catch (ServiceResponseException $e) {
$this->assertTrue($e->getExceptionCode() === 'NoSuchCORSConfiguration' && $e->getStatusCode() === 404);
}
}
/*
* 正常get bucket lifecycle
* 200
*/
public function testGetBucketLifecycle()
{
try {
$result = $this->cosClient->putBucketLifecycle(
array(
'Bucket' => $this->bucket,
'Rules' => array(
array(
'Status' => 'Enabled',
'Filter' => array(
'Tag' => array(
'Key' => 'datalevel',
'Value' => 'backup'
)
),
'Transitions' => array(
array(
# 30天后转换为Standard_IA
'Days' => 30,
'StorageClass' => 'Standard_IA'),
array(
# 365天后转换为Archive
'Days' => 365,
'StorageClass' => 'Archive')
),
'Expiration' => array(
# 3650天后过期删除
'Days' => 3650,
)
)
)
)
);
$result = $this->cosClient->getBucketLifecycle(array(
'Bucket' => $this->bucket,
));
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* 正常delete bucket lifecycle
* 200
*/
public function testDeleteBucketLifecycle()
{
try {
$result = $this->cosClient->putBucketLifecycle(
array(
'Bucket' => $this->bucket,
'Rules' => array(
array(
'Status' => 'Enabled',
'Filter' => array(
'Tag' => array(
'Key' => 'datalevel',
'Value' => 'backup'
)
),
'Transitions' => array(
array(
# 30天后转换为Standard_IA
'Days' => 30,
'StorageClass' => 'Standard_IA'),
array(
# 365天后转换为Archive
'Days' => 365,
'StorageClass' => 'Archive')
),
'Expiration' => array(
# 3650天后过期删除
'Days' => 3650,
)
)
)
)
);
$result = $this->cosClient->deleteBucketLifecycle(array(
// Bucket is required
'Bucket' => $this->bucket,
));
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* put bucket lifecycle,请求body中不指定filter
* 200
*/
public function testPutBucketLifecycleNonFilter()
{
try {
$result = $this->cosClient->putBucketLifecycle(
array(
'Bucket' => $this->bucket,
'Rules' => array(
array(
'Expiration' => array(
'Days' => 1000,
),
'ID' => 'id1',
'Status' => 'Enabled',
'Transitions' => array(
array(
'Days' => 100,
'StorageClass' => 'Standard_IA'),
),
),
)
)
);
$result = $this->cosClient->deleteBucketLifecycle(array(
// Bucket is required
'Bucket' => $this->bucket,
));
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* put bucket,bucket名称带有-
* 200
*/
public function testPutBucket2()
{
try {
$this->cosClient->createBucket(array('Bucket' => $this->hyphenBucket));
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
print($e);
$this->assertFalse(True);
}
}
/*
* put bucket,bucket名称带有两个-
* 200
*/
public function testPutBucket3()
{
try {
$this->cosClient->createBucket(array('Bucket' => $this->doubleHyphenBucket));
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
print($e);
$this->assertFalse(True);
}
}
/*
* 正常get bucket location
* 200
*/
public function testGetBucketLocation()
{
try {
$this->cosClient->getBucketLocation(array('Bucket' => $this->bucket));
$this->assertTrue(True);
} catch (ServiceResponseException $e) {
$this->assertFalse(True);
}
}
/*
* bucket不存在,发送get bucket location请求
* NoSuchBucket
* 404
*/
public function testGetBucketLocationNonExisted()
{
try {
$this->cosClient->getBucketLocation(array('Bucket' => $this->bucket2));
$this->assertTrue(False);
} catch (ServiceResponseException $e) {
$this->assertTrue($e->getExceptionCode() === 'NoSuchBucket' && $e->getStatusCode() === 404);
}
}
/*
* 上传文件Bucket不存在
* NoSuchBucket
* 404
*/
public function testPutObjectIntoNonExistedBucket() {
try {
$this->cosClient->putObject(
array(
'Bucket' => $this->bucket2, 'Key' => Common::FILE_NAME, 'Body' => 'Hello World'
)
);
$this->assertTrue(False);
} catch (ServiceResponseException $e) {
$this->assertTrue($e->getExceptionCode() === 'NoSuchBucket');
$this->assertTrue($e->getStatusCode() === 404);
}
}
protected function setUp(): void
{
parent::setUp();
$this->bucket2 = "tmp-".$this->bucket;
$this->prBucket = 'public-read' . $this->bucket2;
$this->hyphenBucket = '12345-'. $this->bucket;
$this->doubleHyphenBucket = '12-333-4445' . $this->bucket2;
$this->uin = Common::getUin();
}
protected function tearDown(): void {
parent::tearDown();
try {
$this->cosClient->deleteBucket(array('Bucket' => $this->bucket2));
} catch(\Exception $e) {
}
try {
$this->cosClient->deleteBucket(array('Bucket' => $this->prBucket));
} catch(\Exception $e) {
}
try {
$this->cosClient->deleteBucket(array('Bucket' => $this->hyphenBucket));
} catch(\Exception $e) {
}
try {
$this->cosClient->deleteBucket(array('Bucket' => $this->doubleHyphenBucket));
} catch(\Exception $e) {
}
}
}