You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
4.6 KiB
152 lines
4.6 KiB
2 months ago
|
<?php
|
||
|
|
||
|
namespace AlibabaCloud\Tea\OSSUtils\Tests;
|
||
|
|
||
|
use AlibabaCloud\Tea\OSSUtils\OSSUtils;
|
||
|
use AlibabaCloud\Tea\Request;
|
||
|
use PHPUnit\Framework\TestCase;
|
||
|
|
||
|
/**
|
||
|
* @internal
|
||
|
* @coversNothing
|
||
|
*/
|
||
|
class OSSUtilsTest extends TestCase
|
||
|
{
|
||
|
public function testGetErrmessage()
|
||
|
{
|
||
|
$message = "<?xml version='1.0' encoding='UTF-8'?><Error><Code>401</Code></Error>";
|
||
|
$res = OSSUtils::getErrMessage($message);
|
||
|
$this->assertEquals('401', $res['Code']);
|
||
|
}
|
||
|
|
||
|
public function testToMeta()
|
||
|
{
|
||
|
$map = [
|
||
|
'size' => '1',
|
||
|
'test.key.id' => '9527',
|
||
|
];
|
||
|
$res = OSSUtils::toMeta($map, 'test.key.');
|
||
|
$this->assertEquals([
|
||
|
'test.key.size' => '1',
|
||
|
'test.key.id' => '9527',
|
||
|
], $res);
|
||
|
}
|
||
|
|
||
|
public function testParseMeta()
|
||
|
{
|
||
|
$map = [
|
||
|
'size' => '1',
|
||
|
'test.key.id' => '9527',
|
||
|
];
|
||
|
$res = OSSUtils::parseMeta($map, 'test.key.');
|
||
|
$this->assertEquals([
|
||
|
'size' => '1',
|
||
|
'id' => '9527',
|
||
|
], $res);
|
||
|
}
|
||
|
|
||
|
public function testGetContentType()
|
||
|
{
|
||
|
$this->assertEquals('image/webp', OSSUtils::getContentType('test.webp'));
|
||
|
$this->assertEquals('audio/mpeg', OSSUtils::getContentType('test.mp3'));
|
||
|
}
|
||
|
|
||
|
public function testGetContentMD5()
|
||
|
{
|
||
|
$this->assertEquals('CY9rzUYh03PK3k6DJie09g==', OSSUtils::getContentMD5('test', true));
|
||
|
}
|
||
|
|
||
|
public function testEncode()
|
||
|
{
|
||
|
$value = 'test/encode/h%f';
|
||
|
$this->assertEquals($value, OSSUtils::encode($value, null));
|
||
|
$this->assertEquals($value, OSSUtils::encode($value, ''));
|
||
|
$this->assertEquals('test/encode/aCVm', OSSUtils::encode($value, 'Base64'));
|
||
|
$this->assertEquals('test/encode/h%25f', OSSUtils::encode($value, 'UrlEncode'));
|
||
|
}
|
||
|
|
||
|
public function testGetUserAgent()
|
||
|
{
|
||
|
$userAgent = 'Custom UserAgent';
|
||
|
$res = OSSUtils::getUserAgent($userAgent);
|
||
|
$this->assertTrue(false !== strpos($res, $userAgent));
|
||
|
}
|
||
|
|
||
|
public function testGetHost()
|
||
|
{
|
||
|
$host = OSSUtils::getHost(null, null, null, null);
|
||
|
$this->assertEquals('oss-cn-hangzhou.aliyuncs.com', $host);
|
||
|
|
||
|
$host = OSSUtils::getHost('testBucket', 'region', 'endpoint', 'ip');
|
||
|
$this->assertEquals('endpoint/testBucket', $host);
|
||
|
|
||
|
$host = OSSUtils::getHost('testBucket', 'region', 'endpoint', 'cname');
|
||
|
$this->assertEquals('endpoint', $host);
|
||
|
|
||
|
$host = OSSUtils::getHost('testBucket', 'region', 'endpoint', 'test');
|
||
|
$this->assertEquals('testBucket.endpoint', $host);
|
||
|
}
|
||
|
|
||
|
public function testInject()
|
||
|
{
|
||
|
$stream = fopen('data://text/plain;base64,' . base64_encode('test'), 'r+');
|
||
|
$verifyStream = OSSUtils::inject($stream, $res);
|
||
|
$verifyStream->read(4);
|
||
|
$verifyStream->getVerify();
|
||
|
$this->assertEquals('CY9rzUYh03PK3k6DJie09g==', $res['md5']);
|
||
|
$this->assertEquals('18020588380933092773', $res['crc']);
|
||
|
}
|
||
|
|
||
|
public function testGetSignatureV1()
|
||
|
{
|
||
|
$request = new Request();
|
||
|
$request->pathname = '';
|
||
|
$request->method = 'GET';
|
||
|
$request->headers = [
|
||
|
'x-oss-test' => 'test',
|
||
|
'content-type' => 'type',
|
||
|
'content-md5' => 'md5',
|
||
|
];
|
||
|
$request->query = [
|
||
|
'testQuery' => 'testQuery',
|
||
|
'querykey' => 'queryValue',
|
||
|
'x-oss-process' => 'value',
|
||
|
];
|
||
|
|
||
|
$sign = OSSUtils::getSignature($request, 'test', 'ak', 'sk', 'v1', null);
|
||
|
$this->assertEquals('OSS ak:q9lSDGVH1VmpjMTGSwUZn3tg3J4=', $sign);
|
||
|
}
|
||
|
|
||
|
public function testGetSignatureV2()
|
||
|
{
|
||
|
$request = new Request();
|
||
|
$request->method = 'GET';
|
||
|
$request->pathname = 'test?aa';
|
||
|
$request->headers = [
|
||
|
'x-oss-test' => 'test',
|
||
|
'content-type' => 'type',
|
||
|
'content-md5' => 'md5',
|
||
|
];
|
||
|
$request->query = [
|
||
|
'testQuery' => 'testQuery',
|
||
|
'querykey' => 'queryValue',
|
||
|
'x-oss-test' => 'test',
|
||
|
];
|
||
|
$signature = OSSUtils::getSignature(
|
||
|
$request,
|
||
|
'test',
|
||
|
'accessKeyId',
|
||
|
'sk',
|
||
|
'v2',
|
||
|
['querykey']
|
||
|
);
|
||
|
$this->assertEquals('OSS2 AccessKeyId:accessKeyId,AdditionalHeaders:querykey,Signature:NTrErwnblTk2y8h/NJKCcPCr73iRTfcl99PEc1fCgZY=', $signature);
|
||
|
}
|
||
|
|
||
|
public function testDecode()
|
||
|
{
|
||
|
$this->assertEquals('h%f', OSSUtils::decode('aCVm', 'Base64Decode'));
|
||
|
$this->assertEquals('h%f', OSSUtils::decode('h%25f', 'UrlDecode'));
|
||
|
}
|
||
|
}
|