提交
This commit is contained in:
BIN
vendor/alibabacloud/oss-v2/tests/Data/enc-example.jpg
vendored
Normal file
BIN
vendor/alibabacloud/oss-v2/tests/Data/enc-example.jpg
vendored
Normal file
Binary file not shown.
BIN
vendor/alibabacloud/oss-v2/tests/Data/example.jpg
vendored
Normal file
BIN
vendor/alibabacloud/oss-v2/tests/Data/example.jpg
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
242
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientAccessPointTest.php
vendored
Normal file
242
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientAccessPointTest.php
vendored
Normal file
@@ -0,0 +1,242 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientAccessPointTest extends TestIntegration
|
||||
{
|
||||
public function testAccessPoint()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
// CreateAccessPoint
|
||||
$accessPointName = 'ap-01-' . strval(rand(0, 100)) . '-' . strval(time());
|
||||
$createResult = $client->createAccessPoint(new Oss\Models\CreateAccessPointRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\CreateAccessPointConfiguration(
|
||||
accessPointName: $accessPointName,
|
||||
networkOrigin: 'internet',
|
||||
)));
|
||||
$this->assertEquals(200, $createResult->statusCode);
|
||||
$this->assertEquals('OK', $createResult->status);
|
||||
$this->assertEquals(True, count($createResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($createResult->requestId));
|
||||
|
||||
// GetAccessPoint
|
||||
$getResult = $client->getAccessPoint(new Oss\Models\GetAccessPointRequest(
|
||||
$bucketName, $accessPointName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// ListAccessPoints
|
||||
$listResult = $client->listAccessPoints(new Oss\Models\ListAccessPointsRequest());
|
||||
$this->assertEquals(200, $listResult->statusCode);
|
||||
$this->assertEquals('OK', $listResult->status);
|
||||
$this->assertEquals(True, count($listResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($listResult->requestId));
|
||||
|
||||
// PutAccessPointPolicy
|
||||
$policy = '{"Version":"1","Statement":[{"Action":["oss:PutObject","oss:GetObject"],"Effect":"Deny","Principal":["' . self::$USER_ID . '"],"Resource":["acs:oss:' . self::$REGION . ':' . self::$USER_ID . ':accesspoint/' . $accessPointName . '","acs:oss:' . self::$REGION . ':' . self::$USER_ID . ':accesspoint/' . $accessPointName . '/object/*"]}]}';
|
||||
$putPolicyResult = $client->putAccessPointPolicy(new Oss\Models\PutAccessPointPolicyRequest(
|
||||
bucket: $bucketName,
|
||||
accessPointName: $accessPointName,
|
||||
body: Oss\Utils::streamFor($policy)
|
||||
));
|
||||
$this->assertEquals(200, $putPolicyResult->statusCode);
|
||||
$this->assertEquals('OK', $putPolicyResult->status);
|
||||
$this->assertEquals(True, count($putPolicyResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putPolicyResult->requestId));
|
||||
|
||||
// GetAccessPointPolicy
|
||||
$getPolicyResult = $client->getAccessPointPolicy(new Oss\Models\GetAccessPointPolicyRequest(
|
||||
bucket: $bucketName,
|
||||
accessPointName: $accessPointName,
|
||||
));
|
||||
$this->assertEquals(200, $getPolicyResult->statusCode);
|
||||
$this->assertEquals('OK', $getPolicyResult->status);
|
||||
$this->assertEquals(True, count($getPolicyResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getPolicyResult->requestId));
|
||||
$this->assertEquals($policy, $getPolicyResult->body);
|
||||
|
||||
// DeleteAccessPointPolicy
|
||||
$delPolicyResult = $client->deleteAccessPointPolicy(new Oss\Models\DeleteAccessPointPolicyRequest(
|
||||
bucket: $bucketName,
|
||||
accessPointName: $accessPointName,
|
||||
));
|
||||
$this->assertEquals(204, $delPolicyResult->statusCode);
|
||||
$this->assertEquals('No Content', $delPolicyResult->status);
|
||||
$this->assertEquals(True, count($delPolicyResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delPolicyResult->requestId));
|
||||
while (true) {
|
||||
$getResult = $client->getAccessPoint(new Oss\Models\GetAccessPointRequest(
|
||||
$bucketName, $accessPointName
|
||||
));
|
||||
if ($getResult->getAccessPoint->status != 'creating') {
|
||||
break;
|
||||
} else {
|
||||
sleep(3);
|
||||
}
|
||||
}
|
||||
$delResult = $client->deleteAccessPoint(new Oss\Models\DeleteAccessPointRequest(
|
||||
bucket: $bucketName,
|
||||
accessPointName: $accessPointName,
|
||||
));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
}
|
||||
|
||||
public function testAccessPointFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// CreateAccessPoint
|
||||
try {
|
||||
$accessPointName = 'ap-01-' . strval(rand(0, 100)) . '-' . strval(time());
|
||||
$createResult = $client->createAccessPoint(new Oss\Models\CreateAccessPointRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\CreateAccessPointConfiguration(
|
||||
accessPointName: $accessPointName,
|
||||
networkOrigin: 'internet',
|
||||
)));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error CreateAccessPoint', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetAccessPoint
|
||||
try {
|
||||
$getResult = $client->getAccessPoint(new Oss\Models\GetAccessPointRequest(
|
||||
$bucketName, $accessPointName
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetAccessPoint', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// ListAccessPoints
|
||||
try {
|
||||
$listResult = $client->listAccessPoints(new Oss\Models\ListAccessPointsRequest());
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListAccessPoints', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// PutAccessPointPolicy
|
||||
try {
|
||||
$policy = '{"Version":"1","Statement":[{"Action":["oss:PutObject","oss:GetObject"],"Effect":"Deny","Principal":["' . self::$USER_ID . '"],"Resource":["acs:oss:' . self::$REGION . ':' . self::$USER_ID . ':accesspoint/' . $accessPointName . '","acs:oss:' . self::$REGION . ':' . self::$USER_ID . ':accesspoint/' . $accessPointName . '/object/*"]}]}';
|
||||
$putPolicyResult = $client->putAccessPointPolicy(new Oss\Models\PutAccessPointPolicyRequest(
|
||||
bucket: $bucketName,
|
||||
accessPointName: $accessPointName,
|
||||
body: Oss\Utils::streamFor($policy)
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutAccessPointPolicy', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetAccessPointPolicy
|
||||
try {
|
||||
$getPolicyResult = $client->getAccessPointPolicy(new Oss\Models\GetAccessPointPolicyRequest(
|
||||
bucket: $bucketName,
|
||||
accessPointName: $accessPointName,
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetAccessPointPolicy', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// DeleteAccessPointPolicy
|
||||
try {
|
||||
$delPolicyResult = $client->deleteAccessPointPolicy(new Oss\Models\DeleteAccessPointPolicyRequest(
|
||||
bucket: $bucketName,
|
||||
accessPointName: $accessPointName,
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteAccessPointPolicy', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetAccessPoint
|
||||
try {
|
||||
$getResult = $client->getAccessPoint(new Oss\Models\GetAccessPointRequest(
|
||||
$bucketName, $accessPointName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetAccessPoint', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// DeleteAccessPoint
|
||||
try {
|
||||
$delResult = $client->deleteAccessPoint(new Oss\Models\DeleteAccessPointRequest(
|
||||
bucket: $bucketName,
|
||||
accessPointName: $accessPointName,
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteAccessPoint', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
80
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketAccessMonitorTest.php
vendored
Normal file
80
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketAccessMonitorTest.php
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketAccessMonitorTest extends TestIntegration
|
||||
{
|
||||
public function testBucketAccessMonitor()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// PutBucketAccessMonitor
|
||||
$putResult = $client->putBucketAccessMonitor(new Oss\Models\PutBucketAccessMonitorRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\AccessMonitorConfiguration(
|
||||
status: Oss\Models\AccessMonitorStatusType::ENABLED
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketAccessMonitor
|
||||
$getResult = $client->getBucketAccessMonitor(new Oss\Models\GetBucketAccessMonitorRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketAccessMonitorFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// PutBucketAccessMonitor
|
||||
try {
|
||||
$putResult = $client->putBucketAccessMonitor(new Oss\Models\PutBucketAccessMonitorRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\AccessMonitorConfiguration(
|
||||
status: Oss\Models\AccessMonitorStatusType::ENABLED
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketAccessMonitor', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketAccessMonitor
|
||||
try {
|
||||
$getResult = $client->getBucketAccessMonitor(new Oss\Models\GetBucketAccessMonitorRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketAccessMonitor', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
81
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketArchiveDirectReadTest.php
vendored
Normal file
81
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketArchiveDirectReadTest.php
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
use AlibabaCloud\Oss\V2\Models\LifecycleConfiguration;
|
||||
|
||||
class ClientBucketArchiveDirectReadTest extends TestIntegration
|
||||
{
|
||||
public function testBucketArchiveDirectRead()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// PutBucketArchiveDirectRead
|
||||
$putResult = $client->putBucketArchiveDirectRead(new Oss\Models\PutBucketArchiveDirectReadRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\ArchiveDirectReadConfiguration(
|
||||
true
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketArchiveDirectRead
|
||||
$getResult = $client->getBucketArchiveDirectRead(new Oss\Models\GetBucketArchiveDirectReadRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketArchiveDirectReadFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// PutBucketArchiveDirectRead
|
||||
try {
|
||||
$putResult = $client->putBucketArchiveDirectRead(new Oss\Models\PutBucketArchiveDirectReadRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\ArchiveDirectReadConfiguration(
|
||||
true
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketArchiveDirectRead', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketArchiveDirectRead
|
||||
try {
|
||||
$getResult = $client->getBucketArchiveDirectRead(new Oss\Models\GetBucketArchiveDirectReadRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketArchiveDirectRead', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
514
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketBasicTest.php
vendored
Normal file
514
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketBasicTest.php
vendored
Normal file
@@ -0,0 +1,514 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketBasicTest extends TestIntegration
|
||||
{
|
||||
public function testBucketBasic()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
|
||||
//default
|
||||
$bucketName = self::randomBucketName() . "-default";
|
||||
$result = $client->putBucket(new Oss\Models\PutBucketRequest(
|
||||
$bucketName
|
||||
));
|
||||
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// get stat
|
||||
$result = $client->getBucketStat(new Oss\Models\GetBucketStatRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$this->assertEquals(0, $result->storage);
|
||||
|
||||
// get location
|
||||
$result = $client->getBucketLocation(new Oss\Models\GetBucketLocationRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$region = self::$REGION;
|
||||
$this->assertEquals("oss-$region", $result->location);
|
||||
|
||||
// get info
|
||||
$result = $client->getBucketInfo(new Oss\Models\GetBucketInfoRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$this->assertEquals('private', $result->bucketInfo->acl);
|
||||
|
||||
//delete
|
||||
$result = $client->deleteBucket(new Oss\Models\DeleteBucketRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// create bucket with acl & storage class & data redundancy
|
||||
$bucketName = self::randomBucketName() . '-acl-storage';
|
||||
$result = $client->putBucket(new Oss\Models\PutBucketRequest(
|
||||
$bucketName,
|
||||
'public-read',
|
||||
null,
|
||||
new Oss\Models\CreateBucketConfiguration(
|
||||
'IA',
|
||||
'ZRS'
|
||||
)
|
||||
));
|
||||
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// get info
|
||||
$result = $client->getBucketInfo(new Oss\Models\GetBucketInfoRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$this->assertEquals('public-read', $result->bucketInfo->acl);
|
||||
$this->assertEquals('IA', $result->bucketInfo->storageClass);
|
||||
$this->assertEquals('ZRS', $result->bucketInfo->dataRedundancyType);
|
||||
|
||||
$result = $client->listObjects(new Oss\Models\ListObjectsRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
$result = $client->listObjectsV2(new Oss\Models\ListObjectsV2Request(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
//delete
|
||||
$result = $client->deleteBucket(new Oss\Models\DeleteBucketRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
}
|
||||
|
||||
public function testBucketAcl()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
|
||||
//default
|
||||
$bucketName = self::randomBucketName();
|
||||
$result = $client->putBucket(new Oss\Models\PutBucketRequest(
|
||||
$bucketName
|
||||
));
|
||||
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// set acl
|
||||
$result = $client->putBucketAcl(new Oss\Models\PutBucketAclRequest(
|
||||
$bucketName,
|
||||
'private'
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// get acl
|
||||
$result = $client->getBucketAcl(new Oss\Models\GetBucketAclRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$this->assertEquals('private', $result->accessControlList->grant);
|
||||
|
||||
$client->deleteBucket(new Oss\Models\DeleteBucketRequest(
|
||||
$bucketName
|
||||
));
|
||||
}
|
||||
|
||||
public function testBucketVersioning()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
|
||||
//default
|
||||
$bucketName = self::randomBucketName();
|
||||
$result = $client->putBucket(new Oss\Models\PutBucketRequest(
|
||||
$bucketName
|
||||
));
|
||||
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
$result = $client->putBucketVersioning(new Oss\Models\PutBucketVersioningRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\VersioningConfiguration(
|
||||
Oss\Models\BucketVersioningStatusType::ENABLED
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
$result = $client->getBucketVersioning(new Oss\Models\GetBucketVersioningRequest(
|
||||
$bucketName,
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$this->assertEquals(Oss\Models\BucketVersioningStatusType::ENABLED, $result->versioningConfiguration->status);
|
||||
|
||||
$result = $client->listObjectVersions(new Oss\Models\ListObjectVersionsRequest(
|
||||
$bucketName,
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$this->assertNull($result->versions);
|
||||
|
||||
$this->waitFor(3);
|
||||
$client->deleteBucket(new Oss\Models\DeleteBucketRequest(
|
||||
$bucketName
|
||||
));
|
||||
}
|
||||
|
||||
public function testListBuckets()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
|
||||
//default
|
||||
$bucketName = self::randomBucketName();
|
||||
$result = $client->putBucket(new Oss\Models\PutBucketRequest(
|
||||
$bucketName
|
||||
));
|
||||
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
$result = $client->listBuckets(new Oss\Models\ListBucketsRequest(self::$BUCKETNAME_PREFIX));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$this->assertEquals(True, count($result->buckets) > 0);
|
||||
|
||||
$request = new Oss\Models\ListBucketsRequest(self::$BUCKETNAME_PREFIX);
|
||||
$request->tagging = 'k:v';
|
||||
$result = $client->listBuckets($request);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$this->assertNull($result->buckets);
|
||||
|
||||
$request = new Oss\Models\ListBucketsRequest(self::$BUCKETNAME_PREFIX);
|
||||
$request->tagKey = 'k';
|
||||
$request->tagValue = 'v';
|
||||
$result = $client->listBuckets($request);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$this->assertNull($result->buckets);
|
||||
|
||||
$this->waitFor(3);
|
||||
$client->deleteBucket(new Oss\Models\DeleteBucketRequest(
|
||||
$bucketName
|
||||
));
|
||||
}
|
||||
|
||||
public function testDescribeRegions()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$result = $client->describeRegions(new Oss\Models\DescribeRegionsRequest());
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$this->assertEquals(true, count($result->regionInfos) > 1);
|
||||
|
||||
$result = $client->describeRegions(new Oss\Models\DescribeRegionsRequest("oss-cn-hangzhou"));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$this->assertEquals(1, count($result->regionInfos));
|
||||
}
|
||||
|
||||
public function testPutBucketFail()
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
|
||||
try {
|
||||
$bucketName = self::randomBucketName();
|
||||
$client->putBucket(new Oss\Models\PutBucketRequest(
|
||||
$bucketName
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucket', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testPutBucketAclFail()
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
|
||||
try {
|
||||
$bucketName = self::$bucketName;
|
||||
$client->putBucketAcl(new Oss\Models\PutBucketAclRequest(
|
||||
$bucketName,
|
||||
'private'
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketAcl', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testGetBucketAclFail()
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
|
||||
try {
|
||||
$bucketName = self::$bucketName;
|
||||
$client->getBucketAcl(new Oss\Models\GetBucketAclRequest(
|
||||
$bucketName
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketAcl', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testGetBucketStatFail()
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
|
||||
try {
|
||||
$bucketName = self::$bucketName;
|
||||
$client->getBucketStat(new Oss\Models\GetBucketStatRequest(
|
||||
$bucketName
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketStat', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testGetBucketLocationFail()
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
|
||||
try {
|
||||
$bucketName = self::$bucketName;
|
||||
$client->getBucketLocation(new Oss\Models\GetBucketLocationRequest(
|
||||
$bucketName
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketLocation', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testGetBucketInfoFail(): void
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
|
||||
try {
|
||||
$bucketName = self::$bucketName;
|
||||
$client->getBucketInfo(new Oss\Models\GetBucketInfoRequest(
|
||||
$bucketName
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketInfo', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testPutBucketVersioningFail(): void
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
|
||||
try {
|
||||
$bucketName = self::$bucketName;
|
||||
$client->putBucketVersioning(new Oss\Models\PutBucketVersioningRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\VersioningConfiguration('Enabled')
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketVersioning', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testGetBucketVersioningFail(): void
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
|
||||
try {
|
||||
$bucketName = self::$bucketName;
|
||||
$client->GetBucketVersioning(new Oss\Models\GetBucketVersioningRequest(
|
||||
$bucketName
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketVersioning', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListObjectVersionsFail(): void
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
|
||||
try {
|
||||
$bucketName = self::$bucketName;
|
||||
$client->listObjectVersions(new Oss\Models\ListObjectVersionsRequest(
|
||||
$bucketName
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListObjectVersions', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListObjectsFail(): void
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
|
||||
try {
|
||||
$bucketName = self::$bucketName;
|
||||
$client->listObjects(new Oss\Models\ListObjectsRequest(
|
||||
$bucketName,
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListObjects', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListObjectsV2Fail(): void
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
try {
|
||||
$bucketName = self::$bucketName;
|
||||
$client->listObjectsV2(new Oss\Models\ListObjectsV2Request(
|
||||
$bucketName,
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListObjectsV2', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListBucketsFail(): void
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
|
||||
try {
|
||||
$bucketName = self::$bucketName;
|
||||
$client->listBuckets(new Oss\Models\ListBucketsRequest());
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListBuckets', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
166
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketCnameTest.php
vendored
Normal file
166
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketCnameTest.php
vendored
Normal file
@@ -0,0 +1,166 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketCnameTest extends TestIntegration
|
||||
{
|
||||
public function testBucketCname()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// CreateCnameToken
|
||||
$createResult = $client->createCnameToken(new Oss\Models\CreateCnameTokenRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\BucketCnameConfiguration(
|
||||
new Oss\Models\Cname(
|
||||
'example.com'
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $createResult->statusCode);
|
||||
$this->assertEquals('OK', $createResult->status);
|
||||
$this->assertEquals(True, count($createResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($createResult->requestId));
|
||||
|
||||
// GetCnameToken
|
||||
$getResult = $client->getCnameToken(new Oss\Models\GetCnameTokenRequest(
|
||||
$bucketName,
|
||||
'example.com'
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// ListCname
|
||||
$listResult = $client->listCname(new Oss\Models\ListCnameRequest(
|
||||
$bucketName,
|
||||
));
|
||||
$this->assertEquals(200, $listResult->statusCode);
|
||||
$this->assertEquals('OK', $listResult->status);
|
||||
$this->assertEquals(True, count($listResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($listResult->requestId));
|
||||
|
||||
// DeleteCname
|
||||
$delResult = $client->deleteCname(new Oss\Models\DeleteCnameRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\BucketCnameConfiguration(
|
||||
new Oss\Models\Cname(
|
||||
'example.com'
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $delResult->statusCode);
|
||||
$this->assertEquals('OK', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
|
||||
}
|
||||
|
||||
public function testBucketCnameFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
try {
|
||||
$putResult = $client->putCname(new Oss\Models\PutCnameRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\BucketCnameConfiguration(
|
||||
new Oss\Models\Cname(
|
||||
'example.com'
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutCname', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$createResult = $client->createCnameToken(new Oss\Models\CreateCnameTokenRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\BucketCnameConfiguration(
|
||||
new Oss\Models\Cname(
|
||||
'example.com'
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error CreateCnameToken', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$getTokenResult = $client->getCnameToken(new Oss\Models\GetCnameTokenRequest(
|
||||
$bucketName,
|
||||
'example.com'
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetCnameToken', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$listResult = $client->listCname(new Oss\Models\ListCnameRequest(
|
||||
$bucketName,
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListCname', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$delResult = $client->deleteCname(new Oss\Models\DeleteCnameRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\BucketCnameConfiguration(
|
||||
new Oss\Models\Cname(
|
||||
'example.com'
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteCname', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
159
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketCorsTest.php
vendored
Normal file
159
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketCorsTest.php
vendored
Normal file
@@ -0,0 +1,159 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketCorsTest extends TestIntegration
|
||||
{
|
||||
public function testBucketCors()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// PutBucketCors
|
||||
$putResult = $client->putBucketCors(new Oss\Models\PutBucketCorsRequest(
|
||||
$bucketName,
|
||||
corsConfiguration: new Oss\Models\CORSConfiguration(
|
||||
array(
|
||||
new Oss\Models\CORSRule(
|
||||
allowedOrigins: ['*'],
|
||||
allowedMethods: ['PUT', 'GET']
|
||||
)
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// OptionObject
|
||||
$objectName = self::$OBJECTNAME_PREFIX . self::randomLowStr() . '-put-object';
|
||||
$putObjResult = $client->putObject(new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$objectName,
|
||||
body: Oss\Utils::streamFor('hi oss')
|
||||
));
|
||||
$this->assertEquals(200, $putObjResult->statusCode);
|
||||
$this->assertEquals('OK', $putObjResult->status);
|
||||
$this->assertEquals(True, count($putObjResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putObjResult->requestId));
|
||||
|
||||
$optionObjResult = $client->optionObject(new Oss\Models\OptionObjectRequest(
|
||||
$bucketName,
|
||||
$objectName,
|
||||
origin: 'http://www.example.com',
|
||||
accessControlRequestMethod: 'PUT',
|
||||
));
|
||||
$this->assertEquals(200, $optionObjResult->statusCode);
|
||||
$this->assertEquals('OK', $optionObjResult->status);
|
||||
$this->assertEquals(True, count($optionObjResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($optionObjResult->requestId));
|
||||
|
||||
// GetBucketCors
|
||||
$getResult = $client->getBucketCors(new Oss\Models\GetBucketCorsRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// DeleteBucketCors
|
||||
$delResult = $client->deleteBucketCors(new Oss\Models\DeleteBucketCorsRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketCorsFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// PutBucketCors
|
||||
try {
|
||||
$putResult = $client->putBucketCors(new Oss\Models\PutBucketCorsRequest(
|
||||
$bucketName,
|
||||
corsConfiguration: new Oss\Models\CORSConfiguration(
|
||||
array(
|
||||
new Oss\Models\CORSRule(
|
||||
allowedOrigins: ['*'],
|
||||
allowedMethods: ['PUT', 'GET']
|
||||
)
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketCors', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$objectName = self::$OBJECTNAME_PREFIX . self::randomLowStr() . '-put-object';
|
||||
$optionObjResult = $client->optionObject(new Oss\Models\OptionObjectRequest(
|
||||
$bucketName,
|
||||
$objectName,
|
||||
origin: 'http://www.example.com',
|
||||
accessControlRequestMethod: 'PUT',
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error OptionObject', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketCors
|
||||
try {
|
||||
$getResult = $client->getBucketCors(new Oss\Models\GetBucketCorsRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketCors', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// DeleteBucketCors
|
||||
try {
|
||||
$delResult = $client->deleteBucketCors(new Oss\Models\DeleteBucketCorsRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteBucketCors', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
147
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketDataRedundancyTransitionTest.php
vendored
Normal file
147
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketDataRedundancyTransitionTest.php
vendored
Normal file
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketDataRedundancyTransitionTest extends TestIntegration
|
||||
{
|
||||
public function testBucketDataRedundancyTransition()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// CreateBucketDataRedundancyTransition
|
||||
$createResult = $client->createBucketDataRedundancyTransition(new Oss\Models\CreateBucketDataRedundancyTransitionRequest(
|
||||
$bucketName,
|
||||
targetRedundancyType: 'ZRS'
|
||||
));
|
||||
$this->assertEquals(200, $createResult->statusCode);
|
||||
$this->assertEquals('OK', $createResult->status);
|
||||
$this->assertEquals(True, count($createResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($createResult->requestId));
|
||||
|
||||
// GetBucketDataRedundancyTransition
|
||||
$getResult = $client->getBucketDataRedundancyTransition(new Oss\Models\GetBucketDataRedundancyTransitionRequest(
|
||||
$bucketName,
|
||||
redundancyTransitionTaskid: $createResult->bucketDataRedundancyTransition->taskId
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// ListBucketDataRedundancyTransition
|
||||
$listResult = $client->listBucketDataRedundancyTransition(new Oss\Models\ListBucketDataRedundancyTransitionRequest(
|
||||
$bucketName,
|
||||
));
|
||||
$this->assertEquals(200, $listResult->statusCode);
|
||||
$this->assertEquals('OK', $listResult->status);
|
||||
$this->assertEquals(True, count($listResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($listResult->requestId));
|
||||
|
||||
// ListUserDataRedundancyTransition
|
||||
$listResult = $client->listUserDataRedundancyTransition(new Oss\Models\ListUserDataRedundancyTransitionRequest());
|
||||
$this->assertEquals(200, $listResult->statusCode);
|
||||
$this->assertEquals('OK', $listResult->status);
|
||||
$this->assertEquals(True, count($listResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($listResult->requestId));
|
||||
|
||||
// DeleteBucketDataRedundancyTransition
|
||||
$delResult = $client->deleteBucketDataRedundancyTransition(new Oss\Models\DeleteBucketDataRedundancyTransitionRequest(
|
||||
$bucketName, $createResult->bucketDataRedundancyTransition->taskId
|
||||
));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketDataRedundancyTransitionFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
try {
|
||||
$createResult = $client->createBucketDataRedundancyTransition(new Oss\Models\CreateBucketDataRedundancyTransitionRequest(
|
||||
$bucketName,
|
||||
targetRedundancyType: 'ZRS'
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error CreateBucketDataRedundancyTransition', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$getResult = $client->getBucketDataRedundancyTransition(new Oss\Models\GetBucketDataRedundancyTransitionRequest(
|
||||
$bucketName, '123'
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketDataRedundancyTransition', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$delResult = $client->deleteBucketDataRedundancyTransition(new Oss\Models\DeleteBucketDataRedundancyTransitionRequest(
|
||||
$bucketName, '123'
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteBucketDataRedundancyTransition', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$listResult = $client->listBucketDataRedundancyTransition(new Oss\Models\ListBucketDataRedundancyTransitionRequest(
|
||||
$bucketName,
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListBucketDataRedundancyTransition', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$client = $this->getInvalidAkClient();
|
||||
$listResult = $client->listUserDataRedundancyTransition(new Oss\Models\ListUserDataRedundancyTransitionRequest());
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListUserDataRedundancyTransition', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
109
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketEncryptionTest.php
vendored
Normal file
109
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketEncryptionTest.php
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketEncryptionTest extends TestIntegration
|
||||
{
|
||||
public function testBucketEncryption()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
// PutBucketEncryption
|
||||
$putResult = $client->putBucketEncryption(new Oss\Models\PutBucketEncryptionRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\ServerSideEncryptionRule(
|
||||
new Oss\Models\ApplyServerSideEncryptionByDefault(
|
||||
sseAlgorithm: 'KMS',
|
||||
kmsDataEncryption: 'SM4'
|
||||
))
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketEncryption
|
||||
$getResult = $client->getBucketEncryption(new Oss\Models\GetBucketEncryptionRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// DeleteBucketEncryption
|
||||
$delResult = $client->deleteBucketEncryption(new Oss\Models\DeleteBucketEncryptionRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketEncryptionFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// PutBucketEncryption
|
||||
try {
|
||||
$putResult = $client->putBucketEncryption(new Oss\Models\PutBucketEncryptionRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\ServerSideEncryptionRule(
|
||||
new Oss\Models\ApplyServerSideEncryptionByDefault(
|
||||
sseAlgorithm: 'KMS',
|
||||
kmsDataEncryption: 'SM4'
|
||||
))
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketEncryption', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketEncryption
|
||||
try {
|
||||
$getResult = $client->getBucketEncryption(new Oss\Models\GetBucketEncryptionRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketEncryption', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// DeleteBucketEncryption
|
||||
try {
|
||||
$delResult = $client->deleteBucketEncryption(new Oss\Models\DeleteBucketEncryptionRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteBucketEncryption', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
116
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketHttpsConfigTest.php
vendored
Normal file
116
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketHttpsConfigTest.php
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketHttpsConfigTest extends TestIntegration
|
||||
{
|
||||
public function testBucketHttpsConfig()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// PutBucketHttpsConfig
|
||||
$putResult = $client->putBucketHttpsConfig(new Oss\Models\PutBucketHttpsConfigRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\HttpsConfiguration(
|
||||
tls: new Oss\Models\TLS(
|
||||
tlsVersions: ['TLSv1.2', 'TLSv1.3'],
|
||||
enable: true
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketHttpsConfig
|
||||
$getResult = $client->getBucketHttpsConfig(new Oss\Models\GetBucketHttpsConfigRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// PutBucketHttpsConfig
|
||||
$putResult = $client->putBucketHttpsConfig(new Oss\Models\PutBucketHttpsConfigRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\HttpsConfiguration(
|
||||
tls: new Oss\Models\TLS(
|
||||
tlsVersions: ['TLSv1.2', 'TLSv1.3'],
|
||||
enable: true
|
||||
),
|
||||
cipherSuite: new Oss\Models\CipherSuite(
|
||||
enable: true,
|
||||
strongCipherSuite: false,
|
||||
customCipherSuites: ['ECDHE-ECDSA-AES128-SHA256', 'ECDHE-RSA-AES128-GCM-SHA256', 'ECDHE-ECDSA-AES256-CCM8'],
|
||||
tls13CustomCipherSuites: ['TLS_AES_256_GCM_SHA384', 'TLS_AES_128_GCM_SHA256', 'TLS_CHACHA20_POLY1305_SHA256'],
|
||||
)
|
||||
),
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketHttpsConfig
|
||||
$getResult = $client->getBucketHttpsConfig(new Oss\Models\GetBucketHttpsConfigRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketHttpsConfigFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// PutBucketHttpsConfig
|
||||
try {
|
||||
$putResult = $client->putBucketHttpsConfig(new Oss\Models\PutBucketHttpsConfigRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\HttpsConfiguration(
|
||||
tls: new Oss\Models\TLS(
|
||||
tlsVersions: ['TLSv1.2', 'TLSv1.3'],
|
||||
enable: true
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketHttpsConfig', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketHttpsConfig
|
||||
try {
|
||||
$getResult = $client->getBucketHttpsConfig(new Oss\Models\GetBucketHttpsConfigRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketHttpsConfig', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
190
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketInventoryTest.php
vendored
Normal file
190
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketInventoryTest.php
vendored
Normal file
@@ -0,0 +1,190 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketInventoryTest extends TestIntegration
|
||||
{
|
||||
public function testBucketInventory()
|
||||
{
|
||||
if (self::$USER_ID === false) {
|
||||
throw new \Exception('user id can not be empty!');
|
||||
}
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
$id = 'report1' . rand(0, 100) . '-' . time();
|
||||
// PutBucketInventory
|
||||
$putResult = $client->putBucketInventory(new Oss\Models\PutBucketInventoryRequest(
|
||||
$bucketName,
|
||||
inventoryId: $id,
|
||||
inventoryConfiguration: new Oss\Models\InventoryConfiguration(
|
||||
isEnabled: true,
|
||||
destination: new Oss\Models\InventoryDestination(
|
||||
ossBucketDestination: new Oss\Models\InventoryOSSBucketDestination(
|
||||
bucket: 'acs:oss:::' . $bucketName,
|
||||
prefix: 'prefix1',
|
||||
format: Oss\Models\InventoryFormatType::CSV,
|
||||
accountId: self::$USER_ID,
|
||||
roleArn: 'acs:ram::' . self::$USER_ID . ':role/AliyunOSSRole'
|
||||
)
|
||||
),
|
||||
schedule: new Oss\Models\InventorySchedule(
|
||||
frequency: Oss\Models\InventoryFrequencyType::DAILY
|
||||
),
|
||||
filter: new Oss\Models\InventoryFilter(
|
||||
prefix: 'filterPrefix',
|
||||
lastModifyBeginTimeStamp: 1637883649,
|
||||
lastModifyEndTimeStamp: 1638347592,
|
||||
lowerSizeBound: 1024,
|
||||
upperSizeBound: 1048576,
|
||||
storageClass: 'Standard,IA'
|
||||
),
|
||||
includedObjectVersions: 'All',
|
||||
optionalFields: new Oss\Models\OptionalFields(
|
||||
fields: array(
|
||||
Oss\Models\InventoryOptionalFieldType::STORAGE_CLASS
|
||||
)
|
||||
),
|
||||
id: $id
|
||||
)));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketInventory
|
||||
$getResult = $client->getBucketInventory(new Oss\Models\GetBucketInventoryRequest(
|
||||
$bucketName, $id
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// ListBucketInventory
|
||||
$listResult = $client->listBucketInventory(new Oss\Models\ListBucketInventoryRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $listResult->statusCode);
|
||||
$this->assertEquals('OK', $listResult->status);
|
||||
$this->assertEquals(True, count($listResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($listResult->requestId));
|
||||
|
||||
// DeleteBucketInventory
|
||||
$delResult = $client->deleteBucketInventory(new Oss\Models\DeleteBucketInventoryRequest(
|
||||
$bucketName, $id
|
||||
));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketInventoryFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
$id = 'report1' . rand(0, 100) . '-' . time();
|
||||
// PutBucketInventory
|
||||
try {
|
||||
$putResult = $client->putBucketInventory(new Oss\Models\PutBucketInventoryRequest(
|
||||
$bucketName,
|
||||
inventoryId: $id,
|
||||
inventoryConfiguration: new Oss\Models\InventoryConfiguration(
|
||||
isEnabled: true,
|
||||
destination: new Oss\Models\InventoryDestination(
|
||||
ossBucketDestination: new Oss\Models\InventoryOSSBucketDestination(
|
||||
bucket: 'acs:oss:::' . $bucketName,
|
||||
prefix: 'prefix1',
|
||||
format: Oss\Models\InventoryFormatType::CSV,
|
||||
accountId: self::$USER_ID,
|
||||
roleArn: 'acs:ram::' . self::$USER_ID . ':role/AliyunOSSRole'
|
||||
)
|
||||
),
|
||||
schedule: new Oss\Models\InventorySchedule(
|
||||
frequency: Oss\Models\InventoryFrequencyType::DAILY
|
||||
),
|
||||
filter: new Oss\Models\InventoryFilter(
|
||||
prefix: 'filterPrefix',
|
||||
lastModifyBeginTimeStamp: 1637883649,
|
||||
lastModifyEndTimeStamp: 1638347592,
|
||||
lowerSizeBound: 1024,
|
||||
upperSizeBound: 1048576,
|
||||
storageClass: 'Standard,IA'
|
||||
),
|
||||
includedObjectVersions: 'All',
|
||||
optionalFields: new Oss\Models\OptionalFields(
|
||||
fields: array(
|
||||
Oss\Models\InventoryOptionalFieldType::STORAGE_CLASS
|
||||
)
|
||||
),
|
||||
id: $id
|
||||
)));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketInventory', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketInventory
|
||||
try {
|
||||
$getResult = $client->getBucketInventory(new Oss\Models\GetBucketInventoryRequest(
|
||||
$bucketName, $id
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketInventory', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// ListBucketInventory
|
||||
try {
|
||||
$getResult = $client->listBucketInventory(new Oss\Models\ListBucketInventoryRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListBucketInventory', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// DeleteBucketInventory
|
||||
try {
|
||||
$delResult = $client->deleteBucketInventory(new Oss\Models\DeleteBucketInventoryRequest(
|
||||
$bucketName, $id
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteBucketInventory', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
127
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketLifecycleTest.php
vendored
Normal file
127
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketLifecycleTest.php
vendored
Normal file
@@ -0,0 +1,127 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
use AlibabaCloud\Oss\V2\Models\LifecycleConfiguration;
|
||||
|
||||
class ClientBucketLifecycleTest extends TestIntegration
|
||||
{
|
||||
public function testBucketLifecycle()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// PutBucketLifecycle
|
||||
$putResult = $client->putBucketLifecycle(new Oss\Models\PutBucketLifecycleRequest(
|
||||
$bucketName,
|
||||
lifecycleConfiguration: new LifecycleConfiguration(
|
||||
array(new Oss\Models\LifecycleRule(
|
||||
prefix: 'log/',
|
||||
transitions: array(
|
||||
new Oss\Models\LifecycleRuleTransition(
|
||||
days: 30,
|
||||
storageClass: 'IA'
|
||||
)
|
||||
),
|
||||
id: 'rule',
|
||||
status: 'Enabled'
|
||||
))
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketLifecycle
|
||||
$getResult = $client->getBucketLifecycle(new Oss\Models\GetBucketLifecycleRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// DeleteBucketLifecycle
|
||||
$delResult = $client->deleteBucketLifecycle(new Oss\Models\DeleteBucketLifecycleRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketLifecycleFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// PutBucketLifecycle
|
||||
try {
|
||||
$putResult = $client->putBucketLifecycle(new Oss\Models\PutBucketLifecycleRequest(
|
||||
$bucketName,
|
||||
lifecycleConfiguration: new LifecycleConfiguration(
|
||||
array(new Oss\Models\LifecycleRule(
|
||||
prefix: 'log/',
|
||||
transitions: array(
|
||||
new Oss\Models\LifecycleRuleTransition(
|
||||
days: 30,
|
||||
storageClass: 'IA'
|
||||
)
|
||||
),
|
||||
id: 'rule',
|
||||
status: 'Enabled'
|
||||
))
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketLifecycle', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketLifecycle
|
||||
try {
|
||||
$getResult = $client->getBucketLifecycle(new Oss\Models\GetBucketLifecycleRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketLifecycle', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// DeleteBucketLifecycle
|
||||
try {
|
||||
$delResult = $client->deleteBucketLifecycle(new Oss\Models\DeleteBucketLifecycleRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteBucketLifecycle', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
188
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketLoggingTest.php
vendored
Normal file
188
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketLoggingTest.php
vendored
Normal file
@@ -0,0 +1,188 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketLoggingTest extends TestIntegration
|
||||
{
|
||||
public function testBucketLogging()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// PutBucketLogging
|
||||
$putResult = $client->putBucketLogging(new Oss\Models\PutBucketLoggingRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\BucketLoggingStatus(
|
||||
new Oss\Models\LoggingEnabled(
|
||||
targetBucket: $bucketName, targetPrefix: 'TargetPrefix', loggingRole: 'AliyunOSSLoggingDefaultRole'
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketLogging
|
||||
$getResult = $client->getBucketLogging(new Oss\Models\GetBucketLoggingRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// DeleteBucketLogging
|
||||
$delResult = $client->deleteBucketLogging(new Oss\Models\DeleteBucketLoggingRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
|
||||
// PutUserDefinedLogFieldsConfig
|
||||
$putResult = $client->putUserDefinedLogFieldsConfig(new Oss\Models\PutUserDefinedLogFieldsConfigRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\UserDefinedLogFieldsConfiguration(
|
||||
paramSet: new Oss\Models\LoggingParamSet(['param1', 'param2']), headerSet: new Oss\Models\LoggingHeaderSet(['header1', 'header2'])
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetUserDefinedLogFieldsConfig
|
||||
$getResult = $client->getUserDefinedLogFieldsConfig(new Oss\Models\GetUserDefinedLogFieldsConfigRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// DeleteUserDefinedLogFieldsConfig
|
||||
$delResult = $client->deleteUserDefinedLogFieldsConfig(new Oss\Models\DeleteUserDefinedLogFieldsConfigRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketLoggingFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
try {
|
||||
$putResult = $client->putBucketLogging(new Oss\Models\PutBucketLoggingRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\BucketLoggingStatus(
|
||||
new Oss\Models\LoggingEnabled(
|
||||
targetBucket: $bucketName, targetPrefix: 'TargetPrefix'
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketLogging', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$getResult = $client->getBucketLogging(new Oss\Models\GetBucketLoggingRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketLogging', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$delResult = $client->deleteBucketLogging(new Oss\Models\DeleteBucketLoggingRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteBucketLogging', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$putResult = $client->putUserDefinedLogFieldsConfig(new Oss\Models\PutUserDefinedLogFieldsConfigRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\UserDefinedLogFieldsConfiguration(
|
||||
paramSet: new Oss\Models\LoggingParamSet(['param1', 'param2']), headerSet: new Oss\Models\LoggingHeaderSet(['header1', 'header2'])
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutUserDefinedLogFieldsConfig', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$getResult = $client->getUserDefinedLogFieldsConfig(new Oss\Models\GetUserDefinedLogFieldsConfigRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetUserDefinedLogFieldsConfig', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$delResult = $client->deleteUserDefinedLogFieldsConfig(new Oss\Models\DeleteUserDefinedLogFieldsConfigRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteUserDefinedLogFieldsConfig', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
184
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketMetaQueryTest.php
vendored
Normal file
184
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketMetaQueryTest.php
vendored
Normal file
@@ -0,0 +1,184 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketMetaQueryTest extends TestIntegration
|
||||
{
|
||||
public function testBucketMetaQuery()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// OpenMetaQuery
|
||||
$putResult = $client->openMetaQuery(new Oss\Models\OpenMetaQueryRequest(
|
||||
$bucketName,
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetMetaQueryStatus
|
||||
$getResult = $client->getMetaQueryStatus(new Oss\Models\GetMetaQueryStatusRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// DoMetaQuery
|
||||
$request = new Oss\Models\DoMetaQueryRequest($bucketName, new Oss\Models\MetaQuery(
|
||||
maxResults: 5,
|
||||
query: "{'Field': 'Size','Value': '1048576','Operation': 'gt'}",
|
||||
sort: 'Size',
|
||||
order: Oss\Models\MetaQueryOrderType::ASC,
|
||||
aggregations: new Oss\Models\MetaQueryAggregations(
|
||||
[
|
||||
new Oss\Models\MetaQueryAggregation(
|
||||
field: 'Size',
|
||||
operation: 'sum'
|
||||
),
|
||||
new Oss\Models\MetaQueryAggregation(
|
||||
field: 'Size',
|
||||
operation: 'max'
|
||||
),
|
||||
]
|
||||
),
|
||||
));
|
||||
$doResult = $client->doMetaQuery($request);
|
||||
$this->assertEquals(200, $doResult->statusCode);
|
||||
$this->assertEquals('OK', $doResult->status);
|
||||
$this->assertEquals(True, count($doResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($doResult->requestId));
|
||||
|
||||
// CloseMetaQuery
|
||||
$closeResult = $client->closeMetaQuery(new Oss\Models\CloseMetaQueryRequest($bucketName));
|
||||
$this->assertEquals(200, $closeResult->statusCode);
|
||||
$this->assertEquals('OK', $closeResult->status);
|
||||
$this->assertEquals(True, count($closeResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($closeResult->requestId));
|
||||
|
||||
$bucketNameAiSearch = self::$BUCKETNAME_PREFIX . strval(rand(0, 100)) . '-' . strval(time()) . '-semantic';
|
||||
$client->putBucket(new Oss\Models\PutBucketRequest($bucketNameAiSearch));
|
||||
// OpenMetaQuery with semantic
|
||||
$putResult = $client->openMetaQuery(new Oss\Models\OpenMetaQueryRequest(
|
||||
$bucketNameAiSearch, 'semantic'
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// DoMetaQuery with semantic
|
||||
$request = new Oss\Models\DoMetaQueryRequest($bucketNameAiSearch, new Oss\Models\MetaQuery(
|
||||
maxResults: 99,
|
||||
query: "Overlook the snow-covered forest",
|
||||
mediaTypes: new Oss\Models\MetaQueryMediaTypes('image'),
|
||||
simpleQuery: '{"Operation":"gt", "Field": "Size", "Value": "30"}',
|
||||
), 'semantic');
|
||||
$doResult = $client->doMetaQuery($request);
|
||||
$this->assertEquals(200, $doResult->statusCode);
|
||||
$this->assertEquals('OK', $doResult->status);
|
||||
$this->assertEquals(True, count($doResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($doResult->requestId));
|
||||
|
||||
$client->deleteBucket(new Oss\Models\DeleteBucketRequest($bucketNameAiSearch));
|
||||
}
|
||||
|
||||
public function testBucketMetaQueryFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// OpenMetaQuery
|
||||
try {
|
||||
$putResult = $client->openMetaQuery(new Oss\Models\OpenMetaQueryRequest(
|
||||
$bucketName,
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error OpenMetaQuery', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetMetaQueryStatus
|
||||
try {
|
||||
$getResult = $client->getMetaQueryStatus(new Oss\Models\GetMetaQueryStatusRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetMetaQueryStatus', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// DoMetaQuery
|
||||
try {
|
||||
$request = new Oss\Models\DoMetaQueryRequest($bucketName, new Oss\Models\MetaQuery(
|
||||
maxResults: 5,
|
||||
query: "{'Field': 'Size','Value': '1048576','Operation': 'gt'}",
|
||||
sort: 'Size',
|
||||
order: Oss\Models\MetaQueryOrderType::ASC,
|
||||
aggregations: new Oss\Models\MetaQueryAggregations(
|
||||
[
|
||||
new Oss\Models\MetaQueryAggregation(
|
||||
field: 'Size',
|
||||
operation: 'sum'
|
||||
),
|
||||
new Oss\Models\MetaQueryAggregation(
|
||||
field: 'Size',
|
||||
operation: 'max'
|
||||
),
|
||||
]
|
||||
),
|
||||
));
|
||||
$doResult = $client->doMetaQuery($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DoMetaQuery', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// CloseMetaQuery
|
||||
try {
|
||||
$closeResult = $client->closeMetaQuery(new Oss\Models\CloseMetaQueryRequest($bucketName));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error CloseMetaQuery', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
112
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketOverwriteTest.php
vendored
Normal file
112
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketOverwriteTest.php
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketOverwriteTest extends TestIntegration
|
||||
{
|
||||
public function testBucketOverwriteConfig()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// PutBucketOverwriteConfig
|
||||
$putResult = $client->putBucketOverwriteConfig(new Oss\Models\PutBucketOverwriteConfigRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\OverwriteConfiguration(
|
||||
array(
|
||||
new Oss\Models\OverwriteRule(
|
||||
'forbid', null, null, null, 'rule-001'
|
||||
)
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketOverwriteConfig
|
||||
$getResult = $client->getBucketOverwriteConfig(new Oss\Models\GetBucketOverwriteConfigRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// DeleteBucketOverwriteConfig
|
||||
$delResult = $client->deleteBucketOverwriteConfig(new Oss\Models\DeleteBucketOverwriteConfigRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketOverwriteConfigFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
try {
|
||||
$putResult = $client->putBucketOverwriteConfig(new Oss\Models\PutBucketOverwriteConfigRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\OverwriteConfiguration(
|
||||
array(
|
||||
new Oss\Models\OverwriteRule(
|
||||
'forbid', null, null, null, 'rule-001'
|
||||
)
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketOverwriteConfig', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('MalformedXML', $se->getErrorCode());
|
||||
$this->assertEquals(400, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$getResult = $client->getBucketOverwriteConfig(new Oss\Models\GetBucketOverwriteConfigRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketOverwriteConfig', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$delResult = $client->deleteBucketOverwriteConfig(new Oss\Models\DeleteBucketOverwriteConfigRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteBucketOverwriteConfig', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
136
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketPolicyTest.php
vendored
Normal file
136
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketPolicyTest.php
vendored
Normal file
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
use AlibabaCloud\Oss\V2\Models\LifecycleConfiguration;
|
||||
|
||||
class ClientBucketPolicyTest extends TestIntegration
|
||||
{
|
||||
public function testBucketPolicy()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
$client->putBucketPublicAccessBlock(new Oss\Models\PutBucketPublicAccessBlockRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\PublicAccessBlockConfiguration(
|
||||
false
|
||||
)
|
||||
));
|
||||
|
||||
// PutBucketPolicy
|
||||
$putResult = $client->putBucketPolicy(new Oss\Models\PutBucketPolicyRequest(
|
||||
$bucketName,
|
||||
'{"Version":"1","Statement":[{"Action":["oss:PutObject","oss:GetObject"],"Effect":"Allow","Resource":["acs:oss:*:*:*"]}]}'
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketPolicy
|
||||
$getResult = $client->getBucketPolicy(new Oss\Models\GetBucketPolicyRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// GetBucketPolicyStatus
|
||||
$getResult2 = $client->getBucketPolicyStatus(new Oss\Models\GetBucketPolicyStatusRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult2->statusCode);
|
||||
$this->assertEquals('OK', $getResult2->status);
|
||||
$this->assertEquals(True, count($getResult2->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult2->requestId));
|
||||
|
||||
// DeleteBucketPolicy
|
||||
$delResult = $client->deleteBucketPolicy(new Oss\Models\DeleteBucketPolicyRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketTransferAccelerationFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// PutBucketPolicy
|
||||
try {
|
||||
$putResult = $client->putBucketPolicy(new Oss\Models\PutBucketPolicyRequest(
|
||||
$bucketName,
|
||||
'{"Version":"1","Statement":[{"Action":["oss:PutObject","oss:GetObject"],"Effect":"Allow","Resource":["acs:oss:*:*:*"]}]}'
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketPolicy', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketPolicy
|
||||
try {
|
||||
$getResult = $client->getBucketPolicy(new Oss\Models\GetBucketPolicyRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketPolicy', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketPolicyStatus
|
||||
try {
|
||||
$getResult = $client->getBucketPolicyStatus(new Oss\Models\GetBucketPolicyStatusRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketPolicyStatus', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// DeleteBucketPolicy
|
||||
try {
|
||||
$delResult = $client->deleteBucketPolicy(new Oss\Models\DeleteBucketPolicyRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteBucketPolicy', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
90
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketPublicAccessBlockTest.php
vendored
Normal file
90
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketPublicAccessBlockTest.php
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketPublicAccessBlockTest extends TestIntegration
|
||||
{
|
||||
public function testBucketPublicAccessBlock()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucket = self::$bucketName;
|
||||
// PutBucketPublicAccessBlock
|
||||
$putResult = $client->putBucketPublicAccessBlock(new Oss\Models\PutBucketPublicAccessBlockRequest(
|
||||
$bucket, new Oss\Models\PublicAccessBlockConfiguration(true)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketPublicAccessBlock
|
||||
$getResult = $client->getBucketPublicAccessBlock(new Oss\Models\GetBucketPublicAccessBlockRequest($bucket));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// DeleteBucketPublicAccessBlock
|
||||
$delResult = $client->deleteBucketPublicAccessBlock(new Oss\Models\DeleteBucketPublicAccessBlockRequest($bucket));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketPublicAccessBlockFail()
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
$bucketName = self::$bucketName;
|
||||
// PutBucketPublicAccessBlock
|
||||
try {
|
||||
$putResult = $client->putBucketPublicAccessBlock(new Oss\Models\PutBucketPublicAccessBlockRequest(
|
||||
$bucketName, new Oss\Models\PublicAccessBlockConfiguration(true)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketPublicAccessBlock', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketPublicAccessBlock
|
||||
try {
|
||||
$getResult = $client->getBucketPublicAccessBlock(new Oss\Models\GetBucketPublicAccessBlockRequest($bucketName));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketPublicAccessBlock', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// DeleteBucketPublicAccessBlock
|
||||
try {
|
||||
$delResult = $client->deleteBucketPublicAccessBlock(new Oss\Models\DeleteBucketPublicAccessBlockRequest($bucketName));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteBucketPublicAccessBlock', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
83
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketRefererTest.php
vendored
Normal file
83
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketRefererTest.php
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
use AlibabaCloud\Oss\V2\Models\LifecycleConfiguration;
|
||||
|
||||
class ClientBucketRefererTest extends TestIntegration
|
||||
{
|
||||
public function testBucketReferer()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// PutBucketReferer
|
||||
$putResult = $client->putBucketReferer(new Oss\Models\PutBucketRefererRequest(
|
||||
$bucketName,
|
||||
refererConfiguration: new Oss\Models\RefererConfiguration(
|
||||
allowEmptyReferer: false,
|
||||
refererList: new Oss\Models\RefererList([""]),
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketReferer
|
||||
$getResult = $client->getBucketReferer(new Oss\Models\GetBucketRefererRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketRefererFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// PutBucketReferer
|
||||
try {
|
||||
$putResult = $client->putBucketReferer(new Oss\Models\PutBucketRefererRequest(
|
||||
$bucketName,
|
||||
refererConfiguration: new Oss\Models\RefererConfiguration(
|
||||
allowEmptyReferer: false,
|
||||
refererList: new Oss\Models\RefererList([""]),
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketReferer', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketReferer
|
||||
try {
|
||||
$getResult = $client->getBucketReferer(new Oss\Models\GetBucketRefererRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketReferer', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
246
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketReplicationTest.php
vendored
Normal file
246
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketReplicationTest.php
vendored
Normal file
@@ -0,0 +1,246 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketReplicationTest extends TestIntegration
|
||||
{
|
||||
public function testBucketReplication()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$targetBucketName = self::randomBucketName() . '-target';
|
||||
$cfg = Oss\Config::loadDefault();
|
||||
$cfg->setCredentialsProvider(new Oss\Credentials\StaticCredentialsProvider(
|
||||
self::$ACCESS_ID,
|
||||
self::$ACCESS_KEY
|
||||
));
|
||||
$cfg->setRegion('cn-beijing');
|
||||
$client1 = new Oss\Client($cfg);
|
||||
$client1->putBucket(new Oss\Models\PutBucketRequest(
|
||||
$targetBucketName
|
||||
));
|
||||
|
||||
// PutBucketReplication
|
||||
$putResult = $client->putBucketReplication(new Oss\Models\PutBucketReplicationRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\ReplicationConfiguration(
|
||||
array(
|
||||
new Oss\Models\ReplicationRule(
|
||||
sourceSelectionCriteria: new Oss\Models\ReplicationSourceSelectionCriteria(
|
||||
sseKmsEncryptedObjects: new Oss\Models\SseKmsEncryptedObjects(
|
||||
status: 'Enabled'
|
||||
)
|
||||
),
|
||||
destination: new Oss\Models\ReplicationDestination(
|
||||
bucket: $targetBucketName,
|
||||
location: 'oss-cn-beijing',
|
||||
transferType: Oss\Models\TransferType::INTERNAL
|
||||
),
|
||||
historicalObjectReplication: Oss\Models\HistoricalObjectReplicationType::ENABLED,
|
||||
rtc: new Oss\Models\ReplicationTimeControl(status: 'enabled')
|
||||
)
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketReplication
|
||||
$getResult = $client->getBucketReplication(new Oss\Models\GetBucketReplicationRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// GetBucketReplicationLocation
|
||||
$getLocationResult = $client->getBucketReplicationLocation(new Oss\Models\GetBucketReplicationLocationRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getLocationResult->statusCode);
|
||||
$this->assertEquals('OK', $getLocationResult->status);
|
||||
$this->assertEquals(True, count($getLocationResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getLocationResult->requestId));
|
||||
|
||||
// GetBucketReplicationProgress
|
||||
$getProgressResult = $client->getBucketReplicationProgress(new Oss\Models\GetBucketReplicationProgressRequest(
|
||||
$bucketName,
|
||||
$getResult->replicationConfiguration->rules[0]->id
|
||||
));
|
||||
$this->assertEquals(200, $getProgressResult->statusCode);
|
||||
$this->assertEquals('OK', $getProgressResult->status);
|
||||
$this->assertEquals(True, count($getProgressResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getProgressResult->requestId));
|
||||
|
||||
// PutBucketRtc
|
||||
$putRtcResult = $client->putBucketRtc(new Oss\Models\PutBucketRtcRequest(
|
||||
$bucketName,
|
||||
rtcConfiguration: new Oss\Models\RtcConfiguration(
|
||||
rtc: new Oss\Models\ReplicationTimeControl(
|
||||
status: 'disabled'
|
||||
),
|
||||
id: $getResult->replicationConfiguration->rules[0]->id
|
||||
),
|
||||
));
|
||||
$this->assertEquals(200, $putRtcResult->statusCode);
|
||||
$this->assertEquals('OK', $putRtcResult->status);
|
||||
$this->assertEquals(True, count($putRtcResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putRtcResult->requestId));
|
||||
|
||||
// DeleteBucketReplication
|
||||
$delResult = $client->deleteBucketReplication(new Oss\Models\DeleteBucketReplicationRequest(
|
||||
$bucketName,
|
||||
replicationRules: new Oss\Models\ReplicationRules(
|
||||
ids: [$getResult->replicationConfiguration->rules[0]->id]
|
||||
)
|
||||
),
|
||||
);
|
||||
$this->assertEquals(200, $delResult->statusCode);
|
||||
$this->assertEquals('OK', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
$client1->deleteBucket(new Oss\Models\DeleteBucketRequest(
|
||||
$targetBucketName
|
||||
));
|
||||
}
|
||||
|
||||
public function testBucketReplicationFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// PutBucketReplication
|
||||
try {
|
||||
$putResult = $client->putBucketReplication(new Oss\Models\PutBucketReplicationRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\ReplicationConfiguration(
|
||||
array(
|
||||
new Oss\Models\ReplicationRule(
|
||||
sourceSelectionCriteria: new Oss\Models\ReplicationSourceSelectionCriteria(
|
||||
sseKmsEncryptedObjects: new Oss\Models\SseKmsEncryptedObjects(
|
||||
status: 'Enabled'
|
||||
)
|
||||
),
|
||||
destination: new Oss\Models\ReplicationDestination(
|
||||
bucket: 'bucket-not-exist',
|
||||
location: 'oss-cn-beijing',
|
||||
transferType: Oss\Models\TransferType::INTERNAL
|
||||
),
|
||||
historicalObjectReplication: Oss\Models\HistoricalObjectReplicationType::ENABLED,
|
||||
rtc: new Oss\Models\ReplicationTimeControl(status: 'enabled')
|
||||
)
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketReplication', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketReplication
|
||||
try {
|
||||
$getResult = $client->getBucketReplication(new Oss\Models\GetBucketReplicationRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketReplication', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$getLocationResult = $client->getBucketReplicationLocation(new Oss\Models\GetBucketReplicationLocationRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketReplicationLocation', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$getProgressResult = $client->getBucketReplicationProgress(new Oss\Models\GetBucketReplicationProgressRequest(
|
||||
$bucketName,
|
||||
'rule-id'
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketReplicationProgress', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$putRtcResult = $client->putBucketRtc(new Oss\Models\PutBucketRtcRequest(
|
||||
$bucketName,
|
||||
rtcConfiguration: new Oss\Models\RtcConfiguration(
|
||||
rtc: new Oss\Models\ReplicationTimeControl(
|
||||
status: 'disabled'
|
||||
),
|
||||
id: 'rule-id'
|
||||
),
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketRtc', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$delResult = $client->deleteBucketReplication(new Oss\Models\DeleteBucketReplicationRequest(
|
||||
$bucketName,
|
||||
replicationRules: new Oss\Models\ReplicationRules(
|
||||
ids: ['rule-id']
|
||||
)
|
||||
),
|
||||
);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteBucketReplication', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
80
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketRequestPaymentTest.php
vendored
Normal file
80
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketRequestPaymentTest.php
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketRequestPaymentTest extends TestIntegration
|
||||
{
|
||||
public function testBucketRequestPayment()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// PutBucketRequestPayment
|
||||
$putResult = $client->putBucketRequestPayment(new Oss\Models\PutBucketRequestPaymentRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\RequestPaymentConfiguration(
|
||||
'Requester'
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketRequestPayment
|
||||
$getResult = $client->getBucketRequestPayment(new Oss\Models\GetBucketRequestPaymentRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketRequestPaymentFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// PutBucketRequestPayment
|
||||
try {
|
||||
$putResult = $client->putBucketRequestPayment(new Oss\Models\PutBucketRequestPaymentRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\RequestPaymentConfiguration(
|
||||
'Requester'
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketRequestPayment', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketRequestPayment
|
||||
try {
|
||||
$getResult = $client->getBucketRequestPayment(new Oss\Models\GetBucketRequestPaymentRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketRequestPayment', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
78
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketResourceGroupTest.php
vendored
Normal file
78
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketResourceGroupTest.php
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketResourceGroupTest extends TestIntegration
|
||||
{
|
||||
public function testBucketResourceGroup()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// GetBucketResourceGroup
|
||||
$getResult = $client->getBucketResourceGroup(new Oss\Models\GetBucketResourceGroupRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// PutBucketResourceGroup
|
||||
$putResult = $client->putBucketResourceGroup(new Oss\Models\PutBucketResourceGroupRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\BucketResourceGroupConfiguration(
|
||||
$getResult->bucketResourceGroupConfiguration->resourceGroupId
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketResourceGroupFail()
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// PutBucketResourceGroup
|
||||
try {
|
||||
$putResult = $client->putBucketResourceGroup(new Oss\Models\PutBucketResourceGroupRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\BucketResourceGroupConfiguration('rg-123')
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketResourceGroup', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketResourceGroup
|
||||
try {
|
||||
$getResult = $client->getBucketResourceGroup(new Oss\Models\GetBucketResourceGroupRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketResourceGroup', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
128
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketStyleTest.php
vendored
Normal file
128
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketStyleTest.php
vendored
Normal file
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketStyleTest extends TestIntegration
|
||||
{
|
||||
public function testBucketStyle()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// PutStyle
|
||||
$putResult = $client->putStyle(new Oss\Models\PutStyleRequest(
|
||||
$bucketName,
|
||||
styleName: 'test',
|
||||
style: new Oss\Models\StyleContent('image/resize,p_50')
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetStyle
|
||||
$getResult = $client->getStyle(new Oss\Models\GetStyleRequest(
|
||||
$bucketName, 'test'
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// ListStyle
|
||||
$listResult = $client->listStyle(new Oss\Models\ListStyleRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $listResult->statusCode);
|
||||
$this->assertEquals('OK', $listResult->status);
|
||||
$this->assertEquals(True, count($listResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($listResult->requestId));
|
||||
|
||||
// DeleteStyle
|
||||
$delResult = $client->deleteStyle(new Oss\Models\DeleteStyleRequest(
|
||||
$bucketName, 'test'
|
||||
));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketStyleFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// PutStyle
|
||||
try {
|
||||
$putResult = $client->putStyle(new Oss\Models\PutStyleRequest(
|
||||
$bucketName,
|
||||
styleName: 'test',
|
||||
style: new Oss\Models\StyleContent('image/resize,p_50')
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutStyle', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetStyle
|
||||
try {
|
||||
$getResult = $client->getStyle(new Oss\Models\GetStyleRequest(
|
||||
$bucketName, 'test'
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetStyle', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// ListStyle
|
||||
try {
|
||||
$listResult = $client->listStyle(new Oss\Models\ListStyleRequest(
|
||||
$bucketName
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListStyle', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// DeleteStyle
|
||||
try {
|
||||
$delResult = $client->deleteStyle(new Oss\Models\DeleteStyleRequest(
|
||||
$bucketName, 'test'
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteStyle', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
109
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketTagsTest.php
vendored
Normal file
109
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketTagsTest.php
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
use AlibabaCloud\Oss\V2\Models\LifecycleConfiguration;
|
||||
|
||||
class ClientBucketTagsTest extends TestIntegration
|
||||
{
|
||||
public function testBucketTags()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// PutBucketTags
|
||||
$putResult = $client->putBucketTags(new Oss\Models\PutBucketTagsRequest(
|
||||
$bucketName,
|
||||
tagging: new Oss\Models\Tagging(
|
||||
tagSet: new Oss\Models\TagSet(
|
||||
[new Oss\Models\Tag(key: 'key1', value: 'value1'), new Oss\Models\Tag(key: 'key2', value: 'value2')])
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketTags
|
||||
$getResult = $client->getBucketTags(new Oss\Models\GetBucketTagsRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// DeleteBucketTags
|
||||
$delResult = $client->deleteBucketTags(new Oss\Models\DeleteBucketTagsRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketTagsFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// PutBucketTags
|
||||
try {
|
||||
$putResult = $client->putBucketTags(new Oss\Models\PutBucketTagsRequest(
|
||||
$bucketName,
|
||||
tagging: new Oss\Models\Tagging(
|
||||
tagSet: new Oss\Models\TagSet(
|
||||
[new Oss\Models\Tag(key: 'key1', value: 'value1'), new Oss\Models\Tag(key: 'key2', value: 'value2')])
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketTags', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketTags
|
||||
try {
|
||||
$getResult = $client->getBucketTags(new Oss\Models\GetBucketTagsRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketTags', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// DeleteBucketTags
|
||||
try {
|
||||
$delResult = $client->deleteBucketTags(new Oss\Models\DeleteBucketTagsRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteBucketTags', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
81
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketTransferAccelerationTest.php
vendored
Normal file
81
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketTransferAccelerationTest.php
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
use AlibabaCloud\Oss\V2\Models\LifecycleConfiguration;
|
||||
|
||||
class ClientBucketTransferAccelerationTest extends TestIntegration
|
||||
{
|
||||
public function testBucketTransferAcceleration()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// PutBucketTransferAcceleration
|
||||
$putResult = $client->putBucketTransferAcceleration(new Oss\Models\PutBucketTransferAccelerationRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\TransferAccelerationConfiguration(
|
||||
true
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketTransferAcceleration
|
||||
$getResult = $client->getBucketTransferAcceleration(new Oss\Models\GetBucketTransferAccelerationRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketTransferAccelerationFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// PutBucketTransferAcceleration
|
||||
try {
|
||||
$putResult = $client->putBucketTransferAcceleration(new Oss\Models\PutBucketTransferAccelerationRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\TransferAccelerationConfiguration(
|
||||
true
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketTransferAcceleration', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketTransferAcceleration
|
||||
try {
|
||||
$getResult = $client->getBucketTransferAcceleration(new Oss\Models\GetBucketTransferAccelerationRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketTransferAcceleration', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
242
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketWebsiteTest.php
vendored
Normal file
242
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketWebsiteTest.php
vendored
Normal file
@@ -0,0 +1,242 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketWebsiteTest extends TestIntegration
|
||||
{
|
||||
public function testBucketWebsite()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// PutBucketWebsite
|
||||
$putResult = $client->putBucketWebsite(new Oss\Models\PutBucketWebsiteRequest(
|
||||
$bucketName,
|
||||
websiteConfiguration: new Oss\Models\WebsiteConfiguration(
|
||||
indexDocument: new Oss\Models\IndexDocument(
|
||||
suffix: 'index.html', supportSubDir: true, type: 0
|
||||
),
|
||||
errorDocument: new Oss\Models\ErrorDocument(
|
||||
key: 'error.html', httpStatus: 404
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetBucketWebsite
|
||||
$getResult = $client->getBucketWebsite(new Oss\Models\GetBucketWebsiteRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// DeleteBucketWebsite
|
||||
$delResult = $client->deleteBucketWebsite(new Oss\Models\DeleteBucketWebsiteRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
|
||||
// PutBucketWebsite
|
||||
$putResult = $client->putBucketWebsite(new Oss\Models\PutBucketWebsiteRequest(
|
||||
$bucketName,
|
||||
websiteConfiguration: new Oss\Models\WebsiteConfiguration(
|
||||
indexDocument: new Oss\Models\IndexDocument(
|
||||
suffix: 'index.html', supportSubDir: true, type: 0
|
||||
),
|
||||
errorDocument: new Oss\Models\ErrorDocument(
|
||||
key: 'error.html', httpStatus: 404
|
||||
),
|
||||
routingRules: new Oss\Models\RoutingRules([
|
||||
new Oss\Models\RoutingRule(
|
||||
redirect: new Oss\Models\RoutingRuleRedirect(
|
||||
mirrorPassOriginalSlashes: false,
|
||||
redirectType: 'Mirror',
|
||||
mirrorURL: 'http://example.com/',
|
||||
mirrorPassQueryString: true,
|
||||
mirrorCheckMd5: true,
|
||||
mirrorSNI: true,
|
||||
replaceKeyPrefixWith: "def/",
|
||||
mirrorFollowRedirect: true,
|
||||
hostName: "example.com",
|
||||
mirrorHeaders: new Oss\Models\MirrorHeaders(
|
||||
passs: ["myheader-key1", "myheader-key2"],
|
||||
sets: array(
|
||||
new Oss\Models\MirrorHeaderSet(key: 'myheader-key5', value: 'myheader-value5'),
|
||||
),
|
||||
passAll: true,
|
||||
),
|
||||
passQueryString: true,
|
||||
enableReplacePrefix: true,
|
||||
httpRedirectCode: 301,
|
||||
mirrorURLSlave: 'http://example.com/',
|
||||
mirrorSaveOssMeta: true,
|
||||
mirrorProxyPass: false,
|
||||
mirrorAllowGetImageInfo: true,
|
||||
mirrorAllowVideoSnapshot: false,
|
||||
mirrorIsExpressTunnel: true,
|
||||
mirrorDstRegion: 'cn-hangzhou',
|
||||
mirrorUserLastModified: false,
|
||||
mirrorSwitchAllErrors: true,
|
||||
mirrorUsingRole: true,
|
||||
mirrorRole: 'aliyun-test-role',
|
||||
mirrorAllowHeadObject: true,
|
||||
transparentMirrorResponseCodes: '400',
|
||||
mirrorTaggings: new Oss\Models\MirrorTaggings(
|
||||
taggings: [new Oss\Models\MirrorTagging(
|
||||
value: 'v',
|
||||
key: 'k'
|
||||
)]
|
||||
),
|
||||
mirrorReturnHeaders: new Oss\Models\MirrorReturnHeaders(
|
||||
returnHeaders: [
|
||||
new Oss\Models\ReturnHeader(
|
||||
key: 'k',
|
||||
value: 'v'
|
||||
)
|
||||
]
|
||||
),
|
||||
mirrorAuth: new Oss\Models\MirrorAuth(
|
||||
'S3V4', 'ap-southeast-1', 'TESTAK', 'TESTSK'
|
||||
),
|
||||
mirrorMultiAlternates: new Oss\Models\MirrorMultiAlternates(
|
||||
[
|
||||
new Oss\Models\MirrorMultiAlternate(
|
||||
mirrorMultiAlternateNumber: 32, mirrorMultiAlternateURL: 'https://test-multi-alter.example.com', mirrorMultiAlternateVpcId: 'vpc-test-id', mirrorMultiAlternateDstRegion: 'ap-southeast-1'
|
||||
)
|
||||
]
|
||||
)
|
||||
),
|
||||
ruleNumber: 1,
|
||||
condition: new Oss\Models\RoutingRuleCondition(
|
||||
keyPrefixEquals: 'abc/',
|
||||
keySuffixEquals: ".txt",
|
||||
httpErrorCodeReturnedEquals: 404,
|
||||
),
|
||||
luaConfig: new Oss\Models\RoutingRuleLuaConfig(
|
||||
script: "test.lua",
|
||||
)
|
||||
),
|
||||
new Oss\Models\RoutingRule(
|
||||
redirect: new Oss\Models\RoutingRuleRedirect(
|
||||
redirectType: 'AliCDN',
|
||||
mirrorURL: 'http://example.com/',
|
||||
mirrorPassQueryString: true,
|
||||
mirrorCheckMd5: true,
|
||||
mirrorSNI: true,
|
||||
protocol: 'http',
|
||||
mirrorFollowRedirect: true,
|
||||
mirrorHeaders: new Oss\Models\MirrorHeaders(
|
||||
passs: ["myheader-key1", "myheader-key2"],
|
||||
sets: array(
|
||||
new Oss\Models\MirrorHeaderSet(key: 'myheader-key5', value: 'myheader-value5'),
|
||||
),
|
||||
passAll: true,
|
||||
),
|
||||
passQueryString: true,
|
||||
replaceKeyWith: "abc",
|
||||
),
|
||||
ruleNumber: 2,
|
||||
condition: new Oss\Models\RoutingRuleCondition(
|
||||
keyPrefixEquals: 'abc/',
|
||||
keySuffixEquals: ".txt",
|
||||
httpErrorCodeReturnedEquals: 404,
|
||||
),
|
||||
luaConfig: new Oss\Models\RoutingRuleLuaConfig(
|
||||
script: "test.lua",
|
||||
)
|
||||
),
|
||||
]),
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// DeleteBucketWebsite
|
||||
$delResult = $client->deleteBucketWebsite(new Oss\Models\DeleteBucketWebsiteRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
}
|
||||
|
||||
public function testBucketWebsiteFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// PutBucketWebsite
|
||||
try {
|
||||
$putResult = $client->putBucketWebsite(new Oss\Models\PutBucketWebsiteRequest(
|
||||
$bucketName,
|
||||
websiteConfiguration: new Oss\Models\WebsiteConfiguration(
|
||||
indexDocument: new Oss\Models\IndexDocument(
|
||||
suffix: 'index.html', supportSubDir: true, type: 0
|
||||
),
|
||||
errorDocument: new Oss\Models\ErrorDocument(
|
||||
key: 'error.html', httpStatus: 404
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutBucketWebsite', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketWebsite
|
||||
try {
|
||||
$getResult = $client->getBucketWebsite(new Oss\Models\GetBucketWebsiteRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketWebsite', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// DeleteBucketWebsite
|
||||
try {
|
||||
$delResult = $client->deleteBucketWebsite(new Oss\Models\DeleteBucketWebsiteRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteBucketWebsite', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
183
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketWormTest.php
vendored
Normal file
183
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientBucketWormTest.php
vendored
Normal file
@@ -0,0 +1,183 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientBucketWormTest extends TestIntegration
|
||||
{
|
||||
public function testBucketWorm()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// InitiateBucketWorm
|
||||
$initResult = $client->initiateBucketWorm(new Oss\Models\InitiateBucketWormRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\InitiateWormConfiguration(1)
|
||||
));
|
||||
$this->assertEquals(200, $initResult->statusCode);
|
||||
$this->assertEquals('OK', $initResult->status);
|
||||
$this->assertEquals(True, count($initResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($initResult->requestId));
|
||||
$this->assertNotEmpty($initResult->wormId);
|
||||
|
||||
// GetBucketWorm
|
||||
$getResult = $client->getBucketWorm(new Oss\Models\GetBucketWormRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
$this->assertEquals($initResult->wormId, $getResult->wormConfiguration->wormId);
|
||||
$this->assertNotEmpty($getResult->wormConfiguration->creationDate);
|
||||
$this->assertNotEmpty($getResult->wormConfiguration->retentionPeriodInDays);
|
||||
$this->assertNotEmpty($getResult->wormConfiguration->state);
|
||||
|
||||
// AbortBucketWorm
|
||||
$abortResult = $client->abortBucketWorm(new Oss\Models\AbortBucketWormRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertEquals(204, $abortResult->statusCode);
|
||||
$this->assertEquals('No Content', $abortResult->status);
|
||||
$this->assertEquals(True, count($abortResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($abortResult->requestId));
|
||||
|
||||
// CompleteBucketWorm
|
||||
try {
|
||||
$result = $client->completeBucketWorm(new Oss\Models\CompleteBucketWormRequest(
|
||||
$bucketName,
|
||||
$initResult->wormId
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error CompleteBucketWorm', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchWORMConfiguration', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// ExtendBucketWorm
|
||||
try {
|
||||
$result = $client->extendBucketWorm(new Oss\Models\ExtendBucketWormRequest(
|
||||
$bucketName,
|
||||
$initResult->wormId,
|
||||
new Oss\Models\ExtendWormConfiguration(2)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ExtendBucketWorm', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchWORMConfiguration', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testBucketWormFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . "-not-exist";
|
||||
|
||||
// InitiateBucketWorm
|
||||
try {
|
||||
$initResult = $client->initiateBucketWorm(new Oss\Models\InitiateBucketWormRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\InitiateWormConfiguration(1)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error InitiateBucketWorm', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetBucketWorm
|
||||
try {
|
||||
$getResult = $client->getBucketWorm(new Oss\Models\GetBucketWormRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetBucketWorm', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// AbortBucketWorm
|
||||
try {
|
||||
$abortResult = $client->abortBucketWorm(new Oss\Models\AbortBucketWormRequest(
|
||||
$bucketName
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error AbortBucketWorm', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
$wormId = 'not-exist-wormId';
|
||||
|
||||
// CompleteBucketWorm
|
||||
try {
|
||||
$result = $client->completeBucketWorm(new Oss\Models\CompleteBucketWormRequest(
|
||||
$bucketName,
|
||||
$wormId
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error CompleteBucketWorm', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// ExtendBucketWorm
|
||||
try {
|
||||
$result = $client->extendBucketWorm(new Oss\Models\ExtendBucketWormRequest(
|
||||
$bucketName,
|
||||
$wormId,
|
||||
new Oss\Models\ExtendWormConfiguration(2)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ExtendBucketWorm', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1010
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientExtensionTest.php
vendored
Normal file
1010
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientExtensionTest.php
vendored
Normal file
File diff suppressed because it is too large
Load Diff
57
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientListCloudBoxesTest.php
vendored
Normal file
57
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientListCloudBoxesTest.php
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
use GuzzleHttp\Psr7\LazyOpenStream;
|
||||
use GuzzleHttp\Psr7\NoSeekStream;
|
||||
use GuzzleHttp\Psr7\BufferStream;
|
||||
|
||||
class ClientListCloudBoxesTest extends TestIntegration
|
||||
{
|
||||
public function testListCloudBoxes()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
|
||||
// ListCloudBoxes
|
||||
try {
|
||||
$result = $client->listCloudBoxes(new Oss\Models\ListCloudBoxesRequest());
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListCloudBoxes', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('You are forbidden to oss-cloudbox:ListCloudBoxes', $se->getErrorMessage());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
} else {
|
||||
$this->assertTrue(false, "should not here");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListCloudBoxesFail()
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
|
||||
try {
|
||||
$result = $client->listCloudBoxes(new Oss\Models\ListCloudBoxesRequest());
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListCloudBoxes', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
380
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientMiscTest.php
vendored
Normal file
380
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientMiscTest.php
vendored
Normal file
@@ -0,0 +1,380 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use GuzzleHttp\Promise as P;
|
||||
use GuzzleHttp\Psr7\LimitStream;
|
||||
use GuzzleHttp\Psr7\LazyOpenStream;
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientMiscTest extends TestIntegration
|
||||
{
|
||||
public function testPutObjectProgress()
|
||||
{
|
||||
$client = self::getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$filename = self::getTempFileName();
|
||||
$size = 512 * 1024 + 1234;
|
||||
$this->generateFile($filename, $size);
|
||||
$handle = fopen($filename, 'rb');
|
||||
$reqeust = new Oss\Models\PutObjectRequest($bucketName, 'key-123+-/123%/345');
|
||||
$reqeust->body = Oss\Utils::streamFor($handle);
|
||||
$gotIncrement = 0;
|
||||
$gotSize = 0;
|
||||
$gotTotal = 0;
|
||||
$reqeust->progressFn = static function (int $increment, int $transferred, int $total) use (&$gotIncrement, &$gotSize, &$gotTotal) {
|
||||
$gotIncrement += $increment;
|
||||
$gotSize = $transferred;
|
||||
$gotTotal = $total;
|
||||
};
|
||||
$client->putObject($reqeust);
|
||||
fclose($handle);
|
||||
$this->assertEquals($size, $gotIncrement);
|
||||
$this->assertEquals($size, $gotSize);
|
||||
$this->assertEquals($size, $gotTotal);
|
||||
}
|
||||
|
||||
public function testAppendObjectProgress()
|
||||
{
|
||||
$client = self::getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$filename = self::getTempFileName();
|
||||
$size = 512 * 1024 + 1234;
|
||||
$this->generateFile($filename, $size);
|
||||
$handle = fopen($filename, 'rb');
|
||||
$reqeust = new Oss\Models\AppendObjectRequest($bucketName, 'append-key-123.txt');
|
||||
$reqeust->position = 0;
|
||||
$reqeust->body = Oss\Utils::streamFor($handle);
|
||||
$gotIncrement = 0;
|
||||
$gotSize = 0;
|
||||
$gotTotal = 0;
|
||||
$reqeust->progressFn = static function (int $increment, int $transferred, int $total) use (&$gotIncrement, &$gotSize, &$gotTotal) {
|
||||
$gotIncrement += $increment;
|
||||
$gotSize = $transferred;
|
||||
$gotTotal = $total;
|
||||
};
|
||||
$client->appendObject($reqeust);
|
||||
fclose($handle);
|
||||
$this->assertEquals($size, $gotIncrement);
|
||||
$this->assertEquals($size, $gotSize);
|
||||
$this->assertEquals($size, $gotTotal);
|
||||
|
||||
$reqeust = new Oss\Models\AppendObjectRequest($bucketName, 'append-key-123.txt');
|
||||
$reqeust->body = Oss\Utils::streamFor('hello world');
|
||||
$reqeust->position = $size;
|
||||
$gotIncrement = 0;
|
||||
$gotSize = 0;
|
||||
$gotTotal = 0;
|
||||
$reqeust->progressFn = static function (int $increment, int $transferred, int $total) use (&$gotIncrement, &$gotSize, &$gotTotal) {
|
||||
$gotIncrement += $increment;
|
||||
$gotSize = $transferred;
|
||||
$gotTotal = $total;
|
||||
};
|
||||
$client->appendObject($reqeust);
|
||||
$this->assertEquals(11, $gotIncrement);
|
||||
$this->assertEquals(11, $gotSize);
|
||||
$this->assertEquals(11, $gotTotal);
|
||||
}
|
||||
|
||||
public function testUploadPartProgress()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$totalSize = 250 * 1024 + 123;
|
||||
$partSize = 100 * 1024;
|
||||
$filename = self::getTempFileName();
|
||||
$this->generateFile($filename, $totalSize);
|
||||
$key = 'bigfile.tmp';
|
||||
$initResult = $client->initiateMultipartUpload(
|
||||
new Oss\Models\InitiateMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $initResult->statusCode);
|
||||
$this->assertNotEmpty($initResult->uploadId);
|
||||
$file = fopen($filename, 'rb');
|
||||
$parts = [];
|
||||
$fileStream = Oss\Utils::streamFor($file);
|
||||
$gotIncrement = 0;
|
||||
for ($i = 0, $partNum = 1; $i < $totalSize; $i += $partSize, $partNum++) {
|
||||
$gotSize = 0;
|
||||
$gotTotal = 0;
|
||||
$body = new LimitStream($fileStream, $partSize, $i);
|
||||
$sendSize = $body->getSize();
|
||||
$partResult = $client->uploadPart(
|
||||
new Oss\Models\UploadPartRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
$partNum,
|
||||
$initResult->uploadId,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
$body,
|
||||
static function (int $increment, int $transferred, int $total) use (&$gotIncrement, &$gotSize, &$gotTotal) {
|
||||
$gotIncrement += $increment;
|
||||
$gotSize = $transferred;
|
||||
$gotTotal = $total;
|
||||
}
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $partResult->statusCode);
|
||||
$this->assertEquals($sendSize, $gotSize);
|
||||
$this->assertEquals($sendSize, $gotTotal);
|
||||
$part = new Oss\Models\UploadPart(
|
||||
$partNum,
|
||||
$partResult->etag,
|
||||
);
|
||||
$parts[] = $part;
|
||||
}
|
||||
//$this->assertEquals($totalSize, $gotIncrement);
|
||||
fclose($file);
|
||||
$comResult = $client->completeMultipartUpload(
|
||||
new Oss\Models\CompleteMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
$initResult->uploadId,
|
||||
null,
|
||||
new Oss\Models\CompleteMultipartUpload(
|
||||
$parts
|
||||
),
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $comResult->statusCode);
|
||||
$this->assertEquals(self::$bucketName, $comResult->bucket);
|
||||
$this->assertEquals($key, $comResult->key);
|
||||
$this->assertNotEmpty($comResult->etag);
|
||||
$this->assertNotEmpty($comResult->location);
|
||||
|
||||
$getObj = $client->getObject(new Oss\Models\GetObjectRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
));
|
||||
$objMd5 = base64_encode(md5($getObj->body, true));
|
||||
$fileMd5 = base64_encode(md5(file_get_contents($filename), true));
|
||||
$this->assertEquals($fileMd5, $objMd5);
|
||||
}
|
||||
|
||||
public function testUploadPartUseCoroutine(): void
|
||||
{
|
||||
$totalSize = 250 * 1024 + 123;
|
||||
$partSize = 100 * 1024;
|
||||
$filename = self::getTempFileName();
|
||||
$this->generateFile($filename, $totalSize);
|
||||
$key = 'coroutine.tmp';
|
||||
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
// upload context
|
||||
$context['client'] = self::getDefaultClient();
|
||||
$context['request'] = new Oss\Models\PutObjectRequest($bucketName, $key);
|
||||
$context['filename'] = $filename;
|
||||
$context['parallel_num'] = 2;
|
||||
$context['part_size'] = $partSize;
|
||||
|
||||
// use coroutine
|
||||
$promisor = P\Coroutine::of(function () use (&$context) {
|
||||
$client = $context['client'];
|
||||
|
||||
// initiate multipart upload
|
||||
$request = new Oss\Models\InitiateMultipartUploadRequest();
|
||||
Oss\Utils::copyRequest($request, $context['request']);
|
||||
yield $client->initiateMultipartUploadAsync($request)->then(
|
||||
function (Oss\Models\InitiateMultipartUploadResult $result) use (&$context) {
|
||||
$context['upload_id'] = $result->uploadId;
|
||||
},
|
||||
);
|
||||
|
||||
// upload part
|
||||
$context['errors'] = [];
|
||||
$context['parts'] = [];
|
||||
$uploadFns = function () use (&$context) {
|
||||
$client = $context['client'];
|
||||
$part_size = intval($context['part_size']);
|
||||
$filepath = strval($context['filename']);
|
||||
$source = new LazyOpenStream($filepath, 'rb');
|
||||
$source->seek(0);
|
||||
|
||||
for ($partNumber = 1; $source->tell() < $source->getSize(); $partNumber++) {
|
||||
$body = new LimitStream(
|
||||
new LazyOpenStream($source->getMetadata('uri'), 'rb'),
|
||||
$part_size,
|
||||
$source->tell()
|
||||
);
|
||||
$source->seek(min($source->tell() + $part_size, $source->getSize()));
|
||||
|
||||
$request = new Oss\Models\UploadPartRequest();
|
||||
Oss\Utils::copyRequest($request, $context['request']);
|
||||
$request->partNumber = $partNumber;
|
||||
$request->uploadId = $context['upload_id'];
|
||||
$request->body = $body;
|
||||
yield $partNumber => $client->uploadPartAsync($request)->otherwise(
|
||||
function ($reason) use (&$context) {
|
||||
$context['errors'][] = $reason;
|
||||
return P\Create::rejectionFor($reason);
|
||||
},
|
||||
);
|
||||
if (!empty($context['errors'])) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$each = new P\EachPromise(
|
||||
$uploadFns(),
|
||||
[
|
||||
'concurrency' => $context['parallel_num'],
|
||||
'fulfilled' => function (Oss\Models\UploadPartResult $result, $key) use (&$context) {
|
||||
$context['parts'][] = new Oss\Models\UploadPart($key, $result->etag);
|
||||
return $result;
|
||||
}
|
||||
]
|
||||
);
|
||||
yield $each->promise();
|
||||
|
||||
if (!empty($context['errors'])) {
|
||||
throw end($context['errors']);
|
||||
}
|
||||
|
||||
$parts = $context['parts'];
|
||||
usort($parts, function ($a, $b) {
|
||||
if ($a->partNumber == $b->partNumber)
|
||||
return 0;
|
||||
return $a->partNumber < $b->partNumber ? -1 : 1;
|
||||
});
|
||||
$request = new Oss\Models\CompleteMultipartUploadRequest();
|
||||
Oss\Utils::copyRequest($request, $context['request']);
|
||||
$request->uploadId = $context['upload_id'];
|
||||
$request->completeMultipartUpload = new Oss\Models\CompleteMultipartUpload($parts);
|
||||
yield $client->completeMultipartUploadAsync($request)->then(
|
||||
function (Oss\Models\CompleteMultipartUploadResult $result) use (&$context) {
|
||||
$context['upload_result'] = $result;
|
||||
return $result;
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
// wait finish
|
||||
$promisor->wait();
|
||||
|
||||
// check result
|
||||
$result = $context['upload_result'];
|
||||
$this->assertInstanceOf(Oss\Models\CompleteMultipartUploadResult::class, $result);
|
||||
if ($result instanceof Oss\Models\CompleteMultipartUploadResult) {
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$this->assertStringEndsWith('-3"', $result->etag);
|
||||
}
|
||||
|
||||
$fileMd5 = md5(file_get_contents($filename), true);
|
||||
$objectMd5 = md5($this->object_get_contents(self::getDefaultClient(), $bucketName, $key), true);
|
||||
$this->assertEquals($fileMd5, $objectMd5);
|
||||
}
|
||||
|
||||
public function testGetObjectIntoSink(): void
|
||||
{
|
||||
$client = self::getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$filename = self::getTempFileName();
|
||||
$key = self::randomObjectName();
|
||||
$size = 123 * 1024 + 1234;
|
||||
$this->generateFile($filename, $size);
|
||||
$content = file_get_contents($filename);
|
||||
$handle = fopen($filename, 'rb');
|
||||
$request = new Oss\Models\PutObjectRequest($bucketName, $key);
|
||||
$request->body = Oss\Utils::streamFor($handle);
|
||||
$result = $client->putObject($request);
|
||||
fclose($handle);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
|
||||
// use sink to save object into file
|
||||
$filenameSave = self::getTempFileName();
|
||||
$this->assertFileNotEquals($filename, $filenameSave);
|
||||
$request = new Oss\Models\GetObjectRequest($bucketName, $key);
|
||||
$result = $client->getObject(
|
||||
$request,
|
||||
[
|
||||
'request_options' =>
|
||||
['sink' => $filenameSave]
|
||||
]
|
||||
);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertFileEquals($filename, $filenameSave);
|
||||
$this->assertNull($result->body);
|
||||
|
||||
// use sink to save object into memeroy
|
||||
$sink = \GuzzleHttp\Psr7\Utils::tryFopen('php://temp', 'w+');
|
||||
$request = new Oss\Models\GetObjectRequest($bucketName, $key);
|
||||
$result = $client->getObject(
|
||||
$request,
|
||||
[
|
||||
'request_options' =>
|
||||
['sink' => $sink]
|
||||
]
|
||||
);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertNotNull($result->body);
|
||||
$this->assertEquals($content, $result->body->getContents());
|
||||
}
|
||||
|
||||
public function testGetObjectStreamMode(): void
|
||||
{
|
||||
$client = self::getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$filename = self::getTempFileName();
|
||||
$key = self::randomObjectName();
|
||||
$size = 123 * 1024 + 1234;
|
||||
$this->generateFile($filename, $size);
|
||||
$content = file_get_contents($filename);
|
||||
$handle = fopen($filename, 'rb');
|
||||
$request = new Oss\Models\PutObjectRequest($bucketName, $key);
|
||||
$request->body = Oss\Utils::streamFor($handle);
|
||||
$result = $client->putObject($request);
|
||||
fclose($handle);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
|
||||
// use non stream
|
||||
$request = new Oss\Models\GetObjectRequest($bucketName, $key);
|
||||
$result = $client->getObject(
|
||||
$request,
|
||||
[
|
||||
'request_options' =>
|
||||
['stream' => false]
|
||||
]
|
||||
);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertNotNull($result->body);
|
||||
$this->assertTrue($result->body->isSeekable());
|
||||
$this->assertEquals($content, $result->body->getContents());
|
||||
$this->assertEquals($size, $result->body->getSize());
|
||||
$this->assertEquals('', $result->body->read(100));
|
||||
|
||||
// use stream
|
||||
$request = new Oss\Models\GetObjectRequest($bucketName, $key);
|
||||
$result = $client->getObject(
|
||||
$request,
|
||||
[
|
||||
'request_options' =>
|
||||
['stream' => true]
|
||||
]
|
||||
);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertNotNull($result->body);
|
||||
$this->assertFalse($result->body->isSeekable());
|
||||
$this->assertNull($result->body->getSize());
|
||||
$this->assertEquals($content, $result->body->getContents());
|
||||
$this->assertEquals('', $result->body->read(100));
|
||||
}
|
||||
|
||||
}
|
||||
634
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientObjectBasicTest.php
vendored
Normal file
634
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientObjectBasicTest.php
vendored
Normal file
@@ -0,0 +1,634 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
use SebastianBergmann\Type\ObjectType;
|
||||
|
||||
class ClientObjectBasicTest extends TestIntegration
|
||||
{
|
||||
public function testObjectBasic()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$key = self::randomObjectName();
|
||||
|
||||
// put object
|
||||
$putObjRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$body = 'hi oss';
|
||||
$putObjRequest->body = Oss\Utils::streamFor($body);
|
||||
$result = $client->putObject($putObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// get object
|
||||
$result = $client->getObject(new Oss\Models\GetObjectRequest(
|
||||
$bucketName,
|
||||
$key
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// copy object
|
||||
$destKey = self::randomObjectName() . '-dest';
|
||||
$copyObjRequest = new Oss\Models\CopyObjectRequest(
|
||||
$bucketName,
|
||||
$destKey,
|
||||
);
|
||||
$copyObjRequest->sourceKey = $key;
|
||||
$result = $client->copyObject($copyObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// append object
|
||||
$appendKey = self::randomObjectName() . '-append';
|
||||
$appendObjRequest = new Oss\Models\AppendObjectRequest(
|
||||
$bucketName,
|
||||
$appendKey,
|
||||
0
|
||||
);
|
||||
$result = $client->appendObject($appendObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// head object
|
||||
$headObjRequest = new Oss\Models\HeadObjectRequest(
|
||||
$bucketName,
|
||||
$appendKey,
|
||||
);
|
||||
$result = $client->headObject($headObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// get object meta
|
||||
$getObjMetaRequest = new Oss\Models\GetObjectMetaRequest(
|
||||
$bucketName,
|
||||
$appendKey,
|
||||
);
|
||||
$result = $client->getObjectMeta($getObjMetaRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// restore object
|
||||
$putObjRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$putObjRequest->storageClass = Oss\Models\StorageClassType::DEEP_COLD_ARCHIVE;
|
||||
$result = $client->putObject($putObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
$restoreObjRequest = new Oss\Models\RestoreObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$restoreObjRequest->restoreRequest = new Oss\Models\RestoreRequest(3);
|
||||
$result = $client->restoreObject($restoreObjRequest);
|
||||
$this->assertEquals(202, $result->statusCode);
|
||||
$this->assertEquals('Accepted', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// clean restored object
|
||||
try {
|
||||
$result = $client->cleanRestoredObject(new Oss\Models\CleanRestoredObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error CleanRestoredObject', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('ArchiveRestoreNotFinished', $se->getErrorCode());
|
||||
$this->assertEquals(409, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
// delete object
|
||||
$delObjRequest = new Oss\Models\DeleteObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$result = $client->deleteObject($delObjRequest);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// delete objects
|
||||
$delObjsRequest = new Oss\Models\DeleteMultipleObjectsRequest(
|
||||
$bucketName,
|
||||
);
|
||||
$delArray = [];
|
||||
for ($i = 1; $i <= 10; $i++) {
|
||||
// put object
|
||||
$putObjRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$key . $i,
|
||||
);
|
||||
$delArray[] = new Oss\Models\ObjectIdentifier($key . $i);
|
||||
$body = 'hi oss';
|
||||
$putObjRequest->body = Oss\Utils::streamFor($body);
|
||||
$result = $client->putObject($putObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
}
|
||||
$delObjsRequest->delete = new Oss\Models\Delete($delArray);
|
||||
$result = $client->deleteMultipleObjects($delObjsRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
}
|
||||
|
||||
public function testObjectBasicFail()
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$key = self::randomObjectName();
|
||||
try {
|
||||
$putObjRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$body = 'hi oss';
|
||||
$putObjRequest->body = Oss\Utils::streamFor($body);
|
||||
$result = $client->putObject($putObjRequest);
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutObject', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$result = $client->getObject(new Oss\Models\GetObjectRequest(
|
||||
$bucketName,
|
||||
$key
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetObject', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$destKey = self::randomObjectName() . '-dest';
|
||||
$copyObjRequest = new Oss\Models\CopyObjectRequest(
|
||||
$bucketName,
|
||||
$destKey,
|
||||
);
|
||||
$copyObjRequest->sourceKey = $key;
|
||||
$result = $client->copyObject($copyObjRequest);
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error CopyObject', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
// append object
|
||||
try {
|
||||
$appendKey = self::randomObjectName() . '-append';
|
||||
$appendObjRequest = new Oss\Models\AppendObjectRequest(
|
||||
$bucketName,
|
||||
$appendKey,
|
||||
0
|
||||
);
|
||||
$result = $client->appendObject($appendObjRequest);
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error AppendObject', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
// seal append object
|
||||
try {
|
||||
$sealAppendObjRequest = new Oss\Models\SealAppendObjectRequest(
|
||||
$bucketName,
|
||||
$appendKey,
|
||||
0
|
||||
);
|
||||
$result = $client->sealAppendObject($sealAppendObjRequest);
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error SealAppendObject', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
// head object
|
||||
try {
|
||||
$headObjRequest = new Oss\Models\HeadObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$result = $client->headObject($headObjRequest);
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error HeadObject', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$metaObjRequest = new Oss\Models\GetObjectMetaRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$result = $client->getObjectMeta($metaObjRequest);
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetObjectMeta', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$result = $client->restoreObject(new Oss\Models\RestoreObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
null,
|
||||
new Oss\Models\RestoreRequest(3)
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error RestoreObject', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$result = $client->cleanRestoredObject(new Oss\Models\CleanRestoredObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error CleanRestoredObject', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
// delete object
|
||||
try {
|
||||
$delObjRequest = new Oss\Models\DeleteObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$result = $client->deleteObject($delObjRequest);
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteObject', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
// delete objects
|
||||
try {
|
||||
$delObjRequest = new Oss\Models\DeleteMultipleObjectsRequest(
|
||||
$bucketName,
|
||||
);
|
||||
$delObjRequest->delete = new Oss\Models\Delete(
|
||||
[
|
||||
new Oss\Models\ObjectIdentifier('key1'),
|
||||
new Oss\Models\ObjectIdentifier('key2', 'version-id-2'),
|
||||
], true
|
||||
);
|
||||
$result = $client->deleteMultipleObjects($delObjRequest);
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteMultipleObjects', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testObjectAcl()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$key = self::randomObjectName();
|
||||
|
||||
// put object
|
||||
$putObjRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$body = 'hi oss';
|
||||
$putObjRequest->body = Oss\Utils::streamFor($body);
|
||||
$result = $client->putObject($putObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// put object acl
|
||||
$result = $client->putObjectAcl(new Oss\Models\PutObjectAclRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
Oss\Models\ObjectACLType::PRIVATE
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// get object acl
|
||||
$result = $client->getObjectAcl(new Oss\Models\GetObjectAclRequest(
|
||||
$bucketName,
|
||||
$key
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$this->assertNull($result->versionId);
|
||||
$this->assertEquals(Oss\Models\ObjectACLType::PRIVATE, $result->accessControlList->grant);
|
||||
}
|
||||
|
||||
public function testObjectAclFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$key = self::randomObjectName() . "-not-exist";
|
||||
try {
|
||||
$result = $client->putObjectAcl(new Oss\Models\PutObjectAclRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
Oss\Models\ObjectACLType::PRIVATE
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutObjectAcl', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchKey', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$result = $client->getObjectAcl(new Oss\Models\GetObjectAclRequest(
|
||||
$bucketName,
|
||||
$key
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetObjectAcl', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchKey', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testObjectTagging()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$key = self::randomObjectName();
|
||||
|
||||
// put object
|
||||
$putObjRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$body = 'hi oss';
|
||||
$putObjRequest->body = Oss\Utils::streamFor($body);
|
||||
$result = $client->putObject($putObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// put object tagging
|
||||
$result = $client->putObjectTagging(new Oss\Models\PutObjectTaggingRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
new Oss\Models\Tagging(
|
||||
new Oss\Models\TagSet(
|
||||
[new Oss\Models\Tag('k1', 'v1'), new Oss\Models\Tag('k2', 'v2')]
|
||||
)
|
||||
)
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// get object tagging
|
||||
$result = $client->getObjectTagging(new Oss\Models\GetObjectTaggingRequest(
|
||||
$bucketName,
|
||||
$key
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
$this->assertNull($result->versionId);
|
||||
$this->assertEquals(2, count($result->tagSet->tags));
|
||||
|
||||
// delete object tagging
|
||||
$result = $client->deleteObjectTagging(new Oss\Models\DeleteObjectTaggingRequest(
|
||||
$bucketName,
|
||||
$key
|
||||
));
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
}
|
||||
|
||||
public function testObjectTaggingFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$key = self::randomObjectName() . "-not-exist";
|
||||
try {
|
||||
$result = $client->putObjectTagging(new Oss\Models\PutObjectTaggingRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
new Oss\Models\Tagging(
|
||||
new Oss\Models\TagSet(
|
||||
[new Oss\Models\Tag('k1', 'v1'), new Oss\Models\Tag('k2', 'v2')]
|
||||
)
|
||||
)
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutObjectTagging', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchKey', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$result = $client->getObjectTagging(new Oss\Models\GetObjectTaggingRequest(
|
||||
$bucketName,
|
||||
$key
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetObjectTagging', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchKey', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$result = $client->deleteObjectTagging(new Oss\Models\DeleteObjectTaggingRequest(
|
||||
$bucketName,
|
||||
$key
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeleteObjectTagging', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchKey', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testSymlink()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$key = self::randomObjectName() . '-target';
|
||||
|
||||
// put object
|
||||
$putObjRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$body = 'hi oss';
|
||||
$putObjRequest->body = Oss\Utils::streamFor($body);
|
||||
$result = $client->putObject($putObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// put symlink
|
||||
$symlinkKey = self::randomObjectName() . '-symlink';
|
||||
$result = $client->putSymlink(new Oss\Models\PutSymlinkRequest(
|
||||
$bucketName,
|
||||
$symlinkKey,
|
||||
$key
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
|
||||
// get symlink
|
||||
$result = $client->getSymlink(new Oss\Models\GetSymlinkRequest(
|
||||
$bucketName,
|
||||
$symlinkKey
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(True, count($result->headers) > 0);
|
||||
$this->assertEquals(24, strlen($result->requestId));
|
||||
}
|
||||
|
||||
public function testSymlinkFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . '-not-exist';
|
||||
$key = self::randomObjectName() . "-target";
|
||||
$symlinkKey = self::randomObjectName() . '-symlink';
|
||||
try {
|
||||
$result = $client->putSymlink(new Oss\Models\PutSymlinkRequest(
|
||||
$bucketName,
|
||||
$symlinkKey,
|
||||
$key
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutSymlink', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$result = $client->getSymlink(new Oss\Models\GetSymlinkRequest(
|
||||
$bucketName,
|
||||
$symlinkKey,
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetSymlink', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
433
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientObjectMultipartTest.php
vendored
Normal file
433
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientObjectMultipartTest.php
vendored
Normal file
@@ -0,0 +1,433 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientObjectMultipartTest extends TestIntegration
|
||||
{
|
||||
public function testObjectMultipart()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
// test initiateMultipartUpload, uploadPart, completeMultipartUpload
|
||||
$partSize = 200 * 1024;
|
||||
$key = 'bigfile.tmp';
|
||||
try {
|
||||
$bigFileName = self::getTempFileName() . "-bigfile.tmp";
|
||||
if (!file_exists($bigFileName)) {
|
||||
$this->generateFile($bigFileName, 500 * 1024);
|
||||
}
|
||||
$initResult = $client->initiateMultipartUpload(
|
||||
new Oss\Models\InitiateMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $initResult->statusCode);
|
||||
$this->assertNotEmpty($initResult->uploadId);
|
||||
$file = fopen($bigFileName, 'r');
|
||||
$parts = array();
|
||||
if ($file) {
|
||||
$i = 1;
|
||||
while (!feof($file)) {
|
||||
$chunk = fread($file, $partSize);
|
||||
$partResult = $client->uploadPart(
|
||||
new Oss\Models\UploadPartRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
$i,
|
||||
$initResult->uploadId,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
Oss\Utils::streamFor($chunk)
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $partResult->statusCode);
|
||||
$part = new Oss\Models\UploadPart(
|
||||
$i,
|
||||
$partResult->etag,
|
||||
);
|
||||
array_push($parts, $part);
|
||||
$i++;
|
||||
}
|
||||
fclose($file);
|
||||
}
|
||||
$comResult = $client->completeMultipartUpload(
|
||||
new Oss\Models\CompleteMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
$initResult->uploadId,
|
||||
null,
|
||||
new Oss\Models\CompleteMultipartUpload(
|
||||
$parts
|
||||
),
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $comResult->statusCode);
|
||||
$this->assertEquals(self::$bucketName, $comResult->bucket);
|
||||
$this->assertEquals($key, $comResult->key);
|
||||
$this->assertNotEmpty($comResult->etag);
|
||||
$this->assertNotEmpty($comResult->location);
|
||||
$getObj = $client->getObject(new Oss\Models\GetObjectRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
));
|
||||
$this->assertEquals(base64_encode(md5(file_get_contents($bigFileName), true)), base64_encode(md5($getObj->body, true)));
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, "should not here");
|
||||
}
|
||||
|
||||
// test initiateMultipartUpload, uploadPartCopy, completeMultipartUpload
|
||||
try {
|
||||
$key1 = self::randomObjectName() . "\f\v\t";
|
||||
$initResult = $client->initiateMultipartUpload(
|
||||
new Oss\Models\InitiateMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key1,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $initResult->statusCode);
|
||||
$this->assertNotEmpty($initResult->uploadId);
|
||||
|
||||
$partResult = $client->uploadPartCopy(
|
||||
new Oss\Models\UploadPartCopyRequest(
|
||||
self::$bucketName,
|
||||
$key1,
|
||||
1,
|
||||
$initResult->uploadId,
|
||||
self::$bucketName,
|
||||
$key,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $partResult->statusCode);
|
||||
$comResult = $client->completeMultipartUpload(
|
||||
new Oss\Models\CompleteMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key1,
|
||||
$initResult->uploadId,
|
||||
null,
|
||||
null,
|
||||
'yes',
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $comResult->statusCode);
|
||||
$this->assertEquals(self::$bucketName, $comResult->bucket);
|
||||
$this->assertEquals($key1, $comResult->key);
|
||||
$this->assertNotEmpty($comResult->etag);
|
||||
$this->assertNotEmpty($comResult->location);
|
||||
$client->deleteObject(new Oss\Models\DeleteObjectRequest(
|
||||
self::$bucketName,
|
||||
$key1,
|
||||
));
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, "should not here");
|
||||
}
|
||||
|
||||
$client->deleteObject(new Oss\Models\DeleteObjectRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
));
|
||||
|
||||
// test listParts and listMultipartUploads
|
||||
$objectPrefix = self::randomObjectName();
|
||||
try {
|
||||
for ($i = 0; $i < 3; $i++) {
|
||||
$key = $objectPrefix . $i;
|
||||
$initResult = $client->initiateMultipartUpload(
|
||||
new Oss\Models\InitiateMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $initResult->statusCode);
|
||||
$this->assertNotEmpty($initResult->uploadId);
|
||||
$file = fopen($bigFileName, 'r');
|
||||
if ($file) {
|
||||
$n = 1;
|
||||
while (!feof($file)) {
|
||||
$chunk = fread($file, $partSize);
|
||||
$partResult = $client->uploadPart(
|
||||
new Oss\Models\UploadPartRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
$n,
|
||||
$initResult->uploadId,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
Oss\Utils::streamFor($chunk)
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $partResult->statusCode);
|
||||
$n++;
|
||||
}
|
||||
fclose($file);
|
||||
}
|
||||
}
|
||||
$listUploads = $client->listMultipartUploads(
|
||||
new Oss\Models\ListMultipartUploadsRequest(
|
||||
self::$bucketName,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $listUploads->statusCode);
|
||||
$this->assertCount(3, $listUploads->uploads);
|
||||
|
||||
$listParts = $client->listParts(
|
||||
new Oss\Models\ListPartsRequest(
|
||||
self::$bucketName,
|
||||
$listUploads->uploads[0]->key,
|
||||
$listUploads->uploads[0]->uploadId,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $listParts->statusCode);
|
||||
$this->assertCount(3, $listParts->parts);
|
||||
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, "should not here");
|
||||
}
|
||||
// test abortMultipartUpload
|
||||
try {
|
||||
foreach ($listUploads->uploads as $k => $upload) {
|
||||
$abort = $client->abortMultipartUpload(
|
||||
new Oss\Models\AbortMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$upload->key,
|
||||
$upload->uploadId,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(204, $abort->statusCode);
|
||||
}
|
||||
$listUploads = $client->listMultipartUploads(
|
||||
new Oss\Models\ListMultipartUploadsRequest(
|
||||
self::$bucketName,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $listUploads->statusCode);
|
||||
$this->assertNull($listUploads->uploads);
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, "should not here");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function testObjectMultipartFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$invalidAkClient = $this->getInvalidAkClient();
|
||||
$partSize = 200 * 1024;
|
||||
$key = 'bigfile.tmp';
|
||||
$bigFileName = self:: getTempFileName() . "-bigfile.tmp";
|
||||
if (!file_exists($bigFileName)) {
|
||||
$this->generateFile($bigFileName, 500 * 1024);
|
||||
}
|
||||
|
||||
// test initiateMultipartUpload
|
||||
try {
|
||||
$invalidAkClient->initiateMultipartUpload(
|
||||
new Oss\Models\InitiateMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
)
|
||||
);
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error InitiateMultipartUpload', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
// test uploadPart
|
||||
try {
|
||||
$initResult = $client->initiateMultipartUpload(
|
||||
new Oss\Models\InitiateMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $initResult->statusCode);
|
||||
$this->assertNotEmpty($initResult->uploadId);
|
||||
$invalidAkClient->uploadPart(
|
||||
new Oss\Models\UploadPartRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
1,
|
||||
$initResult->uploadId,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
Oss\Utils::streamFor($bigFileName)
|
||||
)
|
||||
);
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertStringContainsString('Operation error UploadPart', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
// test uploadPartCopy
|
||||
try {
|
||||
$initResult = $client->initiateMultipartUpload(
|
||||
new Oss\Models\InitiateMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $initResult->statusCode);
|
||||
$this->assertNotEmpty($initResult->uploadId);
|
||||
$client->uploadPart(
|
||||
new Oss\Models\UploadPartRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
1,
|
||||
$initResult->uploadId,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
Oss\Utils::streamFor($bigFileName)
|
||||
)
|
||||
);
|
||||
$invalidAkClient->uploadPartCopy(
|
||||
new Oss\Models\UploadPartCopyRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
1,
|
||||
$initResult->uploadId,
|
||||
self::$bucketName,
|
||||
$key,
|
||||
)
|
||||
);
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertStringContainsString('Operation error UploadPartCopy', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$initResult = $client->initiateMultipartUpload(
|
||||
new Oss\Models\InitiateMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $initResult->statusCode);
|
||||
$this->assertNotEmpty($initResult->uploadId);
|
||||
$file = fopen($bigFileName, 'r');
|
||||
$parts = array();
|
||||
if ($file) {
|
||||
$i = 1;
|
||||
while (!feof($file)) {
|
||||
$chunk = fread($file, $partSize);
|
||||
$partResult = $client->uploadPart(
|
||||
new Oss\Models\UploadPartRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
$i,
|
||||
$initResult->uploadId,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
Oss\Utils::streamFor($chunk)
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $partResult->statusCode);
|
||||
$part = new Oss\Models\UploadPart(
|
||||
$i,
|
||||
$partResult->etag,
|
||||
);
|
||||
array_push($parts, $part);
|
||||
$i++;
|
||||
}
|
||||
fclose($file);
|
||||
}
|
||||
$invalidAkClient->completeMultipartUpload(
|
||||
new Oss\Models\CompleteMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
$initResult->uploadId,
|
||||
null,
|
||||
new Oss\Models\CompleteMultipartUpload(
|
||||
$parts
|
||||
),
|
||||
)
|
||||
);
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertStringContainsString('Operation error CompleteMultipartUpload', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$invalidAkClient->listMultipartUploads(
|
||||
new Oss\Models\ListMultipartUploadsRequest(
|
||||
self::$bucketName,
|
||||
)
|
||||
);
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertStringContainsString('Operation error ListMultipartUploads', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$invalidAkClient->listParts(
|
||||
new Oss\Models\ListPartsRequest(
|
||||
self::$bucketName,
|
||||
$initResult->uploadId,
|
||||
$initResult->key,
|
||||
)
|
||||
);
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertStringContainsString('Operation error ListParts', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
$listUploads = $client->listMultipartUploads(
|
||||
new Oss\Models\ListMultipartUploadsRequest(
|
||||
self::$bucketName,
|
||||
)
|
||||
);
|
||||
|
||||
foreach ($listUploads->uploads as $k => $upload) {
|
||||
$abort = $client->abortMultipartUpload(
|
||||
new Oss\Models\AbortMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$upload->key,
|
||||
$upload->uploadId,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(204, $abort->statusCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
774
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientPaginatorTest.php
vendored
Normal file
774
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientPaginatorTest.php
vendored
Normal file
@@ -0,0 +1,774 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientPaginatorTest extends TestIntegration
|
||||
{
|
||||
public function testListObjectsPaginator()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
$key = self::randomObjectName();
|
||||
$putObjRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$body = 'hi oss';
|
||||
$putObjRequest->body = Oss\Utils::streamFor($body);
|
||||
$result = $client->putObject($putObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
|
||||
$paginator = new Oss\Paginator\ListObjectsPaginator($client);
|
||||
$iter = $paginator->iterPage(
|
||||
new Oss\Models\ListObjectsRequest($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
|
||||
foreach ($iter as $page) {
|
||||
foreach ($page->contents ?? [] as $content) {
|
||||
$this->assertEquals($key, $content->key);
|
||||
}
|
||||
}
|
||||
$result = $client->deleteObject(new Oss\Models\DeleteObjectRequest(
|
||||
$bucketName, $key
|
||||
));
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
}
|
||||
|
||||
public function testListObjectsPaginatorFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . '-not-exist';
|
||||
try {
|
||||
$paginator = new Oss\Paginator\ListObjectsPaginator($client);
|
||||
$iter = $paginator->iterPage(
|
||||
new Oss\Models\ListObjectsRequest($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
foreach ($iter as $page) {
|
||||
foreach ($page->contents ?? [] as $content) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
}
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListObjects', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals('The specified bucket does not exist.', $se->getErrorMessage());
|
||||
$this->assertEquals('0015-00000101', $se->getEC());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function testListObjectsPaginatorAsync()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
$key = self::randomObjectName();
|
||||
$putObjRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$body = 'hi oss';
|
||||
$putObjRequest->body = Oss\Utils::streamFor($body);
|
||||
$result = $client->putObject($putObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
|
||||
$paginator = new Oss\Paginator\ListObjectsPaginator($client);
|
||||
$iterPromise = $paginator->iterPageAsync(
|
||||
new Oss\Models\ListObjectsRequest($bucketName),
|
||||
['limit' => 10]
|
||||
);
|
||||
$this->assertTrue(is_object($iterPromise));
|
||||
foreach ($iterPromise as $pagePromise) {
|
||||
$page = $pagePromise->wait();
|
||||
foreach ($page->contents ?? [] as $content) {
|
||||
$this->assertEquals($key, $content->key);
|
||||
}
|
||||
}
|
||||
$result = $client->deleteObject(new Oss\Models\DeleteObjectRequest(
|
||||
$bucketName, $key
|
||||
));
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
}
|
||||
|
||||
public function testListObjectsPaginatorAsyncFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . '-not-exist';
|
||||
try {
|
||||
$paginator = new Oss\Paginator\ListObjectsPaginator($client);
|
||||
$iterPromise = $paginator->iterPageAsync(
|
||||
new Oss\Models\ListObjectsRequest($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
foreach ($iterPromise as $pagePromise) {
|
||||
$page = $pagePromise->wait();
|
||||
foreach ($page->contents ?? [] as $content) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
}
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListObjects', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals('The specified bucket does not exist.', $se->getErrorMessage());
|
||||
$this->assertEquals('0015-00000101', $se->getEC());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function testListObjectsV2Paginator()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
$key = self::randomObjectName();
|
||||
$putObjRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$body = 'hi oss';
|
||||
$putObjRequest->body = Oss\Utils::streamFor($body);
|
||||
$result = $client->putObject($putObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
|
||||
$paginator = new Oss\Paginator\ListObjectsV2Paginator($client);
|
||||
|
||||
$iter = $paginator->iterPage(
|
||||
new Oss\Models\ListObjectsV2Request($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
|
||||
$this->assertTrue(is_object($iter));
|
||||
foreach ($iter as $page) {
|
||||
foreach ($page->contents ?? [] as $content) {
|
||||
$this->assertEquals($key, $content->key);
|
||||
}
|
||||
}
|
||||
$result = $client->deleteObject(new Oss\Models\DeleteObjectRequest(
|
||||
$bucketName, $key
|
||||
));
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
}
|
||||
|
||||
public function testListObjectsV2PaginatorFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . '-not-exist';
|
||||
try {
|
||||
$paginator = new Oss\Paginator\ListObjectsV2Paginator($client);
|
||||
$iter = $paginator->iterPage(
|
||||
new Oss\Models\ListObjectsV2Request($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
foreach ($iter as $page) {
|
||||
foreach ($page->contents ?? [] as $content) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
}
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListObjects', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals('The specified bucket does not exist.', $se->getErrorMessage());
|
||||
$this->assertEquals('0015-00000101', $se->getEC());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function testListObjectsV2PaginatorAsync()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
$key = self::randomObjectName();
|
||||
$putObjRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$body = 'hi oss';
|
||||
$putObjRequest->body = Oss\Utils::streamFor($body);
|
||||
$result = $client->putObject($putObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
|
||||
$paginator = new Oss\Paginator\ListObjectsV2Paginator($client);
|
||||
|
||||
$iterPromise = $paginator->iterPageAsync(
|
||||
new Oss\Models\ListObjectsV2Request($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
$this->assertTrue(is_object($iterPromise));
|
||||
foreach ($iterPromise as $pagePromise) {
|
||||
$page = $pagePromise->wait();
|
||||
foreach ($page->contents ?? [] as $content) {
|
||||
$this->assertEquals($key, $content->key);
|
||||
}
|
||||
}
|
||||
$result = $client->deleteObject(new Oss\Models\DeleteObjectRequest(
|
||||
$bucketName, $key
|
||||
));
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
}
|
||||
|
||||
public function testListObjectsV2PaginatorAsyncFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . '-not-exist';
|
||||
try {
|
||||
$paginator = new Oss\Paginator\ListObjectsV2Paginator($client);
|
||||
$iterPromise = $paginator->iterPageAsync(
|
||||
new Oss\Models\ListObjectsV2Request($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
foreach ($iterPromise as $pagePromise) {
|
||||
$page = $pagePromise->wait();
|
||||
foreach ($page->contents ?? [] as $content) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
}
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListObjects', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals('The specified bucket does not exist.', $se->getErrorMessage());
|
||||
$this->assertEquals('0015-00000101', $se->getEC());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function testListObjectVersionsPaginator()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
$key = self::randomObjectName();
|
||||
$putObjRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$body = 'hi oss';
|
||||
$putObjRequest->body = Oss\Utils::streamFor($body);
|
||||
$result = $client->putObject($putObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
|
||||
$paginator = new Oss\Paginator\ListObjectVersionsPaginator($client);
|
||||
$iter = $paginator->iterPage(
|
||||
new Oss\Models\ListObjectVersionsRequest($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
|
||||
foreach ($iter as $page) {
|
||||
foreach ($page->contents ?? [] as $content) {
|
||||
$this->assertEquals($key, $content->key);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function testListObjectVersionsPaginatorFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . '-not-exist';
|
||||
try {
|
||||
$paginator = new Oss\Paginator\ListObjectVersionsPaginator($client);
|
||||
$iter = $paginator->iterPage(
|
||||
new Oss\Models\ListObjectVersionsRequest($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
foreach ($iter as $page) {
|
||||
foreach ($page->contents ?? [] as $content) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
}
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListObjectVersions', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals('The specified bucket does not exist.', $se->getErrorMessage());
|
||||
$this->assertEquals('0015-00000101', $se->getEC());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function testListObjectVersionsPaginatorAsync()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
$key = self::randomObjectName();
|
||||
$putObjRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$key,
|
||||
);
|
||||
$body = 'hi oss';
|
||||
$putObjRequest->body = Oss\Utils::streamFor($body);
|
||||
$result = $client->putObject($putObjRequest);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
|
||||
$paginator = new Oss\Paginator\ListObjectVersionsPaginator($client);
|
||||
$iterPromise = $paginator->iterPageAsync(
|
||||
new Oss\Models\ListObjectVersionsRequest($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
$this->assertTrue(is_object($iterPromise));
|
||||
foreach ($iterPromise as $pagePromise) {
|
||||
$page = $pagePromise->wait();
|
||||
foreach ($page->contents ?? [] as $content) {
|
||||
$this->assertEquals($key, $content->key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListObjectVersionsPaginatorAsyncFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . '-not-exist';
|
||||
try {
|
||||
$paginator = new Oss\Paginator\ListObjectVersionsPaginator($client);
|
||||
$iterPromise = $paginator->iterPageAsync(
|
||||
new Oss\Models\ListObjectVersionsRequest($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
foreach ($iterPromise as $pagePromise) {
|
||||
$page = $pagePromise->wait();
|
||||
foreach ($page->contents ?? [] as $content) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
}
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListObjectVersions', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals('The specified bucket does not exist.', $se->getErrorMessage());
|
||||
$this->assertEquals('0015-00000101', $se->getEC());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function testListMultipartUploadsPaginator()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$key = 'bigfile.tmp';
|
||||
$initResult = $client->initiateMultipartUpload(
|
||||
new Oss\Models\InitiateMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $initResult->statusCode);
|
||||
$this->assertNotEmpty($initResult->uploadId);
|
||||
|
||||
$paginator = new Oss\Paginator\ListMultipartUploadsPaginator($client);
|
||||
$iter = $paginator->iterPage(
|
||||
new Oss\Models\ListMultipartUploadsRequest($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
|
||||
foreach ($iter as $page) {
|
||||
foreach ($page->uploads ?? [] as $upload) {
|
||||
$this->assertEquals($key, $upload->key);
|
||||
$this->assertEquals($initResult->uploadId, $upload->uploadId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListMultipartUploadsPaginatorFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . '-not-exist';
|
||||
try {
|
||||
$paginator = new Oss\Paginator\ListMultipartUploadsPaginator($client);
|
||||
$iter = $paginator->iterPage(
|
||||
new Oss\Models\ListMultipartUploadsRequest($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
|
||||
foreach ($iter as $page) {
|
||||
foreach ($page->uploads ?? [] as $upload) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
}
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListMultipartUploads', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals('The specified bucket does not exist.', $se->getErrorMessage());
|
||||
$this->assertEquals('0015-00000101', $se->getEC());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListMultipartUploadsPaginatorAsync()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$key = 'bigfile.tmp';
|
||||
$initResult = $client->initiateMultipartUpload(
|
||||
new Oss\Models\InitiateMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $initResult->statusCode);
|
||||
$this->assertNotEmpty($initResult->uploadId);
|
||||
|
||||
$paginator = new Oss\Paginator\ListObjectsV2Paginator($client);
|
||||
$iterPromise = $paginator->iterPageAsync(
|
||||
new Oss\Models\ListObjectsV2Request($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
$this->assertTrue(is_object($iterPromise));
|
||||
foreach ($iterPromise as $pagePromise) {
|
||||
$page = $pagePromise->wait();
|
||||
foreach ($page->uploads ?? [] as $upload) {
|
||||
$this->assertEquals($key, $upload->key);
|
||||
$this->assertEquals($initResult->uploadId, $upload->uploadId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListMultipartUploadsPaginatorAsyncFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . '-not-exist';
|
||||
try {
|
||||
$paginator = new Oss\Paginator\ListMultipartUploadsPaginator($client);
|
||||
$iterPromise = $paginator->iterPageAsync(
|
||||
new Oss\Models\ListMultipartUploadsRequest($bucketName),
|
||||
['limit' => 1]
|
||||
);
|
||||
|
||||
foreach ($iterPromise as $pagePromise) {
|
||||
$page = $pagePromise->wait();
|
||||
foreach ($page->uploads ?? [] as $upload) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
}
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListMultipartUploads', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals('The specified bucket does not exist.', $se->getErrorMessage());
|
||||
$this->assertEquals('0015-00000101', $se->getEC());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListPartsPaginator()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$partSize = 200 * 1024;
|
||||
$bigFileName = self::getTempFileName() . "-bigfile.tmp";
|
||||
if (!file_exists($bigFileName)) {
|
||||
$this->generateFile($bigFileName, 500 * 1024);
|
||||
}
|
||||
$key = 'bigfile.tmp';
|
||||
$initResult = $client->initiateMultipartUpload(
|
||||
new Oss\Models\InitiateMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $initResult->statusCode);
|
||||
$this->assertNotEmpty($initResult->uploadId);
|
||||
|
||||
$file = fopen($bigFileName, 'r');
|
||||
$parts = array();
|
||||
if ($file) {
|
||||
$i = 1;
|
||||
while (!feof($file)) {
|
||||
$chunk = fread($file, $partSize);
|
||||
$partResult = $client->uploadPart(
|
||||
new Oss\Models\UploadPartRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
$i,
|
||||
$initResult->uploadId,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
Oss\Utils::streamFor($chunk)
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $partResult->statusCode);
|
||||
$part = new Oss\Models\UploadPart(
|
||||
$i,
|
||||
$partResult->etag,
|
||||
);
|
||||
array_push($parts, $part);
|
||||
$i++;
|
||||
}
|
||||
fclose($file);
|
||||
}
|
||||
|
||||
$paginator = new Oss\Paginator\ListPartsPaginator($client);
|
||||
$iter = $paginator->iterPage(
|
||||
new Oss\Models\ListPartsRequest($bucketName, $key, $initResult->uploadId),
|
||||
['limit' => 1]
|
||||
);
|
||||
|
||||
foreach ($iter as $page) {
|
||||
foreach ($page->parts ?? [] as $part) {
|
||||
$this->assertNotEmpty($part->partNumber);
|
||||
$this->assertNotEmpty($part->etag);
|
||||
$this->assertNotEmpty($part->size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListPartsPaginatorFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . '-not-exist';
|
||||
try {
|
||||
$paginator = new Oss\Paginator\ListPartsPaginator($client);
|
||||
$iter = $paginator->iterPage(
|
||||
new Oss\Models\ListPartsRequest($bucketName, "not-exist", "not-exist"),
|
||||
['limit' => 1]
|
||||
);
|
||||
|
||||
foreach ($iter as $page) {
|
||||
foreach ($page->parts ?? [] as $part) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
}
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListParts', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals('The specified bucket does not exist.', $se->getErrorMessage());
|
||||
$this->assertEquals('0015-00000101', $se->getEC());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListPartsPaginatorAsync()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$partSize = 200 * 1024;
|
||||
$bigFileName = self::getTempFileName() . "-bigfile.tmp";
|
||||
if (!file_exists($bigFileName)) {
|
||||
$this->generateFile($bigFileName, 500 * 1024);
|
||||
}
|
||||
$key = 'bigfile.tmp';
|
||||
$initResult = $client->initiateMultipartUpload(
|
||||
new Oss\Models\InitiateMultipartUploadRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $initResult->statusCode);
|
||||
$this->assertNotEmpty($initResult->uploadId);
|
||||
|
||||
$file = fopen($bigFileName, 'r');
|
||||
$parts = array();
|
||||
if ($file) {
|
||||
$i = 1;
|
||||
while (!feof($file)) {
|
||||
$chunk = fread($file, $partSize);
|
||||
$partResult = $client->uploadPart(
|
||||
new Oss\Models\UploadPartRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
$i,
|
||||
$initResult->uploadId,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
Oss\Utils::streamFor($chunk)
|
||||
)
|
||||
);
|
||||
$this->assertEquals(200, $partResult->statusCode);
|
||||
$part = new Oss\Models\UploadPart(
|
||||
$i,
|
||||
$partResult->etag,
|
||||
);
|
||||
array_push($parts, $part);
|
||||
$i++;
|
||||
}
|
||||
fclose($file);
|
||||
}
|
||||
|
||||
$paginator = new Oss\Paginator\ListPartsPaginator($client);
|
||||
$iterPromise = $paginator->iterPageAsync(
|
||||
new Oss\Models\ListPartsRequest($bucketName, $key, $initResult->uploadId),
|
||||
['limit' => 1]
|
||||
);
|
||||
|
||||
$resultParts = [];
|
||||
foreach ($iterPromise as $pagePromise) {
|
||||
$page = $pagePromise->wait();
|
||||
foreach ($page->parts ?? [] as $part) {
|
||||
$resultParts[] = $part;
|
||||
}
|
||||
}
|
||||
$this->assertEquals(count($parts), count($resultParts));
|
||||
}
|
||||
|
||||
public function testListPartsPaginatorAsyncFail()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName . '-not-exist';
|
||||
try {
|
||||
$paginator = new Oss\Paginator\ListPartsPaginator($client);
|
||||
$iterPromise = $paginator->iterPageAsync(
|
||||
new Oss\Models\ListPartsRequest($bucketName, "not-exist", "not-exist"),
|
||||
['limit' => 1]
|
||||
);
|
||||
|
||||
foreach ($iterPromise as $pagePromise) {
|
||||
$page = $pagePromise->wait();
|
||||
foreach ($page->parts ?? [] as $part) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
}
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListParts', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('NoSuchBucket', $se->getErrorCode());
|
||||
$this->assertEquals(404, $se->getStatusCode());
|
||||
$this->assertEquals('The specified bucket does not exist.', $se->getErrorMessage());
|
||||
$this->assertEquals('0015-00000101', $se->getEC());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListBucketsPaginator()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
|
||||
$paginator = new Oss\Paginator\ListBucketsPaginator($client);
|
||||
$iter = $paginator->iterPage(
|
||||
new Oss\Models\ListBucketsRequest(self::$BUCKETNAME_PREFIX),
|
||||
['limit' => 10]
|
||||
);
|
||||
|
||||
foreach ($iter as $page) {
|
||||
foreach ($page->buckets ?? [] as $bucket) {
|
||||
$this->assertStringContainsString(self::$BUCKETNAME_PREFIX, $bucket->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListBucketsPaginatorFail()
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
try {
|
||||
$paginator = new Oss\Paginator\ListBucketsPaginator($client);
|
||||
$iter = $paginator->iterPage(
|
||||
new Oss\Models\ListBucketsRequest(self::$BUCKETNAME_PREFIX),
|
||||
['limit' => 10]
|
||||
);
|
||||
foreach ($iter as $page) {
|
||||
foreach ($page->buckets ?? [] as $bucket) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
}
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListBuckets', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
$this->assertEquals('The OSS Access Key Id you provided does not exist in our records.', $se->getErrorMessage());
|
||||
$this->assertEquals('0002-00000902', $se->getEC());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function testListBucketsPaginatorAsync()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
|
||||
$paginator = new Oss\Paginator\ListBucketsPaginator($client);
|
||||
$iterPromise = $paginator->iterPageAsync(
|
||||
new Oss\Models\ListBucketsRequest(self::$BUCKETNAME_PREFIX),
|
||||
['limit' => 10]
|
||||
);
|
||||
|
||||
foreach ($iterPromise as $pagePromise) {
|
||||
$page = $pagePromise->wait();
|
||||
foreach ($page->buckets ?? [] as $bucket) {
|
||||
$this->assertStringContainsString(self::$BUCKETNAME_PREFIX, $bucket->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testListBucketsPaginatorAsyncFail()
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
try {
|
||||
$paginator = new Oss\Paginator\ListBucketsPaginator($client);
|
||||
$iterPromise = $paginator->iterPageAsync(
|
||||
new Oss\Models\ListBucketsRequest(self::$BUCKETNAME_PREFIX),
|
||||
['limit' => 10]
|
||||
);
|
||||
|
||||
foreach ($iterPromise as $pagePromise) {
|
||||
$page = $pagePromise->wait();
|
||||
foreach ($page->buckets ?? [] as $bucket) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
}
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error ListBuckets', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
$this->assertEquals('The OSS Access Key Id you provided does not exist in our records.', $se->getErrorMessage());
|
||||
$this->assertEquals('0002-00000902', $se->getEC());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
507
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientPresignerTest.php
vendored
Normal file
507
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientPresignerTest.php
vendored
Normal file
@@ -0,0 +1,507 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2\Client;
|
||||
use AlibabaCloud\Oss\V2\Models\CompleteMultipartUpload;
|
||||
use AlibabaCloud\Oss\V2\Transform\Functions;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
use DateInterval;
|
||||
use GuzzleHttp;
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
|
||||
class ClientPresignerTest extends TestIntegration
|
||||
{
|
||||
public function testGetObject()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
$key = 'key-123+-/123%/345';
|
||||
$content = 'hello world';
|
||||
$request = new Oss\Models\PutObjectRequest($bucketName, $key);
|
||||
$request->body = Oss\Utils::streamFor($content);
|
||||
$result = $client->putObject($request);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
|
||||
$request = new Oss\Models\GetObjectRequest($bucketName, $key);
|
||||
$result = $client->presign($request);
|
||||
$uri = GuzzleHttp\Psr7\Utils::uriFor($result->url);
|
||||
$this->assertEquals('/key-123%2B-/123%25/345', $uri->getPath());
|
||||
$query = GuzzleHttp\Psr7\Query::parse($uri->getQuery());
|
||||
$this->assertArrayHasKey('x-oss-credential', $query);
|
||||
$this->assertArrayHasKey('x-oss-date', $query);
|
||||
$this->assertArrayHasKey('x-oss-expires', $query);
|
||||
$this->assertEquals('900', $query['x-oss-expires']);
|
||||
$this->assertArrayHasKey('x-oss-signature', $query);
|
||||
$this->assertArrayHasKey('x-oss-signature-version', $query);
|
||||
$this->assertEquals('OSS4-HMAC-SHA256', $query['x-oss-signature-version']);
|
||||
|
||||
$httpClient = new GuzzleHttp\Client();
|
||||
$response = $httpClient->get($result->url);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
$this->assertEquals($content, $response->getBody()->getContents());
|
||||
}
|
||||
|
||||
public function testPresign()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
$objectName = self::$OBJECTNAME_PREFIX . self::randomLowStr() . '-put-object';
|
||||
$body = 'hi oss';
|
||||
$httpClient = new GuzzleHttp\Client();
|
||||
// PutObjRequest
|
||||
try {
|
||||
$request = new Oss\Models\PutObjectRequest($bucketName, $objectName);
|
||||
$result = $client->presign($request);
|
||||
$response = $httpClient->request($result->method, $result->url, ['body' => $body]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
} catch (\Throwable $e) {
|
||||
print_r($e->getMessage());
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
// GetObjRequest
|
||||
try {
|
||||
$request = new Oss\Models\GetObjectRequest($bucketName, $objectName);
|
||||
$result = $client->presign($request);
|
||||
$response = $httpClient->request($result->method, $result->url);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
$this->assertEquals($body, $response->getBody()->getContents());
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
// HeadObjRequest
|
||||
try {
|
||||
$request = new Oss\Models\HeadObjectRequest($bucketName, $objectName);
|
||||
$result = $client->presign($request);
|
||||
$response = $httpClient->request($result->method, $result->url);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
$this->assertEquals(strlen($body), $response->getHeaderLine('content-length'));
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
// UploadPart
|
||||
$objectNameMultipart = self::$OBJECTNAME_PREFIX . self::randomLowStr() . '-multi-part';
|
||||
try {
|
||||
$request = new Oss\Models\InitiateMultipartUploadRequest($bucketName, $objectNameMultipart);
|
||||
$result = $client->presign($request);
|
||||
$response = $httpClient->request($result->method, $result->url, ['headers' => $result->signedHeaders]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
$body = $response->getBody()->getContents();
|
||||
$xml = Utils::parseXml($body);
|
||||
$uploadId = Functions::tryToString($xml->UploadId);
|
||||
try {
|
||||
$partRequest = new Oss\Models\UploadPartRequest($bucketName, $objectNameMultipart);
|
||||
$partRequest->partNumber = 1;
|
||||
$partRequest->uploadId = $uploadId;
|
||||
$result = $client->presign($partRequest);
|
||||
$response = $httpClient->request($result->method, $result->url, ['body' => $body, ['headers' => $result->signedHeaders]]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
} catch (\Throwable $e) {
|
||||
print_r($e->getMessage());
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Oss\Models\CompleteMultipartUploadRequest($bucketName, $objectNameMultipart);
|
||||
$request->completeMultipartUpload = new CompleteMultipartUpload(
|
||||
[new Oss\Models\UploadPart(
|
||||
$partRequest->partNumber, $response->getHeaderLine('ETag')
|
||||
)]
|
||||
);
|
||||
$request->uploadId = $uploadId;
|
||||
$result = $client->presign($request);
|
||||
$xml = new \SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><CompleteMultipartUpload></CompleteMultipartUpload>');
|
||||
if (isset($request->completeMultipartUpload->parts)) {
|
||||
foreach ($request->completeMultipartUpload->parts as $part) {
|
||||
$xmlPart = $xml->addChild('Part');
|
||||
$xmlPart->addChild('PartNumber', strval($part->partNumber));
|
||||
$xmlPart->addChild('ETag', $part->etag);
|
||||
}
|
||||
}
|
||||
$response = $httpClient->request($result->method, $result->url, ['body' => $xml->asXML(), 'headers' => $result->signedHeaders]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
$headRequest = new Oss\Models\HeadObjectRequest($bucketName, $objectNameMultipart);
|
||||
$headResult = $client->headObject($headRequest);
|
||||
$this->assertEquals(200, $headResult->statusCode);
|
||||
$this->assertEquals(strlen($body), $headResult->contentLength);
|
||||
$this->assertEquals('Multipart', $headResult->objectType);
|
||||
} catch (\Throwable $e) {
|
||||
print_r($e->getMessage());
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
$objectNameMultipartCopy = self::$OBJECTNAME_PREFIX . self::randomLowStr() . '-multi-part-copy';
|
||||
|
||||
try {
|
||||
$initRequest = new Oss\Models\InitiateMultipartUploadRequest($bucketName, $objectNameMultipartCopy);
|
||||
$initResult = $client->presign($initRequest);
|
||||
$response = $httpClient->request($initResult->method, $initResult->url, ['headers' => $initResult->signedHeaders]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
$body = $response->getBody()->getContents();
|
||||
$xml = Utils::parseXml($body);
|
||||
$uploadId = Functions::tryToString($xml->UploadId);
|
||||
|
||||
$abortRequest = new Oss\Models\AbortMultipartUploadRequest($bucketName, $objectNameMultipartCopy, $uploadId);
|
||||
$result = $client->presign($abortRequest);
|
||||
$response = $httpClient->request($result->method, $result->url, ['headers' => $result->signedHeaders]);
|
||||
$this->assertEquals(204, $response->getStatusCode());
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function testPresignExtra()
|
||||
{
|
||||
$bucketName = self::$bucketName;
|
||||
$objectName = self::$OBJECTNAME_PREFIX . self::randomLowStr() . '-put-object';
|
||||
$body = 'hi oss';
|
||||
$httpClient = new GuzzleHttp\Client();
|
||||
$cfg = Oss\Config::loadDefault();
|
||||
$cfg->setCredentialsProvider(new Oss\Credentials\StaticCredentialsProvider(
|
||||
self::$ACCESS_ID,
|
||||
self::$ACCESS_KEY
|
||||
));
|
||||
$cfg->setRegion(self::$REGION);
|
||||
$cfg->setEndpoint(self::$ENDPOINT);
|
||||
$cfg->setSignatureVersion('v1');
|
||||
$cfg->setAdditionalHeaders(['email', 'name']);
|
||||
$clientV1 = new Client($cfg);
|
||||
$cfg->setSignatureVersion('v4');
|
||||
$clientV4 = new Client($cfg);
|
||||
|
||||
$putObjRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName,
|
||||
$objectName,
|
||||
);
|
||||
$putObjRequest->body = Utils::streamFor($body);
|
||||
$putObjResult = $clientV1->putObject($putObjRequest);
|
||||
$this->assertEquals(200, $putObjResult->statusCode);
|
||||
$this->assertEquals('OK', $putObjResult->status);
|
||||
|
||||
|
||||
// GetObjRequest
|
||||
try {
|
||||
$request = new Oss\Models\GetObjectRequest($bucketName, $objectName, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, ['headers' => ['email' => 'demo@aliyun.com']]);
|
||||
$options['expiration'] = (new \DateTime('now', new \DateTimeZone('UTC')))->add(new DateInterval('PT1M'));
|
||||
$result = $clientV1->presign($request, $options);
|
||||
$response = $httpClient->request($result->method, $result->url, ['headers' => $result->signedHeaders]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
$this->assertEquals($body, $response->getBody()->getContents());
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
try {
|
||||
$options = null;
|
||||
$request = new Oss\Models\GetObjectRequest($bucketName, $objectName, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, ['headers' => ['email' => 'demo@aliyun.com']]);
|
||||
$options['expiration'] = (new \DateTime('now', new \DateTimeZone('UTC')))->modify('-10 second');
|
||||
$result = $clientV1->presign($request, $options);
|
||||
$response = $httpClient->request($result->method, $result->url);
|
||||
$this->assertTrue(false, 'should not here');
|
||||
} catch (\Throwable $e) {
|
||||
//$this->assertEquals(403, $e->getMessage());
|
||||
$this->assertStringContainsString("403 Forbidden", $e->getMessage());
|
||||
$this->assertStringContainsString("Request has expired.", $e->getMessage());
|
||||
$this->assertInstanceOf(GuzzleHttp\Exception\ClientException::class, $e);
|
||||
}
|
||||
|
||||
try {
|
||||
$options = null;
|
||||
$request = new Oss\Models\GetObjectRequest($bucketName, $objectName);
|
||||
$options['expiration'] = (new \DateTime('now', new \DateTimeZone('UTC')))->add(new DateInterval('PT192H'));
|
||||
$result = $clientV4->presign($request, $options);
|
||||
$response = $httpClient->request($result->method, $result->url, ['headers' => $result->signedHeaders]);
|
||||
$this->assertTrue(false, 'should not here');
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertStringContainsString('Expires should not be greater than 604800 (seven days)', $e->getMessage());
|
||||
}
|
||||
|
||||
$options = null;
|
||||
$request = new Oss\Models\GetObjectRequest($bucketName, $objectName, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, ['headers' => ['email' => 'demo@aliyun.com']]);
|
||||
$options['expires'] = new DateInterval('PT1H');
|
||||
$result = $clientV4->presign($request, $options);
|
||||
$response = $httpClient->request($result->method, $result->url, ['headers' => ['email' => 'demo@aliyun.com']]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
}
|
||||
|
||||
public function testPresignWithStsToken()
|
||||
{
|
||||
$client = $this->getClientUseStsToken();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
$objectName = self::$OBJECTNAME_PREFIX . self::randomLowStr() . '-put-object';
|
||||
$body = 'hi oss';
|
||||
$httpClient = new GuzzleHttp\Client();
|
||||
// PutObjRequest
|
||||
try {
|
||||
$request = new Oss\Models\PutObjectRequest($bucketName, $objectName);
|
||||
$result = $client->presign($request);
|
||||
$response = $httpClient->request($result->method, $result->url, ['body' => $body]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
} catch (\Throwable $e) {
|
||||
print_r($e->getMessage());
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
// GetObjRequest
|
||||
try {
|
||||
$request = new Oss\Models\GetObjectRequest($bucketName, $objectName);
|
||||
$result = $client->presign($request);
|
||||
$response = $httpClient->request($result->method, $result->url);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
$this->assertEquals($body, $response->getBody()->getContents());
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
// HeadObjRequest
|
||||
try {
|
||||
$request = new Oss\Models\HeadObjectRequest($bucketName, $objectName);
|
||||
$result = $client->presign($request);
|
||||
$response = $httpClient->request($result->method, $result->url);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
$this->assertEquals(strlen($body), $response->getHeaderLine('content-length'));
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
// UploadPart
|
||||
$objectNameMultipart = self::$OBJECTNAME_PREFIX . self::randomLowStr() . '-multi-part';
|
||||
try {
|
||||
$request = new Oss\Models\InitiateMultipartUploadRequest($bucketName, $objectNameMultipart);
|
||||
$result = $client->presign($request);
|
||||
$response = $httpClient->request($result->method, $result->url, ['headers' => $result->signedHeaders]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
$body = $response->getBody()->getContents();
|
||||
$xml = Utils::parseXml($body);
|
||||
$uploadId = Functions::tryToString($xml->UploadId);
|
||||
try {
|
||||
$partRequest = new Oss\Models\UploadPartRequest($bucketName, $objectNameMultipart);
|
||||
$partRequest->partNumber = 1;
|
||||
$partRequest->uploadId = $uploadId;
|
||||
$result = $client->presign($partRequest);
|
||||
|
||||
$response = $httpClient->request($result->method, $result->url, ['body' => $body, ['headers' => $result->signedHeaders]]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Oss\Models\CompleteMultipartUploadRequest($bucketName, $objectNameMultipart);
|
||||
$request->completeMultipartUpload = new CompleteMultipartUpload(
|
||||
[new Oss\Models\UploadPart(
|
||||
$partRequest->partNumber, $response->getHeaderLine('ETag')
|
||||
)]
|
||||
);
|
||||
$request->uploadId = $uploadId;
|
||||
$result = $client->presign($request);
|
||||
$xml = new \SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><CompleteMultipartUpload></CompleteMultipartUpload>');
|
||||
if (isset($request->completeMultipartUpload->parts)) {
|
||||
foreach ($request->completeMultipartUpload->parts as $part) {
|
||||
$xmlPart = $xml->addChild('Part');
|
||||
$xmlPart->addChild('PartNumber', strval($part->partNumber));
|
||||
$xmlPart->addChild('ETag', $part->etag);
|
||||
}
|
||||
}
|
||||
$response = $httpClient->request($result->method, $result->url, ['body' => $xml->asXML(), 'headers' => $result->signedHeaders]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
$headRequest = new Oss\Models\HeadObjectRequest($bucketName, $objectNameMultipart);
|
||||
$headResult = $client->headObject($headRequest);
|
||||
$this->assertEquals(200, $headResult->statusCode);
|
||||
$this->assertEquals(strlen($body), $headResult->contentLength);
|
||||
$this->assertEquals('Multipart', $headResult->objectType);
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
$objectNameMultipartCopy = self::$OBJECTNAME_PREFIX . self::randomLowStr() . '-multi-part-copy';
|
||||
|
||||
try {
|
||||
$initRequest = new Oss\Models\InitiateMultipartUploadRequest($bucketName, $objectNameMultipartCopy);
|
||||
$initResult = $client->presign($initRequest);
|
||||
$response = $httpClient->request($initResult->method, $initResult->url, ['headers' => $initResult->signedHeaders]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
$body = $response->getBody()->getContents();
|
||||
$xml = Utils::parseXml($body);
|
||||
$uploadId = Functions::tryToString($xml->UploadId);
|
||||
|
||||
$abortRequest = new Oss\Models\AbortMultipartUploadRequest($bucketName, $objectNameMultipartCopy, $uploadId);
|
||||
$result = $client->presign($abortRequest);
|
||||
$response = $httpClient->request($result->method, $result->url, ['headers' => $result->signedHeaders]);
|
||||
$this->assertEquals(204, $response->getStatusCode());
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function testPresignError()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
try {
|
||||
$request = new Oss\Models\ListObjectsRequest($bucketName);
|
||||
$result = $client->presign($request);
|
||||
$this->assertTrue(false, 'should not here');
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertStringContainsString("Invalid request type: AlibabaCloud\Oss\V2\Models\ListObjectsRequest", $e);
|
||||
}
|
||||
|
||||
try {
|
||||
$result = $client->presign(null);
|
||||
$this->assertTrue(false, 'should not here');
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertStringContainsString("is not subclass of RequestModel, got NULL", $e);
|
||||
}
|
||||
}
|
||||
|
||||
public function testPresignWithContentType()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName;
|
||||
|
||||
$objectName = self::$OBJECTNAME_PREFIX . self::randomLowStr() . '-put-object.zip';
|
||||
$body = 'hi oss';
|
||||
$httpClient = new GuzzleHttp\Client();
|
||||
// PutObjRequest
|
||||
try {
|
||||
$request = new Oss\Models\PutObjectRequest($bucketName, $objectName);
|
||||
$result = $client->presign($request);
|
||||
$response = $httpClient->request($result->method, $result->url, ['body' => $body]);
|
||||
$this->assertCount(0, $result->signedHeaders);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
} catch (\Throwable $e) {
|
||||
print_r($e->getMessage());
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
// UploadPart
|
||||
$objectNameMultipart = self::$OBJECTNAME_PREFIX . self::randomLowStr() . '-multi-part.zip';
|
||||
try {
|
||||
$request = new Oss\Models\InitiateMultipartUploadRequest($bucketName, $objectNameMultipart);
|
||||
$result = $client->presign($request);
|
||||
$this->assertCount(1, $result->signedHeaders);
|
||||
$this->assertArrayHasKey('content-md5', $result->signedHeaders);
|
||||
$response = $httpClient->request($result->method, $result->url, ['headers' => $result->signedHeaders]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
$body = $response->getBody()->getContents();
|
||||
$xml = Utils::parseXml($body);
|
||||
$uploadId = Functions::tryToString($xml->UploadId);
|
||||
try {
|
||||
$partRequest = new Oss\Models\UploadPartRequest($bucketName, $objectNameMultipart);
|
||||
$partRequest->partNumber = 1;
|
||||
$partRequest->uploadId = $uploadId;
|
||||
$result = $client->presign($partRequest);
|
||||
$response = $httpClient->request($result->method, $result->url, ['body' => $body, ['headers' => $result->signedHeaders]]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
} catch (\Throwable $e) {
|
||||
print_r($e->getMessage());
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Oss\Models\CompleteMultipartUploadRequest($bucketName, $objectNameMultipart);
|
||||
$request->completeMultipartUpload = new CompleteMultipartUpload(
|
||||
[new Oss\Models\UploadPart(
|
||||
$partRequest->partNumber, $response->getHeaderLine('ETag')
|
||||
)]
|
||||
);
|
||||
$request->uploadId = $uploadId;
|
||||
$result = $client->presign($request);
|
||||
$xml = new \SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><CompleteMultipartUpload></CompleteMultipartUpload>');
|
||||
if (isset($request->completeMultipartUpload->parts)) {
|
||||
foreach ($request->completeMultipartUpload->parts as $part) {
|
||||
$xmlPart = $xml->addChild('Part');
|
||||
$xmlPart->addChild('PartNumber', strval($part->partNumber));
|
||||
$xmlPart->addChild('ETag', $part->etag);
|
||||
}
|
||||
}
|
||||
$response = $httpClient->request($result->method, $result->url, ['body' => $xml->asXML(), 'headers' => $result->signedHeaders]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
$headRequest = new Oss\Models\HeadObjectRequest($bucketName, $objectNameMultipart);
|
||||
$headResult = $client->headObject($headRequest);
|
||||
$this->assertEquals(200, $headResult->statusCode);
|
||||
$this->assertEquals(strlen($body), $headResult->contentLength);
|
||||
$this->assertEquals('Multipart', $headResult->objectType);
|
||||
} catch (\Throwable $e) {
|
||||
print_r($e->getMessage());
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
|
||||
$objectNameMultipartCopy = self::$OBJECTNAME_PREFIX . self::randomLowStr() . '-multi-part-copy';
|
||||
|
||||
try {
|
||||
$initRequest = new Oss\Models\InitiateMultipartUploadRequest($bucketName, $objectNameMultipartCopy);
|
||||
$initResult = $client->presign($initRequest);
|
||||
$response = $httpClient->request($initResult->method, $initResult->url, ['headers' => $initResult->signedHeaders]);
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
$body = $response->getBody()->getContents();
|
||||
$xml = Utils::parseXml($body);
|
||||
$uploadId = Functions::tryToString($xml->UploadId);
|
||||
|
||||
$abortRequest = new Oss\Models\AbortMultipartUploadRequest($bucketName, $objectNameMultipartCopy, $uploadId);
|
||||
$result = $client->presign($abortRequest);
|
||||
$response = $httpClient->request($result->method, $result->url, ['headers' => $result->signedHeaders]);
|
||||
$this->assertEquals(204, $response->getStatusCode());
|
||||
} catch (\Throwable $e) {
|
||||
$this->assertTrue(false, 'should not here');
|
||||
}
|
||||
}
|
||||
|
||||
public function testPresignWithAnonymous()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
$bucketName = self::$bucketName.'-pub';
|
||||
$objectName = self::$OBJECTNAME_PREFIX . self::randomLowStr() . '-put-object';
|
||||
|
||||
$client->putBucket(new Oss\Models\PutBucketRequest($bucketName));
|
||||
$client->putBucketPublicAccessBlock(new Oss\Models\PutBucketPublicAccessBlockRequest(
|
||||
$bucketName,
|
||||
new Oss\Models\PublicAccessBlockConfiguration(
|
||||
false
|
||||
)
|
||||
));
|
||||
|
||||
$content = 'hi oss';
|
||||
$putObjectRequest = new Oss\Models\PutObjectRequest(
|
||||
$bucketName, $objectName
|
||||
);
|
||||
$putObjectRequest->acl = 'public-read';
|
||||
$putObjectRequest->body = Utils::streamFor($content);
|
||||
$client->putObject($putObjectRequest);
|
||||
|
||||
$request = new Oss\Models\GetObjectRequest($bucketName, $objectName);
|
||||
$options['credentials_provider'] = new Oss\Credentials\AnonymousCredentialsProvider();
|
||||
$result = $client->presign($request, $options);
|
||||
$this->assertNotEmpty($result->url);
|
||||
$this->assertNotEmpty($result->method);
|
||||
$this->assertStringNotContainsString('?', $result->url);
|
||||
$httpClient = new GuzzleHttp\Client();
|
||||
$response = $httpClient->get($result->url);
|
||||
$this->assertEquals($response->getStatusCode(), 200);
|
||||
$this->assertEquals($response->getBody()->getContents(), $content);
|
||||
}
|
||||
}
|
||||
88
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientPublicAccessBlockTest.php
vendored
Normal file
88
vendor/alibabacloud/oss-v2/tests/IntegrationTests/ClientPublicAccessBlockTest.php
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestIntegration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class ClientPublicAccessBlockTest extends TestIntegration
|
||||
{
|
||||
public function testPublicAccessBlock()
|
||||
{
|
||||
$client = $this->getDefaultClient();
|
||||
// PutPublicAccessBlock
|
||||
$putResult = $client->putPublicAccessBlock(new Oss\Models\PutPublicAccessBlockRequest(
|
||||
new Oss\Models\PublicAccessBlockConfiguration(true)
|
||||
));
|
||||
$this->assertEquals(200, $putResult->statusCode);
|
||||
$this->assertEquals('OK', $putResult->status);
|
||||
$this->assertEquals(True, count($putResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($putResult->requestId));
|
||||
|
||||
// GetPublicAccessBlock
|
||||
$getResult = $client->getPublicAccessBlock(new Oss\Models\GetPublicAccessBlockRequest());
|
||||
$this->assertEquals(200, $getResult->statusCode);
|
||||
$this->assertEquals('OK', $getResult->status);
|
||||
$this->assertEquals(True, count($getResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($getResult->requestId));
|
||||
|
||||
// DeletePublicAccessBlock
|
||||
$delResult = $client->deletePublicAccessBlock(new Oss\Models\DeletePublicAccessBlockRequest());
|
||||
$this->assertEquals(204, $delResult->statusCode);
|
||||
$this->assertEquals('No Content', $delResult->status);
|
||||
$this->assertEquals(True, count($delResult->headers) > 0);
|
||||
$this->assertEquals(24, strlen($delResult->requestId));
|
||||
}
|
||||
|
||||
public function testPublicAccessBlockFail()
|
||||
{
|
||||
$client = $this->getInvalidAkClient();
|
||||
// PutPublicAccessBlock
|
||||
try {
|
||||
$putResult = $client->putPublicAccessBlock(new Oss\Models\PutPublicAccessBlockRequest(
|
||||
new Oss\Models\PublicAccessBlockConfiguration(true)
|
||||
));
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error PutPublicAccessBlock', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// GetPublicAccessBlock
|
||||
try {
|
||||
$getResult = $client->getPublicAccessBlock(new Oss\Models\GetPublicAccessBlockRequest());
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error GetPublicAccessBlock', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
|
||||
// DeletePublicAccessBlock
|
||||
try {
|
||||
$delResult = $client->deletePublicAccessBlock(new Oss\Models\DeletePublicAccessBlockRequest());
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$this->assertStringContainsString('Operation error DeletePublicAccessBlock', $e);
|
||||
$se = $e->getPrevious();
|
||||
$this->assertInstanceOf(Oss\Exception\ServiceException::class, $se);
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
$this->assertEquals('InvalidAccessKeyId', $se->getErrorCode());
|
||||
$this->assertEquals(403, $se->getStatusCode());
|
||||
$this->assertEquals(24, strlen($se->getRequestId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1045
vendor/alibabacloud/oss-v2/tests/IntegrationTests/EncryptionClientTest.php
vendored
Normal file
1045
vendor/alibabacloud/oss-v2/tests/IntegrationTests/EncryptionClientTest.php
vendored
Normal file
File diff suppressed because it is too large
Load Diff
402
vendor/alibabacloud/oss-v2/tests/IntegrationTests/TestIntegration.php
vendored
Normal file
402
vendor/alibabacloud/oss-v2/tests/IntegrationTests/TestIntegration.php
vendored
Normal file
@@ -0,0 +1,402 @@
|
||||
<?php
|
||||
|
||||
namespace IntegrationTests;
|
||||
|
||||
use AlibabaCloud\Oss\V2 as Oss;
|
||||
|
||||
class TestIntegration extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
static $ACCESS_ID;
|
||||
static $ACCESS_KEY;
|
||||
static $ENDPOINT;
|
||||
static $REGION;
|
||||
static $RAM_ROLE_ARN;
|
||||
static $USER_ID;
|
||||
|
||||
static $PAYER_ACCESS_ID;
|
||||
static $PAYER_ACCESS_KEY;
|
||||
static $PAYER_UID;
|
||||
|
||||
public static $BUCKETNAME_PREFIX = "php-sdk-test-bucket-";
|
||||
public static $OBJECTNAME_PREFIX = "php-sdk-test-object-";
|
||||
|
||||
static ?Oss\Client $defaultClient = null;
|
||||
static ?Oss\Client $invalidAkClient = null;
|
||||
static ?Oss\Client $signV1Client = null;
|
||||
|
||||
static ?string $tempDir;
|
||||
|
||||
static ?string $bucketName = null;
|
||||
|
||||
public static function setUpBeforeClass(): void
|
||||
{
|
||||
self::$ACCESS_ID = getenv("OSS_TEST_ACCESS_KEY_ID");
|
||||
self::$ACCESS_KEY = getenv("OSS_TEST_ACCESS_KEY_SECRET");
|
||||
self::$ENDPOINT = getenv("OSS_TEST_ENDPOINT");
|
||||
self::$REGION = getenv("OSS_TEST_REGION") ?? 'cn-hangzhou';
|
||||
self::$RAM_ROLE_ARN = getenv("OSS_TEST_RAM_ROLE_ARN");
|
||||
self::$USER_ID = getenv("OSS_TEST_USER_ID");
|
||||
|
||||
self::$PAYER_ACCESS_ID = getenv("OSS_TEST_PAYER_ACCESS_KEY_ID");
|
||||
self::$PAYER_ACCESS_KEY = getenv("OSS_TEST_PAYER_ACCESS_KEY_SECRET");
|
||||
self::$PAYER_UID = getenv("OSS_TEST_PAYER_UID");
|
||||
|
||||
$client = self::getDefaultClient();
|
||||
$bucketName = self::randomBucketName();
|
||||
self::$bucketName = $bucketName;
|
||||
|
||||
self::$tempDir = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'oss-php-sdk-test-' . strval(time());
|
||||
mkdir(self::$tempDir);
|
||||
|
||||
$client->putBucket(new Oss\Models\PutBucketRequest($bucketName));
|
||||
}
|
||||
|
||||
public static function tearDownAfterClass(): void
|
||||
{
|
||||
//clean access points
|
||||
if (version_compare(PHP_VERSION, '8.0.0', '>=')) {
|
||||
self::deleteAccessPoint(self::getDefaultClient(), self::$bucketName);
|
||||
}
|
||||
|
||||
//clean buckets
|
||||
self::cleanBucket(self::getDefaultClient(), self::$bucketName);
|
||||
|
||||
//clean temp dir
|
||||
self::deleteDir(self::$tempDir);
|
||||
}
|
||||
|
||||
static function getDefaultClient()
|
||||
{
|
||||
if (self::$defaultClient != null) {
|
||||
return self::$defaultClient;
|
||||
}
|
||||
|
||||
$cfg = Oss\Config::loadDefault();
|
||||
$cfg->setCredentialsProvider(new Oss\Credentials\StaticCredentialsProvider(
|
||||
self::$ACCESS_ID,
|
||||
self::$ACCESS_KEY
|
||||
));
|
||||
$cfg->setRegion(self::$REGION);
|
||||
$cfg->setEndpoint(self::$ENDPOINT);
|
||||
self::$defaultClient = new Oss\Client($cfg);
|
||||
return self::$defaultClient;
|
||||
}
|
||||
|
||||
static function getClient(string $ak, $sk, $region, $endpoint)
|
||||
{
|
||||
$cfg = Oss\Config::loadDefault();
|
||||
$cfg->setCredentialsProvider(new Oss\Credentials\StaticCredentialsProvider(
|
||||
$ak,
|
||||
$sk
|
||||
));
|
||||
$cfg->setRegion($region);
|
||||
if (!empty($endpoint)) {
|
||||
$cfg->setEndpoint($endpoint);
|
||||
}
|
||||
return new Oss\Client($cfg);
|
||||
}
|
||||
|
||||
static function getInvalidAkClient()
|
||||
{
|
||||
if (self::$invalidAkClient != null) {
|
||||
return self::$invalidAkClient;
|
||||
}
|
||||
|
||||
$cfg = Oss\Config::loadDefault();
|
||||
$cfg->setCredentialsProvider(new Oss\Credentials\StaticCredentialsProvider(
|
||||
'invalid-ak',
|
||||
'invalid'
|
||||
));
|
||||
$cfg->setRegion(self::$REGION);
|
||||
$cfg->setEndpoint(self::$ENDPOINT);
|
||||
self::$invalidAkClient = new Oss\Client($cfg);
|
||||
return self::$invalidAkClient;
|
||||
}
|
||||
|
||||
public static function getTempFileName()
|
||||
{
|
||||
return tempnam(self::$tempDir, 'test');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Oss\Client|null
|
||||
* @throws \Throwable
|
||||
*/
|
||||
public function getClientUseStsToken()
|
||||
{
|
||||
try {
|
||||
$resp = $this->stsAssumeRole(self::$ACCESS_ID, self::$ACCESS_KEY, self::$RAM_ROLE_ARN);
|
||||
$accessKeyId = $resp['Credentials']['AccessKeyId'];
|
||||
$accessKeySecret = $resp['Credentials']['AccessKeySecret'];
|
||||
$token = $resp['Credentials']['SecurityToken'];
|
||||
$cfg = Oss\Config::loadDefault();
|
||||
$cfg->setCredentialsProvider(new Oss\Credentials\StaticCredentialsProvider(
|
||||
$accessKeyId,
|
||||
$accessKeySecret,
|
||||
$token
|
||||
));
|
||||
$cfg->setRegion(self::$REGION);
|
||||
$cfg->setEndpoint(self::$ENDPOINT);
|
||||
return new Oss\Client($cfg);
|
||||
} catch (\Throwable $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
private function stsAssumeRole($accessKeyId, $accessKeySecret, $roleArn)
|
||||
{
|
||||
// Constants
|
||||
$StsSignVersion = "1.0";
|
||||
$StsAPIVersion = "2015-04-01";
|
||||
$StsHost = "https://sts.aliyuncs.com/";
|
||||
$TimeFormat = "Y-m-d\TH:i:s\Z";
|
||||
$RespBodyFormat = "JSON";
|
||||
$PercentEncode = "%2F";
|
||||
$HTTPGet = "GET";
|
||||
$uuid = "Nonce-" . rand(1000, 9999);
|
||||
$currentTime = (new \DateTime('now', new \DateTimeZone('UTC')))->format($TimeFormat);
|
||||
$queryStr = http_build_query([
|
||||
"SignatureVersion" => $StsSignVersion,
|
||||
"Format" => $RespBodyFormat,
|
||||
"Timestamp" => $currentTime,
|
||||
"RoleArn" => $roleArn,
|
||||
"RoleSessionName" => "oss_test_sess",
|
||||
"AccessKeyId" => $accessKeyId,
|
||||
"SignatureMethod" => "HMAC-SHA1",
|
||||
"Version" => $StsAPIVersion,
|
||||
"Action" => "AssumeRole",
|
||||
"SignatureNonce" => $uuid,
|
||||
"DurationSeconds" => 3600
|
||||
]);
|
||||
parse_str($queryStr, $queryParams);
|
||||
ksort($queryParams);
|
||||
$queryStr = http_build_query($queryParams);
|
||||
$strToSign = $HTTPGet . "&" . $PercentEncode . "&" . rawurlencode($queryStr);
|
||||
$signature = base64_encode(hash_hmac('sha1', $strToSign, $accessKeySecret . "&", true));
|
||||
$assumeURL = $StsHost . "?" . $queryStr . "&Signature=" . urlencode($signature);
|
||||
$httpClient = new \GuzzleHttp\Client();
|
||||
try {
|
||||
$resp = $httpClient->get($assumeURL);
|
||||
$result = json_decode($resp->getBody()->getContents(), true);
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
throw new \Exception("Failed to decode JSON response");
|
||||
}
|
||||
return $result;
|
||||
} catch (\Throwable $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
public static function randomBucketName()
|
||||
{
|
||||
return self::$BUCKETNAME_PREFIX . strval(rand(0, 100)) . '-' . strval(time());
|
||||
}
|
||||
|
||||
public static function randomObjectName()
|
||||
{
|
||||
return self::$OBJECTNAME_PREFIX . strval(rand(0, 100)) . '-' . strval(time());
|
||||
}
|
||||
|
||||
public static function randomLowStr()
|
||||
{
|
||||
self::$BUCKETNAME_PREFIX . strval(rand(0, 100)) . '-' . strval(time());
|
||||
}
|
||||
|
||||
public static function randomStr()
|
||||
{
|
||||
self::$BUCKETNAME_PREFIX . strval(rand(0, 100)) . '-' . strval(time());
|
||||
}
|
||||
|
||||
public static function waitFor(float $sec)
|
||||
{
|
||||
usleep((int)($sec * 1000000));
|
||||
}
|
||||
|
||||
public static function cleanBucket(Oss\Client $client, string $bucketName): void
|
||||
{
|
||||
//delete Objects
|
||||
$paginator = new Oss\Paginator\ListObjectsPaginator($client);
|
||||
$iter = $paginator->iterPage(new Oss\Models\ListObjectsRequest($bucketName));
|
||||
foreach ($iter as $page) {
|
||||
$objects = [];
|
||||
foreach ($page->contents ?? [] as $content) {
|
||||
$objects[] = new Oss\Models\DeleteObject($content->key);
|
||||
}
|
||||
if (!empty($objects)) {
|
||||
$client->deleteMultipleObjects(new Oss\Models\DeleteMultipleObjectsRequest(
|
||||
$bucketName,
|
||||
$objects
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
//delete uploadpart
|
||||
$paginator = new Oss\Paginator\ListMultipartUploadsPaginator($client);
|
||||
$iter = $paginator->iterPage(new Oss\Models\ListMultipartUploadsRequest($bucketName));
|
||||
foreach ($iter as $page) {
|
||||
foreach ($page->uploads ?? [] as $upload) {
|
||||
$client->abortMultipartUpload(new Oss\Models\AbortMultipartUploadRequest(
|
||||
$bucketName,
|
||||
$upload->key,
|
||||
$upload->uploadId
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$client->deleteBucket(new Oss\Models\DeleteBucketRequest($bucketName));
|
||||
}
|
||||
|
||||
public static function deleteDir(string $dir): void
|
||||
{
|
||||
if (!is_dir($dir)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($handle = opendir($dir)) {
|
||||
while (($entry = readdir($handle)) !== false) {
|
||||
if ($entry == '.' || $entry == '..') {
|
||||
continue;
|
||||
}
|
||||
$file = $dir . DIRECTORY_SEPARATOR . $entry;
|
||||
|
||||
if (is_dir($file)) {
|
||||
self::deleteDir($file);
|
||||
} else {
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
|
||||
rmdir($dir);
|
||||
}
|
||||
|
||||
public static function getDataPath(): string
|
||||
{
|
||||
return dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'Data';
|
||||
}
|
||||
|
||||
public static function deleteAccessPoint(Oss\Client $client, string $bucketName): void
|
||||
{
|
||||
$listRequest = new Oss\Models\ListAccessPointsRequest();
|
||||
$listRequest->bucket = $bucketName;
|
||||
while (true) {
|
||||
$listResult = $client->listAccessPoints($listRequest);
|
||||
if (isset($listResult->listAccessPoints->accessPoints->accessPoints) && count($listResult->listAccessPoints->accessPoints->accessPoints) > 0) {
|
||||
foreach ($listResult->listAccessPoints->accessPoints->accessPoints as $accessPoint) {
|
||||
switch ($accessPoint->status) {
|
||||
case 'creating':
|
||||
sleep(3);
|
||||
while (true) {
|
||||
$getResult = $client->getAccessPoint(new Oss\Models\GetAccessPointRequest(
|
||||
$bucketName, $accessPoint->accessPointName
|
||||
));
|
||||
if ($getResult->getAccessPoint->status != 'creating') {
|
||||
break;
|
||||
} else {
|
||||
sleep(3);
|
||||
}
|
||||
}
|
||||
$client->deleteAccessPoint(new Oss\Models\DeleteAccessPointRequest(
|
||||
$bucketName, $accessPoint->accessPointName
|
||||
));
|
||||
break;
|
||||
case 'deleting':
|
||||
sleep(5);
|
||||
break;
|
||||
default:
|
||||
$client->deleteAccessPoint(new Oss\Models\DeleteAccessPointRequest(
|
||||
$bucketName, $accessPoint->accessPointName
|
||||
));
|
||||
break;
|
||||
}
|
||||
while (true) {
|
||||
try {
|
||||
$client->getAccessPoint(new Oss\Models\GetAccessPointRequest(
|
||||
$bucketName, $accessPoint->accessPointName
|
||||
));
|
||||
} catch (Oss\Exception\OperationException $e) {
|
||||
$se = $e->getPrevious();
|
||||
if ($se instanceof Oss\Exception\ServiceException) {
|
||||
if ($se->getErrorCode() == 'NoSuchAccessPoint' && $se->getStatusCode() == 404) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
sleep(3);
|
||||
}
|
||||
|
||||
}
|
||||
if ($listResult->listAccessPoints->isTruncated == false) {
|
||||
break;
|
||||
}
|
||||
if ($listResult->listAccessPoints->nextContinuationToken != "") {
|
||||
$listRequest->continuationToken = $listResult->listAccessPoints->nextContinuationToken;
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $filename
|
||||
* @param $size
|
||||
*/
|
||||
public function generateFile($filename, $size)
|
||||
{
|
||||
if (
|
||||
file_exists($filename) &&
|
||||
$size == sprintf('%u', filesize($filename))
|
||||
) {
|
||||
return;
|
||||
}
|
||||
$part_size = 32;
|
||||
$fp = fopen($filename, "w");
|
||||
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||
|
||||
$charactersLength = strlen($characters);
|
||||
if ($fp) {
|
||||
while ($size > 0) {
|
||||
if ($size < $part_size) {
|
||||
$write_size = $size;
|
||||
} else {
|
||||
$write_size = $part_size;
|
||||
}
|
||||
$size -= $write_size;
|
||||
$a = $characters[rand(0, $charactersLength - 1)];
|
||||
$content = str_repeat($a, $write_size);
|
||||
$flag = fwrite($fp, $content);
|
||||
if (!$flag) {
|
||||
$this->assertTrue(false, "write to $filename failed.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$this->assertTrue(false, "open $filename failed.");
|
||||
}
|
||||
fclose($fp);
|
||||
}
|
||||
|
||||
public function object_get_contents($client, $bucket, $key): string
|
||||
{
|
||||
$result = $client->getObject(new Oss\Models\GetObjectRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
return $result->body->getContents();
|
||||
}
|
||||
|
||||
public function object_get_content_type($client, $bucket, $key): string
|
||||
{
|
||||
$result = $client->headObject(new Oss\Models\HeadObjectRequest(
|
||||
self::$bucketName,
|
||||
$key,
|
||||
));
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
return $result->contentType;
|
||||
}
|
||||
}
|
||||
80
vendor/alibabacloud/oss-v2/tests/UnitTests/Annotation/AnnotationTest.php
vendored
Normal file
80
vendor/alibabacloud/oss-v2/tests/UnitTests/Annotation/AnnotationTest.php
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
namespace UnitTests\Annotation;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'XmlObject.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'ModelObject.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2\Annotation\Functions;
|
||||
|
||||
class AnnotationTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testXmlAnnotation()
|
||||
{
|
||||
$obj = new XmlObject();
|
||||
$ro = new \ReflectionObject($obj);
|
||||
$attributes = $ro->getAttributes();
|
||||
$this->assertCount(1, $attributes);
|
||||
$inst = $attributes[0]->newInstance();
|
||||
$this->assertNotNull($inst);
|
||||
$this->assertEquals("XmlRoot", $inst->name);
|
||||
|
||||
$prop = $ro->getProperty("strValue");
|
||||
$this->assertNotNull($prop);
|
||||
$attributes = $prop->getAttributes();
|
||||
$this->assertCount(1, $attributes);
|
||||
$inst = $attributes[0]->newInstance();
|
||||
$this->assertNotNull($inst);
|
||||
$this->assertEquals("StrValue", $inst->rename);
|
||||
$this->assertEquals("string", $inst->type);
|
||||
|
||||
$prop = $ro->getProperty("strValueLists");
|
||||
$this->assertNotNull($prop);
|
||||
$attributes = $prop->getAttributes();
|
||||
$this->assertCount(1, $attributes);
|
||||
$inst = $attributes[0]->newInstance();
|
||||
$this->assertNotNull($inst);
|
||||
$this->assertEquals("StrValueList", $inst->rename);
|
||||
$this->assertEquals("string", $inst->type);
|
||||
}
|
||||
|
||||
public function testRequiredProperty()
|
||||
{
|
||||
$obj = new ModelObject();
|
||||
$ro = new \ReflectionObject($obj);
|
||||
|
||||
$prop = $ro->getProperty("strValue");
|
||||
$this->assertNotNull($prop);
|
||||
$this->assertTrue(Functions::isRequiredProperty($prop));
|
||||
|
||||
$prop = $ro->getProperty("intValue");
|
||||
$this->assertNotNull($prop);
|
||||
$this->assertFalse(Functions::isRequiredProperty($prop));
|
||||
}
|
||||
|
||||
public function testFunctions()
|
||||
{
|
||||
$obj = new ModelObject();
|
||||
$ro = new \ReflectionObject($obj);
|
||||
|
||||
$prop = $ro->getProperty("strValue");
|
||||
$this->assertNotNull($prop);
|
||||
|
||||
$result = Functions::getXmlElementAnnotation($prop);
|
||||
$this->assertNull($result);
|
||||
|
||||
$result = Functions::getTagAnnotation($prop);
|
||||
$this->assertNotNull($result);
|
||||
$this->assertEquals("input", $result->tag);
|
||||
$this->assertEquals("nop", $result->position);
|
||||
$this->assertEquals("StrValue", $result->rename);
|
||||
$this->assertEquals("string", $result->type);
|
||||
|
||||
$result = Functions::getPropertyAnnotations($prop);
|
||||
$this->assertCount(2, $result);
|
||||
|
||||
$this->assertEquals("input", $result[1]->tag);
|
||||
$this->assertEquals("nop", $result[1]->position);
|
||||
$this->assertEquals("StrValue", $result[1]->rename);
|
||||
$this->assertEquals("string", $result[1]->type);
|
||||
}
|
||||
}
|
||||
39
vendor/alibabacloud/oss-v2/tests/UnitTests/Annotation/ModelObject.php
vendored
Normal file
39
vendor/alibabacloud/oss-v2/tests/UnitTests/Annotation/ModelObject.php
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Annotation;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Annotation\TagProperty;
|
||||
use AlibabaCloud\Oss\V2\Annotation\RequiredProperty;
|
||||
|
||||
class ModelObject
|
||||
{
|
||||
#[RequiredProperty()]
|
||||
#[TagProperty(tag: 'input', position: 'nop', rename:'StrValue', type: 'string')]
|
||||
public ?string $strValue;
|
||||
|
||||
#[TagProperty(tag: 'input', position: 'nop', rename:'IntValue', type: 'int')]
|
||||
public ?int $intValue;
|
||||
|
||||
#[TagProperty(tag: 'input', position: 'nop', rename:'BoolValue', type: 'bool')]
|
||||
public ?bool $boolValue;
|
||||
|
||||
#[TagProperty(tag: 'input', position: 'nop', rename:'FloatValue', type: 'float')]
|
||||
public ?float $floatValue;
|
||||
|
||||
#[TagProperty(tag: 'input', position: 'nop', rename:'StrValueList', type: 'string')]
|
||||
public ?array $strValueLists;
|
||||
|
||||
public function __construct(
|
||||
?string $strValue = null,
|
||||
?int $intValue = null,
|
||||
?bool $boolValue = null,
|
||||
?float $floatValue = null,
|
||||
?array $strValueLists = null
|
||||
) {
|
||||
$this->strValue = $strValue;
|
||||
$this->intValue = $intValue;
|
||||
$this->boolValue = $boolValue;
|
||||
$this->floatValue = $floatValue;
|
||||
$this->strValueLists = $strValueLists;
|
||||
}
|
||||
}
|
||||
39
vendor/alibabacloud/oss-v2/tests/UnitTests/Annotation/XmlObject.php
vendored
Normal file
39
vendor/alibabacloud/oss-v2/tests/UnitTests/Annotation/XmlObject.php
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Annotation;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlElement;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlRoot;
|
||||
|
||||
#[XmlRoot(name:'XmlRoot')]
|
||||
class XmlObject
|
||||
{
|
||||
#[XmlElement(rename:'StrValue', type: 'string')]
|
||||
public ?string $strValue;
|
||||
|
||||
#[XmlElement(rename:'IntValue', type: 'int')]
|
||||
public ?int $intValue;
|
||||
|
||||
#[XmlElement(rename:'BoolValue', type: 'bool')]
|
||||
public ?bool $boolValue;
|
||||
|
||||
#[XmlElement(rename:'FloatValue', type: 'float')]
|
||||
public ?float $floatValue;
|
||||
|
||||
#[XmlElement(rename:'StrValueList', type: 'string')]
|
||||
public ?array $strValueLists;
|
||||
|
||||
public function __construct(
|
||||
?string $strValue = null,
|
||||
?int $intValue = null,
|
||||
?bool $boolValue = null,
|
||||
?float $floatValue = null,
|
||||
?array $strValueLists = null
|
||||
) {
|
||||
$this->strValue = $strValue;
|
||||
$this->intValue = $intValue;
|
||||
$this->boolValue = $boolValue;
|
||||
$this->floatValue = $floatValue;
|
||||
$this->strValueLists = $strValueLists;
|
||||
}
|
||||
}
|
||||
2282
vendor/alibabacloud/oss-v2/tests/UnitTests/ClientImplTest.php
vendored
Normal file
2282
vendor/alibabacloud/oss-v2/tests/UnitTests/ClientImplTest.php
vendored
Normal file
File diff suppressed because it is too large
Load Diff
84
vendor/alibabacloud/oss-v2/tests/UnitTests/Credentials/CredentialsTest.php
vendored
Normal file
84
vendor/alibabacloud/oss-v2/tests/UnitTests/Credentials/CredentialsTest.php
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
namespace UnitTests\Credentials;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Credentials\Credentials;
|
||||
use AlibabaCloud\Oss\V2\Credentials\AnonymousCredentialsProvider;
|
||||
use AlibabaCloud\Oss\V2\Credentials\CredentialsProviderFunc;
|
||||
|
||||
class CredentialsTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
|
||||
public function testCredentials()
|
||||
{
|
||||
$credentials = new Credentials("", "");
|
||||
$this->assertEquals("", $credentials->getAccessKeyId());
|
||||
$this->assertEquals("", $credentials->getAccessKeySecret());
|
||||
$this->assertNull($credentials->getSecurityToken());
|
||||
$this->assertNull($credentials->getExpiration());
|
||||
$this->assertFalse($credentials->hasKeys());
|
||||
$this->assertFalse($credentials->isExpired());
|
||||
|
||||
$credentials = new Credentials("ak", "sk");
|
||||
$this->assertEquals("ak", $credentials->getAccessKeyId());
|
||||
$this->assertEquals("sk", $credentials->getAccessKeySecret());
|
||||
$this->assertNull($credentials->getSecurityToken());
|
||||
$this->assertNull($credentials->getExpiration());
|
||||
$this->assertTrue($credentials->hasKeys());
|
||||
$this->assertFalse($credentials->isExpired());
|
||||
|
||||
$credentials = new Credentials("ak", "sk", "token");
|
||||
$this->assertEquals("ak", $credentials->getAccessKeyId());
|
||||
$this->assertEquals("sk", $credentials->getAccessKeySecret());
|
||||
$this->assertEquals("token", $credentials->getSecurityToken());
|
||||
$this->assertNull($credentials->getExpiration());
|
||||
$this->assertTrue($credentials->hasKeys());
|
||||
$this->assertFalse($credentials->isExpired());
|
||||
|
||||
|
||||
$expiration = new \DateTime('now', new \DateTimeZone('UTC'));
|
||||
$expiration->modify("+ 100 seconds");
|
||||
$credentials = new Credentials("ak", "sk", "token", $expiration);
|
||||
$this->assertEquals("ak", $credentials->getAccessKeyId());
|
||||
$this->assertEquals("sk", $credentials->getAccessKeySecret());
|
||||
$this->assertEquals("token", $credentials->getSecurityToken());
|
||||
$this->assertNotNull($credentials->getExpiration());
|
||||
$this->assertTrue($credentials->hasKeys());
|
||||
$this->assertFalse($credentials->isExpired());
|
||||
|
||||
$expiration = new \DateTime('now', new \DateTimeZone('UTC'));
|
||||
$expiration->modify("- 100 seconds");
|
||||
$credentials = new Credentials("ak", "sk", "token", $expiration);
|
||||
$this->assertEquals("ak", $credentials->getAccessKeyId());
|
||||
$this->assertEquals("sk", $credentials->getAccessKeySecret());
|
||||
$this->assertEquals("token", $credentials->getSecurityToken());
|
||||
$this->assertNotNull($credentials->getExpiration());
|
||||
$this->assertTrue($credentials->hasKeys());
|
||||
$this->assertTrue($credentials->isExpired());
|
||||
|
||||
}
|
||||
|
||||
public function testAnonymousCredentialsProvider()
|
||||
{
|
||||
$provider = new AnonymousCredentialsProvider();
|
||||
$credentials = $provider->getCredentials();
|
||||
$this->assertEquals("", $credentials->getAccessKeyId());
|
||||
$this->assertEquals("", $credentials->getAccessKeySecret());
|
||||
$this->assertNull($credentials->getSecurityToken());
|
||||
$this->assertNull($credentials->getExpiration());
|
||||
$this->assertFalse($credentials->isExpired());
|
||||
}
|
||||
|
||||
public function testCredentialsProviderFunc()
|
||||
{
|
||||
$provider = new CredentialsProviderFunc( function () {
|
||||
return new Credentials("ak", "sk");
|
||||
});
|
||||
$credentials = $provider->getCredentials();
|
||||
$this->assertEquals("ak", $credentials->getAccessKeyId());
|
||||
$this->assertEquals("sk", $credentials->getAccessKeySecret());
|
||||
$this->assertNull($credentials->getSecurityToken());
|
||||
$this->assertNull($credentials->getExpiration());
|
||||
$this->assertTrue($credentials->hasKeys());
|
||||
$this->assertFalse($credentials->isExpired());
|
||||
}
|
||||
}
|
||||
218
vendor/alibabacloud/oss-v2/tests/UnitTests/Crypto/AesCtrCipherTest.php
vendored
Normal file
218
vendor/alibabacloud/oss-v2/tests/UnitTests/Crypto/AesCtrCipherTest.php
vendored
Normal file
@@ -0,0 +1,218 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Crypto;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Crypto\AesCtrCipherBuilder;
|
||||
use AlibabaCloud\Oss\V2\Crypto\MasterRsaCipher;
|
||||
use AlibabaCloud\Oss\V2\Crypto\Envelope;
|
||||
use AlibabaCloud\Oss\V2\Crypto\CipherData;
|
||||
use AlibabaCloud\Oss\V2\Crypto\AesCtr;
|
||||
|
||||
|
||||
class AesCtrCipherTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
const RSA_PUBLIC_KEY = <<<BBB
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCokfiAVXXf5ImFzKDw+XO/UByW
|
||||
6mse2QsIgz3ZwBtMNu59fR5zttSx+8fB7vR4CN3bTztrP9A6bjoN0FFnhlQ3vNJC
|
||||
5MFO1PByrE/MNd5AAfSVba93I6sx8NSk5MzUCA4NJzAUqYOEWGtGBcom6kEF6MmR
|
||||
1EKib1Id8hpooY5xaQIDAQAB
|
||||
-----END PUBLIC KEY-----
|
||||
BBB;
|
||||
|
||||
const RSA_PRIVATE_KEY = <<<BBB
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKiR+IBVdd/kiYXM
|
||||
oPD5c79QHJbqax7ZCwiDPdnAG0w27n19HnO21LH7x8Hu9HgI3dtPO2s/0DpuOg3Q
|
||||
UWeGVDe80kLkwU7U8HKsT8w13kAB9JVtr3cjqzHw1KTkzNQIDg0nMBSpg4RYa0YF
|
||||
yibqQQXoyZHUQqJvUh3yGmihjnFpAgMBAAECgYA49RmCQ14QyKevDfVTdvYlLmx6
|
||||
kbqgMbYIqk+7w611kxoCTMR9VMmJWgmk/Zic9mIAOEVbd7RkCdqT0E+xKzJJFpI2
|
||||
ZHjrlwb21uqlcUqH1Gn+wI+jgmrafrnKih0kGucavr/GFi81rXixDrGON9KBE0FJ
|
||||
cPVdc0XiQAvCBnIIAQJBANXu3htPH0VsSznfqcDE+w8zpoAJdo6S/p30tcjsDQnx
|
||||
l/jYV4FXpErSrtAbmI013VYkdJcghNSLNUXppfk2e8UCQQDJt5c07BS9i2SDEXiz
|
||||
byzqCfXVzkdnDj9ry9mba1dcr9B9NCslVelXDGZKvQUBqNYCVxg398aRfWlYDTjU
|
||||
IoVVAkAbTyjPN6R4SkC4HJMg5oReBmvkwFCAFsemBk0GXwuzD0IlJAjXnAZ+/rIO
|
||||
ItewfwXIL1Mqz53lO/gK+q6TR585AkB304KUIoWzjyF3JqLP3IQOxzns92u9EV6l
|
||||
V2P+CkbMPXiZV6sls6I4XppJXX2i3bu7iidN3/dqJ9izQK94fMU9AkBZvgsIPCot
|
||||
y1/POIbv9LtnviDKrmpkXgVQSU4BmTPvXwTJm8APC7P/horSh3SVf1zgmnsyjm9D
|
||||
hO92gGc+4ajL
|
||||
-----END PRIVATE KEY-----
|
||||
BBB;
|
||||
|
||||
public static function getDataPath(): string
|
||||
{
|
||||
return dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR .'Data';
|
||||
}
|
||||
|
||||
public function testCreateCipherData()
|
||||
{
|
||||
$cipher = new MasterRsaCipher(
|
||||
self::RSA_PUBLIC_KEY,
|
||||
self::RSA_PRIVATE_KEY,
|
||||
['key' => 'value']
|
||||
);
|
||||
$cipherBuider = new AesCtrCipherBuilder($cipher);
|
||||
$cihperData = $cipherBuider->createCipherData();
|
||||
$this->assertNotNull($cihperData);
|
||||
$this->assertEquals(16, strlen($cihperData->iv));
|
||||
$this->assertEquals(32, strlen($cihperData->key));
|
||||
$this->assertEquals(128, strlen($cihperData->encryptedIv));
|
||||
$this->assertEquals(128, strlen($cihperData->encryptedKey));
|
||||
$this->assertEquals('{"key":"value"}', $cihperData->matDesc);
|
||||
$this->assertEquals('RSA/NONE/PKCS1Padding', $cihperData->wrapAlgorithm);
|
||||
$this->assertEquals('AES/CTR/NoPadding', $cihperData->cekAlgorithm);
|
||||
}
|
||||
|
||||
public function testFromEnvelope()
|
||||
{
|
||||
$cipher = new MasterRsaCipher(
|
||||
self::RSA_PUBLIC_KEY,
|
||||
self::RSA_PRIVATE_KEY,
|
||||
['key' => 'value']
|
||||
);
|
||||
$cipherBuider = new AesCtrCipherBuilder($cipher);
|
||||
$envelope = new Envelope(
|
||||
'De/S3T8wFjx7QPxAAFl7h7TeI2EsZlfCwox4WhLGng5DK2vNXxULmulMUUpYkdc9umqmDilgSy5Z3Foafw+v4JJThfw68T/9G2gxZLrQTbAlvFPFfPM9Ehk6cY4+8WpY32uN8w5vrHyoSZGr343NxCUGIp6fQ9sSuOLMoJg7hNw=',
|
||||
'nyXOp7delQ/MQLjKQMhHLaT0w7u2yQoDLkSnK8MFg/MwYdh4na4/LS8LLbLcM18m8I/ObWUHU775I50sJCpdv+f4e0jLeVRRiDFWe+uo7Puc9j4xHj8YB3QlcIOFQiTxHIB6q+C+RA6lGwqqYVa+n3aV5uWhygyv1MWmESurppg=',
|
||||
'AES/CTR/NoPadding',
|
||||
|
||||
);
|
||||
|
||||
|
||||
$cihperData = $cipherBuider->createCipherData();
|
||||
$this->assertNotNull($cihperData);
|
||||
$this->assertEquals(16, strlen($cihperData->iv));
|
||||
$this->assertEquals(32, strlen($cihperData->key));
|
||||
$this->assertEquals(128, strlen($cihperData->encryptedIv));
|
||||
$this->assertEquals(128, strlen($cihperData->encryptedKey));
|
||||
$this->assertEquals('{"key":"value"}', $cihperData->matDesc);
|
||||
$this->assertEquals('RSA/NONE/PKCS1Padding', $cihperData->wrapAlgorithm);
|
||||
$this->assertEquals('AES/CTR/NoPadding', $cihperData->cekAlgorithm);
|
||||
}
|
||||
|
||||
public function testEncrypt()
|
||||
{
|
||||
$cipherMaster = new MasterRsaCipher(
|
||||
self::RSA_PUBLIC_KEY,
|
||||
self::RSA_PRIVATE_KEY,
|
||||
['key' => 'value']
|
||||
);
|
||||
$cipherBuider = new AesCtrCipherBuilder($cipherMaster);
|
||||
$base64_encrypted_key = 'nyXOp7delQ/MQLjKQMhHLaT0w7u2yQoDLkSnK8MFg/MwYdh4na4/LS8LLbLcM18m8I/ObWUHU775I50sJCpdv+f4e0jLeVRRiDFWe+uo7Puc9j4xHj8YB3QlcIOFQiTxHIB6q+C+RA6lGwqqYVa+n3aV5uWhygyv1MWmESurppg=';
|
||||
$base64_encrypted_iv = 'De/S3T8wFjx7QPxAAFl7h7TeI2EsZlfCwox4WhLGng5DK2vNXxULmulMUUpYkdc9umqmDilgSy5Z3Foafw+v4JJThfw68T/9G2gxZLrQTbAlvFPFfPM9Ehk6cY4+8WpY32uN8w5vrHyoSZGr343NxCUGIp6fQ9sSuOLMoJg7hNw=';
|
||||
$encrypted_key = base64_decode($base64_encrypted_key);
|
||||
$encrypted_iv = base64_decode($base64_encrypted_iv);
|
||||
|
||||
$key = $cipherMaster->decrypt($encrypted_key);
|
||||
$iv = $cipherMaster->decrypt($encrypted_iv);
|
||||
|
||||
$cipherData = new CipherData(
|
||||
$iv,
|
||||
$key,
|
||||
$encrypted_iv,
|
||||
$encrypted_key,
|
||||
'',
|
||||
'RSA/NONE/PKCS1Padding',
|
||||
'AES/CTR/NoPadding'
|
||||
);
|
||||
|
||||
$content = file_get_contents(self::getDataPath() . DIRECTORY_SEPARATOR . 'example.jpg');
|
||||
$enc_content = file_get_contents(self::getDataPath() . DIRECTORY_SEPARATOR . 'enc-example.jpg');
|
||||
|
||||
$cipher = new AesCtr($cipherData, 0);
|
||||
foreach([16, 32, 64]as $key => $step) {
|
||||
$total = 0;
|
||||
for ($i = 0; $i < strlen($content); $i += $step) {
|
||||
$data = substr($content, $i, $step);
|
||||
$edata_pat = substr($enc_content, $i, $step);
|
||||
$edata = $cipher->encrypt($data);
|
||||
$this->assertEquals($edata_pat, $edata);
|
||||
$total += strlen($edata);
|
||||
}
|
||||
|
||||
$this->assertEquals($total, strlen($content));
|
||||
$cipher->reset();
|
||||
}
|
||||
$cipher->reset();
|
||||
$this->assertEquals($enc_content, $cipher->encrypt($content));
|
||||
|
||||
|
||||
foreach([16, 32, 64] as $setp) {
|
||||
$total = 0;
|
||||
$cipher = new AesCtr($cipherData, 0);
|
||||
for ($i = 0; $i < strlen($content); $i += $setp) {
|
||||
$edata = substr($enc_content, $i, $setp);
|
||||
$data_pat = substr($content, $i, $setp);
|
||||
$dedata = $cipher->decrypt($edata);
|
||||
$this->assertEquals($data_pat, $dedata);
|
||||
$total += strlen($dedata);
|
||||
}
|
||||
$this->assertEquals($total, strlen($content));
|
||||
}
|
||||
$cipher = new AesCtr($cipherData, 0);
|
||||
$this->assertEquals($content, $cipher->decrypt($enc_content));
|
||||
}
|
||||
|
||||
public function testEncrypt2()
|
||||
{
|
||||
$cipherMaster = new MasterRsaCipher(
|
||||
self::RSA_PUBLIC_KEY,
|
||||
self::RSA_PRIVATE_KEY,
|
||||
['key' => 'value']
|
||||
);
|
||||
$cipherBuider = new AesCtrCipherBuilder($cipherMaster);
|
||||
$base64_encrypted_key = 'nyXOp7delQ/MQLjKQMhHLaT0w7u2yQoDLkSnK8MFg/MwYdh4na4/LS8LLbLcM18m8I/ObWUHU775I50sJCpdv+f4e0jLeVRRiDFWe+uo7Puc9j4xHj8YB3QlcIOFQiTxHIB6q+C+RA6lGwqqYVa+n3aV5uWhygyv1MWmESurppg=';
|
||||
$base64_encrypted_iv = 'De/S3T8wFjx7QPxAAFl7h7TeI2EsZlfCwox4WhLGng5DK2vNXxULmulMUUpYkdc9umqmDilgSy5Z3Foafw+v4JJThfw68T/9G2gxZLrQTbAlvFPFfPM9Ehk6cY4+8WpY32uN8w5vrHyoSZGr343NxCUGIp6fQ9sSuOLMoJg7hNw=';
|
||||
$encrypted_key = base64_decode($base64_encrypted_key);
|
||||
$encrypted_iv = base64_decode($base64_encrypted_iv);
|
||||
|
||||
$key = $cipherMaster->decrypt($encrypted_key);
|
||||
$iv = $cipherMaster->decrypt($encrypted_iv);
|
||||
|
||||
$cipherData = new CipherData(
|
||||
$iv,
|
||||
$key,
|
||||
$encrypted_iv,
|
||||
$encrypted_key,
|
||||
'',
|
||||
'RSA/NONE/PKCS1Padding',
|
||||
'AES/CTR/NoPadding'
|
||||
);
|
||||
|
||||
$content = file_get_contents(self::getDataPath() . DIRECTORY_SEPARATOR . 'example.jpg');
|
||||
$enc_content = file_get_contents(self::getDataPath() . DIRECTORY_SEPARATOR . 'enc-example.jpg');
|
||||
|
||||
$cipher = new AesCtr($cipherData, 0);
|
||||
foreach([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]as $key => $step) {
|
||||
$total = 0;
|
||||
for ($i = 0; $i < strlen($content); $i += $step) {
|
||||
$data = substr($content, $i, $step);
|
||||
$edata_pat = substr($enc_content, $i, $step);
|
||||
$edata = $cipher->encrypt($data);
|
||||
$this->assertEquals($edata_pat, $edata);
|
||||
$total += strlen($edata);
|
||||
}
|
||||
|
||||
$this->assertEquals($total, strlen($content));
|
||||
$cipher->reset();
|
||||
}
|
||||
$cipher->reset();
|
||||
$this->assertEquals($enc_content, $cipher->encrypt($content));
|
||||
|
||||
foreach([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18] as $setp) {
|
||||
$total = 0;
|
||||
$cipher = new AesCtr($cipherData, 0);
|
||||
for ($i = 0; $i < strlen($content); $i += $setp) {
|
||||
$edata = substr($enc_content, $i, $setp);
|
||||
$data_pat = substr($content, $i, $setp);
|
||||
$dedata = $cipher->decrypt($edata);
|
||||
$this->assertEquals($data_pat, $dedata);
|
||||
$total += strlen($dedata);
|
||||
}
|
||||
$this->assertEquals($total, strlen($content));
|
||||
}
|
||||
$cipher = new AesCtr($cipherData, 0);
|
||||
$this->assertEquals($content, $cipher->decrypt($enc_content));
|
||||
|
||||
}
|
||||
}
|
||||
113
vendor/alibabacloud/oss-v2/tests/UnitTests/Crypto/MasterRsaCipherTest.php
vendored
Normal file
113
vendor/alibabacloud/oss-v2/tests/UnitTests/Crypto/MasterRsaCipherTest.php
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Crypto;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Crypto\MasterRsaCipher;
|
||||
|
||||
class MasterRsaCipherTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
const RSA_PUBLIC_KEY = <<<BBB
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCokfiAVXXf5ImFzKDw+XO/UByW
|
||||
6mse2QsIgz3ZwBtMNu59fR5zttSx+8fB7vR4CN3bTztrP9A6bjoN0FFnhlQ3vNJC
|
||||
5MFO1PByrE/MNd5AAfSVba93I6sx8NSk5MzUCA4NJzAUqYOEWGtGBcom6kEF6MmR
|
||||
1EKib1Id8hpooY5xaQIDAQAB
|
||||
-----END PUBLIC KEY-----
|
||||
BBB;
|
||||
|
||||
const RSA_PRIVATE_KEY = <<<BBB
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKiR+IBVdd/kiYXM
|
||||
oPD5c79QHJbqax7ZCwiDPdnAG0w27n19HnO21LH7x8Hu9HgI3dtPO2s/0DpuOg3Q
|
||||
UWeGVDe80kLkwU7U8HKsT8w13kAB9JVtr3cjqzHw1KTkzNQIDg0nMBSpg4RYa0YF
|
||||
yibqQQXoyZHUQqJvUh3yGmihjnFpAgMBAAECgYA49RmCQ14QyKevDfVTdvYlLmx6
|
||||
kbqgMbYIqk+7w611kxoCTMR9VMmJWgmk/Zic9mIAOEVbd7RkCdqT0E+xKzJJFpI2
|
||||
ZHjrlwb21uqlcUqH1Gn+wI+jgmrafrnKih0kGucavr/GFi81rXixDrGON9KBE0FJ
|
||||
cPVdc0XiQAvCBnIIAQJBANXu3htPH0VsSznfqcDE+w8zpoAJdo6S/p30tcjsDQnx
|
||||
l/jYV4FXpErSrtAbmI013VYkdJcghNSLNUXppfk2e8UCQQDJt5c07BS9i2SDEXiz
|
||||
byzqCfXVzkdnDj9ry9mba1dcr9B9NCslVelXDGZKvQUBqNYCVxg398aRfWlYDTjU
|
||||
IoVVAkAbTyjPN6R4SkC4HJMg5oReBmvkwFCAFsemBk0GXwuzD0IlJAjXnAZ+/rIO
|
||||
ItewfwXIL1Mqz53lO/gK+q6TR585AkB304KUIoWzjyF3JqLP3IQOxzns92u9EV6l
|
||||
V2P+CkbMPXiZV6sls6I4XppJXX2i3bu7iidN3/dqJ9izQK94fMU9AkBZvgsIPCot
|
||||
y1/POIbv9LtnviDKrmpkXgVQSU4BmTPvXwTJm8APC7P/horSh3SVf1zgmnsyjm9D
|
||||
hO92gGc+4ajL
|
||||
-----END PRIVATE KEY-----
|
||||
BBB;
|
||||
|
||||
const RSA_PUBLIC_KEY_PKS1 = <<<BBB
|
||||
'-----BEGIN RSA PUBLIC KEY-----
|
||||
MIGJAoGBAKiR+IBVdd/kiYXMoPD5c79QHJbqax7ZCwiDPdnAG0w27n19HnO21LH7
|
||||
x8Hu9HgI3dtPO2s/0DpuOg3QUWeGVDe80kLkwU7U8HKsT8w13kAB9JVtr3cjqzHw
|
||||
1KTkzNQIDg0nMBSpg4RYa0YFyibqQQXoyZHUQqJvUh3yGmihjnFpAgMBAAE=
|
||||
-----END RSA PUBLIC KEY-----
|
||||
BBB;
|
||||
|
||||
const RSA_PRIVATE_KEY_PKS1 = <<<BBB
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICWwIBAAKBgQCokfiAVXXf5ImFzKDw+XO/UByW6mse2QsIgz3ZwBtMNu59fR5z
|
||||
ttSx+8fB7vR4CN3bTztrP9A6bjoN0FFnhlQ3vNJC5MFO1PByrE/MNd5AAfSVba93
|
||||
I6sx8NSk5MzUCA4NJzAUqYOEWGtGBcom6kEF6MmR1EKib1Id8hpooY5xaQIDAQAB
|
||||
AoGAOPUZgkNeEMinrw31U3b2JS5sepG6oDG2CKpPu8OtdZMaAkzEfVTJiVoJpP2Y
|
||||
nPZiADhFW3e0ZAnak9BPsSsySRaSNmR465cG9tbqpXFKh9Rp/sCPo4Jq2n65yood
|
||||
JBrnGr6/xhYvNa14sQ6xjjfSgRNBSXD1XXNF4kALwgZyCAECQQDV7t4bTx9FbEs5
|
||||
36nAxPsPM6aACXaOkv6d9LXI7A0J8Zf42FeBV6RK0q7QG5iNNd1WJHSXIITUizVF
|
||||
6aX5NnvFAkEAybeXNOwUvYtkgxF4s28s6gn11c5HZw4/a8vZm2tXXK/QfTQrJVXp
|
||||
VwxmSr0FAajWAlcYN/fGkX1pWA041CKFVQJAG08ozzekeEpAuByTIOaEXgZr5MBQ
|
||||
gBbHpgZNBl8Lsw9CJSQI15wGfv6yDiLXsH8FyC9TKs+d5Tv4Cvquk0efOQJAd9OC
|
||||
lCKFs48hdyaiz9yEDsc57PdrvRFepVdj/gpGzD14mVerJbOiOF6aSV19ot27u4on
|
||||
Td/3aifYs0CveHzFPQJAWb4LCDwqLctfzziG7/S7Z74gyq5qZF4FUElOAZkz718E
|
||||
yZvADwuz/4aK0od0lX9c4Jp7Mo5vQ4TvdoBnPuGoyw==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
BBB;
|
||||
|
||||
public function testNormal()
|
||||
{
|
||||
$cipher = new MasterRsaCipher();
|
||||
$this->assertNotNull($cipher);
|
||||
$this->assertEquals('', $cipher->getMatDesc());
|
||||
$this->assertEquals('RSA/NONE/PKCS1Padding', $cipher->getWrapAlgorithm());
|
||||
|
||||
$cipher = new MasterRsaCipher(self::RSA_PUBLIC_KEY, self::RSA_PRIVATE_KEY, ['key' => 'value']);
|
||||
$this->assertNotNull($cipher);
|
||||
$this->assertEquals('{"key":"value"}', $cipher->getMatDesc());
|
||||
$this->assertEquals('RSA/NONE/PKCS1Padding', $cipher->getWrapAlgorithm());
|
||||
$data = 'hello world';
|
||||
$edata = $cipher->encrypt($data);
|
||||
$this->assertNotEquals($data, $edata);
|
||||
$eedata = $cipher->decrypt($edata);
|
||||
$this->assertEquals($data, $eedata);
|
||||
}
|
||||
|
||||
public function testFail()
|
||||
{
|
||||
try {
|
||||
$cipher = new MasterRsaCipher('RSA_PUBLIC_KEY', self::RSA_PRIVATE_KEY, ['key' => 'value']);
|
||||
$this->assertTrue(false, 'should not here');
|
||||
} catch (\Exception $e) {
|
||||
$this->assertStringContainsString('RSA key format is not supported', $e->getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
$cipher = new MasterRsaCipher(self::RSA_PUBLIC_KEY, 'RSA_PRIVATE_KEY', ['key' => 'value']);
|
||||
$this->assertTrue(false, 'should not here');
|
||||
} catch (\Exception $e) {
|
||||
$this->assertStringContainsString('RSA key format is not supported', $e->getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
$cipher = new MasterRsaCipher(null, null, null);
|
||||
$cipher->encrypt('hello world 123');
|
||||
$this->assertTrue(false, 'should not here');
|
||||
} catch (\Exception $e) {
|
||||
$this->assertStringContainsString('RSA public key is none or invalid', $e->getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
$cipher = new MasterRsaCipher(null, null, null);
|
||||
$cipher->decrypt('hello world 123');
|
||||
$this->assertTrue(false, 'should not here');
|
||||
} catch (\Exception $e) {
|
||||
$this->assertStringContainsString('RSA private key is none or invalid', $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
vendor/alibabacloud/oss-v2/tests/UnitTests/Crypto/enc-example.jpg
vendored
Normal file
BIN
vendor/alibabacloud/oss-v2/tests/UnitTests/Crypto/enc-example.jpg
vendored
Normal file
Binary file not shown.
BIN
vendor/alibabacloud/oss-v2/tests/UnitTests/Crypto/example.jpg
vendored
Normal file
BIN
vendor/alibabacloud/oss-v2/tests/UnitTests/Crypto/example.jpg
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
632
vendor/alibabacloud/oss-v2/tests/UnitTests/DeserializerTest.php
vendored
Normal file
632
vendor/alibabacloud/oss-v2/tests/UnitTests/DeserializerTest.php
vendored
Normal file
@@ -0,0 +1,632 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'BaiscTypeXml.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'BaiscTypeListXml.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'MixedTypeXml.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'MixedTypeListXml.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'BaiscTypeLackAnnotationXml.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'DatetimeTypeXml.php';
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'PutApiResult.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'PutApiBResult.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'RootConfiguration.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'SubConfiguration.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Deserializer;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
use AlibabaCloud\Oss\V2\Exception\DeserializationExecption;
|
||||
|
||||
use UnitTests\Fixtures\BaiscTypeXml;
|
||||
use UnitTests\Fixtures\BaiscTypeListXml;
|
||||
use UnitTests\Fixtures\MixedTypeXml;
|
||||
use UnitTests\Fixtures\MixedTypeListXml;
|
||||
use UnitTests\Fixtures\DatetimeTypeXml;
|
||||
use UnitTests\Fixtures\PutApiResult;
|
||||
use UnitTests\Fixtures\PutApiBResult;
|
||||
use UnitTests\Fixtures\RootConfiguration;
|
||||
use UnitTests\Fixtures\SubConfiguration;
|
||||
|
||||
|
||||
class DeserializerTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testDeserializeBaiscTypeXml()
|
||||
{
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<BasicType>
|
||||
<StrValue>id-124</StrValue>
|
||||
<IntValue>1234</IntValue>
|
||||
<BoolValue>true</BoolValue>
|
||||
<FloatValue>3.14</FloatValue>
|
||||
</BasicType>';
|
||||
|
||||
$xml = new BaiscTypeXml();
|
||||
Deserializer::deserializeXml($str, $xml);
|
||||
$this->assertTrue(\is_scalar($xml->strValue));
|
||||
$this->assertEquals('id-124', $xml->strValue);
|
||||
$this->assertEquals(1234, $xml->intValue);
|
||||
$this->assertEquals(true, $xml->boolValue);
|
||||
$this->assertEquals(3.14, $xml->floatValue);
|
||||
|
||||
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<BasicType>
|
||||
</BasicType>';
|
||||
|
||||
$xml = new BaiscTypeXml();
|
||||
Deserializer::deserializeXml($str, $xml);
|
||||
$this->assertFalse(isset($xml->StrValue));
|
||||
$this->assertFalse(isset($xml->IntValue));
|
||||
$this->assertFalse(isset($xml->BoolValue));
|
||||
$this->assertFalse(isset($xml->FloatValue));
|
||||
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<BasicType>
|
||||
<IntValue>1234</IntValue>
|
||||
<BoolValue>true</BoolValue>
|
||||
</BasicType>';
|
||||
|
||||
$xml = new BaiscTypeXml();
|
||||
Deserializer::deserializeXml($str, $xml);
|
||||
$this->assertFalse(isset($xml->StrValue));
|
||||
$this->assertEquals(1234, $xml->intValue);
|
||||
$this->assertEquals(true, $xml->boolValue);
|
||||
$this->assertFalse(isset($xml->FloatValue));
|
||||
}
|
||||
|
||||
public function testDeserializeBaiscTypeListXml(): void
|
||||
{
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<BasicTypeList>
|
||||
<StrValue>str1</StrValue>
|
||||
<StrValue>str2</StrValue>
|
||||
<IntValue>1234</IntValue>
|
||||
<IntValue>2234</IntValue>
|
||||
<BoolValue>true</BoolValue>
|
||||
<BoolValue>true</BoolValue>
|
||||
<BoolValue>false</BoolValue>
|
||||
<FloatValue>3.14</FloatValue>
|
||||
</BasicTypeList>';
|
||||
$xml = new BaiscTypeListXml();
|
||||
Deserializer::deserializeXml($str, $xml);
|
||||
$this->assertEquals(2, count($xml->strValues));
|
||||
$this->assertEquals('str1', $xml->strValues[0]);
|
||||
$this->assertEquals('str2', $xml->strValues[1]);
|
||||
$this->assertEquals(2, count($xml->intValues));
|
||||
$this->assertEquals(1234, $xml->intValues[0]);
|
||||
$this->assertEquals(2234, $xml->intValues[1]);
|
||||
$this->assertEquals(3, count($xml->boolValues));
|
||||
$this->assertEquals(true, $xml->boolValues[0]);
|
||||
$this->assertEquals(true, $xml->boolValues[1]);
|
||||
$this->assertEquals(false, $xml->boolValues[2]);
|
||||
$this->assertTrue(\is_array($xml->floatValues));
|
||||
$this->assertEquals(1, count($xml->floatValues));
|
||||
$this->assertEquals('3.14', $xml->floatValues[0]);
|
||||
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<BasicTypeList>
|
||||
</BasicTypeList>';
|
||||
|
||||
$xml = new BaiscTypeListXml();
|
||||
Deserializer::deserializeXml($str, $xml);
|
||||
$this->assertFalse(isset($xml->strValues));
|
||||
$this->assertFalse(isset($xml->intValues));
|
||||
$this->assertFalse(isset($xml->boolValues));
|
||||
$this->assertFalse(isset($xml->floatValues));
|
||||
}
|
||||
|
||||
public function testDeserializeDateTimeTypeXml()
|
||||
{
|
||||
$date = new \DateTime();
|
||||
$date->setTimestamp(1702783809);
|
||||
$date1 = new \DateTimeImmutable();
|
||||
$date1 = $date1->setTimestamp(1702783819);
|
||||
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<DatetimeType>
|
||||
<DateTimeValue>2023-12-17T03:30:09Z</DateTimeValue>
|
||||
<UnixtimeValue>1702783809</UnixtimeValue>
|
||||
<HttptimeValue>Sun, 17 Dec 2023 03:30:09 GMT</HttptimeValue>
|
||||
</DatetimeType>';
|
||||
$xml = new DatetimeTypeXml();
|
||||
Deserializer::deserializeXml($str, $xml);
|
||||
$this->assertEquals($date, $xml->isotimeValue);
|
||||
$this->assertFalse(isset($xml->dateTimeImmutableValue));
|
||||
$this->assertEquals($date, $xml->unixtimeValue);
|
||||
$this->assertEquals($date, $xml->httptimeValue);
|
||||
}
|
||||
|
||||
public function testDeserializeMixedTypeXml(): void
|
||||
{
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MixedType>
|
||||
<StrValue>str-111</StrValue>
|
||||
<IntValue>12</IntValue>
|
||||
<BasicTypeFiled>
|
||||
<StrValue>str</StrValue>
|
||||
<IntValue>123</IntValue>
|
||||
<BoolValue>true</BoolValue>
|
||||
<FloatValue>1.14</FloatValue>
|
||||
</BasicTypeFiled>
|
||||
<BasicTypeListFiled>
|
||||
<StrValue>str1</StrValue>
|
||||
<StrValue>str2</StrValue>
|
||||
<IntValue>1234</IntValue>
|
||||
<IntValue>2234</IntValue>
|
||||
<BoolValue>true</BoolValue>
|
||||
<BoolValue>true</BoolValue>
|
||||
<BoolValue>false</BoolValue>
|
||||
<FloatValue>3.14</FloatValue>
|
||||
</BasicTypeListFiled>
|
||||
</MixedType>';
|
||||
|
||||
$xml = new MixedTypeXml();
|
||||
Deserializer::deserializeXml($str, $xml);
|
||||
$this->assertEquals('str-111', $xml->strValue);
|
||||
$this->assertEquals(12, $xml->intValue);
|
||||
|
||||
$this->assertEquals('str', $xml->xmlValue->strValue);
|
||||
$this->assertEquals(123, $xml->xmlValue->intValue);
|
||||
$this->assertEquals(true, $xml->xmlValue->boolValue);
|
||||
$this->assertEquals(1.14, $xml->xmlValue->floatValue);
|
||||
|
||||
$this->assertEquals(2, count($xml->xmlListValue->strValues));
|
||||
$this->assertEquals('str1', $xml->xmlListValue->strValues[0]);
|
||||
$this->assertEquals('str2', $xml->xmlListValue->strValues[1]);
|
||||
$this->assertEquals(2, count($xml->xmlListValue->intValues));
|
||||
$this->assertEquals(1234, $xml->xmlListValue->intValues[0]);
|
||||
$this->assertEquals(2234, $xml->xmlListValue->intValues[1]);
|
||||
$this->assertEquals(3, count($xml->xmlListValue->boolValues));
|
||||
$this->assertEquals(true, $xml->xmlListValue->boolValues[0]);
|
||||
$this->assertEquals(true, $xml->xmlListValue->boolValues[1]);
|
||||
$this->assertEquals(false, $xml->xmlListValue->boolValues[2]);
|
||||
$this->assertEquals(1, count($xml->xmlListValue->floatValues));
|
||||
$this->assertEquals('3.14', $xml->xmlListValue->floatValues[0]);
|
||||
}
|
||||
|
||||
public function testDeserializeMixedTypeListXml(): void
|
||||
{
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MixedTypeList>
|
||||
<StrValue>str-111</StrValue>
|
||||
<IntValue>12</IntValue>
|
||||
<BasicTypeFiled>
|
||||
<StrValue>str</StrValue>
|
||||
<IntValue>123</IntValue>
|
||||
<BoolValue>true</BoolValue>
|
||||
<FloatValue>1.14</FloatValue>
|
||||
</BasicTypeFiled>
|
||||
<BasicTypeFiled>
|
||||
<StrValue>str-1</StrValue>
|
||||
<IntValue>223</IntValue>
|
||||
<BoolValue>false</BoolValue>
|
||||
</BasicTypeFiled>
|
||||
</MixedTypeList>';
|
||||
|
||||
$xml = new MixedTypeListXml();
|
||||
Deserializer::deserializeXml($str, $xml);
|
||||
|
||||
$this->assertEquals('str-111', $xml->strValue);
|
||||
$this->assertEquals(12, $xml->intValue);
|
||||
$this->assertTrue(\is_array($xml->xmlValues));
|
||||
$this->assertEquals(2, count($xml->xmlValues));
|
||||
$this->assertEquals('str', $xml->xmlValues[0]->strValue);
|
||||
$this->assertEquals(123, $xml->xmlValues[0]->intValue);
|
||||
$this->assertEquals(true, $xml->xmlValues[0]->boolValue);
|
||||
$this->assertEquals(1.14, $xml->xmlValues[0]->floatValue);
|
||||
|
||||
$this->assertEquals('str-1', $xml->xmlValues[1]->strValue);
|
||||
$this->assertEquals(223, $xml->xmlValues[1]->intValue);
|
||||
$this->assertEquals(false, $xml->xmlValues[1]->boolValue);
|
||||
$this->assertFalse(isset($xml->xmlValues[1]->floatValue));
|
||||
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MixedTypeList>
|
||||
<StrValue>str-111</StrValue>
|
||||
<IntValue>12</IntValue>
|
||||
<BasicTypeFiled>
|
||||
<StrValue>str</StrValue>
|
||||
<IntValue>123</IntValue>
|
||||
<BoolValue>true</BoolValue>
|
||||
<FloatValue>1.14</FloatValue>
|
||||
</BasicTypeFiled>
|
||||
</MixedTypeList>';
|
||||
|
||||
$xml = new MixedTypeListXml();
|
||||
Deserializer::deserializeXml($str, $xml);
|
||||
|
||||
$this->assertEquals('str-111', $xml->strValue);
|
||||
$this->assertEquals(12, $xml->intValue);
|
||||
$this->assertTrue(\is_array($xml->xmlValues));
|
||||
$this->assertEquals(1, count($xml->xmlValues));
|
||||
$this->assertEquals('str', $xml->xmlValues[0]->strValue);
|
||||
$this->assertEquals(123, $xml->xmlValues[0]->intValue);
|
||||
$this->assertEquals(true, $xml->xmlValues[0]->boolValue);
|
||||
$this->assertEquals(1.14, $xml->xmlValues[0]->floatValue);
|
||||
}
|
||||
|
||||
public function testDeserializeCheckXmlRoot(): void
|
||||
{
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Root>
|
||||
<StrValue>str-111</StrValue>
|
||||
<IntValue>12</IntValue>
|
||||
<BasicTypeFiled>
|
||||
<StrValue>str</StrValue>
|
||||
<IntValue>123</IntValue>
|
||||
<BoolValue>true</BoolValue>
|
||||
<FloatValue>1.14</FloatValue>
|
||||
</BasicTypeFiled>
|
||||
<BasicTypeFiled>
|
||||
<StrValue>str-1</StrValue>
|
||||
<IntValue>223</IntValue>
|
||||
<BoolValue>false</BoolValue>
|
||||
</BasicTypeFiled>
|
||||
</Root>';
|
||||
|
||||
$xml = new MixedTypeListXml();
|
||||
|
||||
try {
|
||||
Deserializer::deserializeXml($str, $xml, 'MixedTypeList');
|
||||
$this->assertTrue(false, "shoud not here");
|
||||
} catch (DeserializationExecption $e) {
|
||||
$this->assertStringContainsString("Deserialization raised an exception: Not found tag <MixedTypeList>", (string)$e);
|
||||
} catch (\Exception $e) {
|
||||
$this->assertTrue(false, "shoud not here");
|
||||
}
|
||||
}
|
||||
|
||||
public function testDeserializeInvalidXml(): void
|
||||
{
|
||||
$str = 'invalid xml';
|
||||
|
||||
$xml = new MixedTypeListXml();
|
||||
|
||||
try {
|
||||
Deserializer::deserializeXml($str, $xml, 'MixedTypeList');
|
||||
$this->assertTrue(false, "shoud not here");
|
||||
} catch (DeserializationExecption $e) {
|
||||
$this->assertStringContainsString("Deserialization raised an exception: Error parsing XML: part data ", (string)$e);
|
||||
} catch (\Exception $e) {
|
||||
$this->assertTrue(false, "shoud not here");
|
||||
}
|
||||
}
|
||||
|
||||
public function testDeserializeOutputCommon(): void
|
||||
{
|
||||
$output = new OperationOutput();
|
||||
$result = new PutApiResult();
|
||||
Deserializer::deserializeOutput($result, $output);
|
||||
$this->assertEquals('', $result->getStatus());
|
||||
$this->assertEquals(0, $result->getStatusCode());
|
||||
$this->assertEquals('', $result->getRequestId());
|
||||
$this->assertEquals(0, count($result->getHeaders()));
|
||||
|
||||
$output = new OperationOutput(
|
||||
status: 'OK',
|
||||
statusCode: 200,
|
||||
headers: ['x-oss-request-id' => '123', 'content-type' => 'test']
|
||||
);
|
||||
$result = new PutApiResult();
|
||||
Deserializer::deserializeOutput($result, $output);
|
||||
$this->assertEquals('OK', $result->getStatus());
|
||||
$this->assertEquals(200, $result->getStatusCode());
|
||||
$this->assertEquals('123', $result->getRequestId());
|
||||
$this->assertEquals(2, count($result->getHeaders()));
|
||||
$this->assertEquals('test', $result->getHeaders()['content-type']);
|
||||
$this->assertEquals('123', $result->getHeaders()['x-oss-request-id']);
|
||||
|
||||
$output = new OperationOutput(
|
||||
status: 'OK',
|
||||
statusCode: 203,
|
||||
headers: ['content-type' => 'test']
|
||||
);
|
||||
$result = new PutApiResult();
|
||||
Deserializer::deserializeOutput($result, $output);
|
||||
$this->assertEquals('OK', $result->getStatus());
|
||||
$this->assertEquals(203, $result->getStatusCode());
|
||||
$this->assertEquals('', $result->getRequestId());
|
||||
$this->assertEquals(1, count($result->getHeaders()));
|
||||
$this->assertEquals('test', $result->getHeaders()['content-type']);
|
||||
}
|
||||
|
||||
public function testDeserializeOutputHeaderTag(): void
|
||||
{
|
||||
// normal header
|
||||
$output = new OperationOutput(
|
||||
status: 'OK',
|
||||
statusCode: 200,
|
||||
headers: [
|
||||
'x-oss-request-id' => '123',
|
||||
'content-type' => 'test',
|
||||
'x-oss-str' => 'str-1',
|
||||
'x-oss-int' => '123',
|
||||
'x-oss-bool' => 'false',
|
||||
'x-oss-float' => '3.5',
|
||||
'x-oss-isotime' => '2023-12-17T03:30:09Z',
|
||||
'x-oss-httptime' => 'Sun, 17 Dec 2023 03:30:09 GMT',
|
||||
'x-oss-unixtime' => '1702783809',
|
||||
],
|
||||
);
|
||||
$date = new \DateTime();
|
||||
$date->setTimestamp(1702783809);
|
||||
$result = new PutApiResult();
|
||||
$customDeserializer = [
|
||||
[Deserializer::class, 'deserializeOutputHeaders'],
|
||||
];
|
||||
Deserializer::deserializeOutput($result, $output, $customDeserializer);
|
||||
$this->assertEquals('OK', $result->getStatus());
|
||||
$this->assertEquals(200, $result->getStatusCode());
|
||||
$this->assertEquals('123', $result->getRequestId());
|
||||
$this->assertEquals(9, count($result->getHeaders()));
|
||||
|
||||
$this->assertEquals('str-1', $result->getStrHeader());
|
||||
$this->assertEquals(123, $result->getIntHeader());
|
||||
$this->assertEquals(false, $result->getBoolHeader());
|
||||
$this->assertEquals(3.5, $result->getFloatHeader());
|
||||
$this->assertEquals($date, $result->getIsotimeHeader());
|
||||
$this->assertEquals($date, $result->getHttptimeHeader());
|
||||
$this->assertEquals($date, $result->getUnixtimeHeader());
|
||||
|
||||
// header array
|
||||
// normal header
|
||||
$output = new OperationOutput(
|
||||
status: 'OK',
|
||||
statusCode: 200,
|
||||
headers: [
|
||||
'x-oss-request-id' => '123',
|
||||
'x-oss-str' => 'str-1',
|
||||
'x-oss-int' => '123',
|
||||
'x-oss-prefix-str1' => '123-1',
|
||||
'x-oss-prefix-str2' => '123-2',
|
||||
'x-oss-prefix-str3' => '123-3',
|
||||
],
|
||||
);
|
||||
$date = new \DateTime();
|
||||
$date->setTimestamp(1702783809);
|
||||
$result = new PutApiResult();
|
||||
$customDeserializer = [
|
||||
[Deserializer::class, 'deserializeOutputHeaders'],
|
||||
];
|
||||
Deserializer::deserializeOutput($result, $output, $customDeserializer);
|
||||
$this->assertEquals('OK', $result->getStatus());
|
||||
$this->assertEquals(200, $result->getStatusCode());
|
||||
$this->assertEquals('123', $result->getRequestId());
|
||||
$this->assertEquals(6, count($result->getHeaders()));
|
||||
|
||||
$this->assertEquals('str-1', $result->getStrHeader());
|
||||
$this->assertEquals(123, $result->getIntHeader());
|
||||
$this->assertEquals(null, $result->getBoolHeader());
|
||||
$this->assertEquals(null, $result->getFloatHeader());
|
||||
$this->assertEquals(null, $result->getIsotimeHeader());
|
||||
$this->assertEquals(null, $result->getHttptimeHeader());
|
||||
$this->assertEquals(null, $result->getUnixtimeHeader());
|
||||
|
||||
$this->assertEquals(3, count($result->getArrayHeader()));
|
||||
$this->assertEquals('123-1', $result->getArrayHeader()['str1']);
|
||||
$this->assertEquals('123-2', $result->getArrayHeader()['str2']);
|
||||
$this->assertEquals('123-3', $result->getArrayHeader()['str3']);
|
||||
}
|
||||
|
||||
public function testDeserializeOutputBodyXml(): void
|
||||
{
|
||||
// null body
|
||||
$output = new OperationOutput(
|
||||
status: 'OK',
|
||||
statusCode: 200,
|
||||
headers: [
|
||||
'x-oss-request-id' => '123',
|
||||
'content-type' => 'test',
|
||||
],
|
||||
);
|
||||
$result = new PutApiResult();
|
||||
$customDeserializer = [
|
||||
[Deserializer::class, 'deserializeOutputBody'],
|
||||
];
|
||||
Deserializer::deserializeOutput($result, $output, $customDeserializer);
|
||||
$this->assertEquals('OK', $result->getStatus());
|
||||
$this->assertEquals(200, $result->getStatusCode());
|
||||
$this->assertEquals('123', $result->getRequestId());
|
||||
$this->assertEquals(2, count($result->getHeaders()));
|
||||
$this->assertEquals(null, $result->getConfiguration());
|
||||
|
||||
//empty body
|
||||
$output = new OperationOutput(
|
||||
status: 'OK',
|
||||
statusCode: 200,
|
||||
headers: [
|
||||
'x-oss-request-id' => '123',
|
||||
'content-type' => 'test',
|
||||
],
|
||||
body: Utils::streamFor(''),
|
||||
);
|
||||
$result = new PutApiResult();
|
||||
$customDeserializer = [
|
||||
[Deserializer::class, 'deserializeOutputBody'],
|
||||
];
|
||||
Deserializer::deserializeOutput($result, $output, $customDeserializer);
|
||||
$this->assertEquals('OK', $result->getStatus());
|
||||
$this->assertEquals(200, $result->getStatusCode());
|
||||
$this->assertEquals('123', $result->getRequestId());
|
||||
$this->assertEquals(2, count($result->getHeaders()));
|
||||
$this->assertEquals(null, $result->getConfiguration());
|
||||
|
||||
//xml
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Configuration>
|
||||
<Id>str1</Id>
|
||||
<Text>str2</Text>
|
||||
<SubConfiguration>
|
||||
<StrField>str-sub</StrField>
|
||||
<IntField>1234</IntField>
|
||||
</SubConfiguration>
|
||||
</Configuration>';
|
||||
|
||||
$output = new OperationOutput(
|
||||
status: 'OK',
|
||||
statusCode: 200,
|
||||
headers: [
|
||||
'x-oss-request-id' => '123',
|
||||
'content-type' => 'test',
|
||||
],
|
||||
body: Utils::streamFor($str),
|
||||
);
|
||||
$result = new PutApiResult();
|
||||
$customDeserializer = [
|
||||
[Deserializer::class, 'deserializeOutputBody'],
|
||||
];
|
||||
Deserializer::deserializeOutput($result, $output, $customDeserializer);
|
||||
$this->assertEquals('OK', $result->getStatus());
|
||||
$this->assertEquals(200, $result->getStatusCode());
|
||||
$this->assertEquals('123', $result->getRequestId());
|
||||
$this->assertEquals(2, count($result->getHeaders()));
|
||||
$this->assertInstanceOf(RootConfiguration::class, $result->getConfiguration());
|
||||
$this->assertEquals('str1', $result->getConfiguration()->getId());
|
||||
$this->assertEquals('str2', $result->getConfiguration()->getText());
|
||||
$this->assertEquals('str-sub', $result->getConfiguration()->getSubConfiguration()[0]->getStrField());
|
||||
$this->assertEquals(1234, $result->getConfiguration()->getSubConfiguration()[0]->getIntField());
|
||||
|
||||
//xml tag not match
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<RootConfiguration>
|
||||
<Id>str1</Id>
|
||||
<Text>str2</Text>
|
||||
<SubConfiguration>
|
||||
<StrField>str-sub</StrField>
|
||||
<IntField>1234</IntField>
|
||||
</SubConfiguration>
|
||||
</RootConfiguration>';
|
||||
|
||||
$output = new OperationOutput(
|
||||
status: 'OK',
|
||||
statusCode: 200,
|
||||
headers: [
|
||||
'x-oss-request-id' => '123',
|
||||
'content-type' => 'test',
|
||||
],
|
||||
body: Utils::streamFor($str),
|
||||
);
|
||||
$result = new PutApiResult();
|
||||
$customDeserializer = [
|
||||
[Deserializer::class, 'deserializeOutputBody'],
|
||||
];
|
||||
|
||||
try {
|
||||
Deserializer::deserializeOutput($result, $output, $customDeserializer);
|
||||
$this->assertTrue(false, "shoud not here");
|
||||
} catch (DeserializationExecption $e) {
|
||||
$this->assertStringContainsString("Deserialization raised an exception: Not found tag <Configuration>", (string)$e);
|
||||
} catch (\Exception $e) {
|
||||
$this->assertTrue(false, "shoud not here");
|
||||
}
|
||||
}
|
||||
|
||||
public function testDeserializeOutputHeaderBodyTag(): void
|
||||
{
|
||||
//xml
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Configuration>
|
||||
<Id>str1</Id>
|
||||
<Text>str2</Text>
|
||||
<SubConfiguration>
|
||||
<StrField>str-sub</StrField>
|
||||
<IntField>1234</IntField>
|
||||
</SubConfiguration>
|
||||
</Configuration>';
|
||||
$date = new \DateTime();
|
||||
$date->setTimestamp(1702783809);
|
||||
$output = new OperationOutput(
|
||||
status: 'OK',
|
||||
statusCode: 200,
|
||||
headers: [
|
||||
'x-oss-request-id' => '123',
|
||||
'content-type' => 'test',
|
||||
'x-oss-str' => 'str-1',
|
||||
'x-oss-int' => '123',
|
||||
'x-oss-bool' => 'false',
|
||||
'x-oss-float' => '3.5',
|
||||
'x-oss-isotime' => '2023-12-17T03:30:09Z',
|
||||
'x-oss-httptime' => 'Sun, 17 Dec 2023 03:30:09 GMT',
|
||||
'x-oss-unixtime' => '1702783809',
|
||||
],
|
||||
body: Utils::streamFor($str),
|
||||
);
|
||||
|
||||
$result = new PutApiResult();
|
||||
$customDeserializer = [
|
||||
[Deserializer::class, 'deserializeOutputHeaders'],
|
||||
[Deserializer::class, 'deserializeOutputBody'],
|
||||
];
|
||||
Deserializer::deserializeOutput($result, $output, $customDeserializer);
|
||||
$this->assertEquals('OK', $result->getStatus());
|
||||
$this->assertEquals(200, $result->getStatusCode());
|
||||
$this->assertEquals('123', $result->getRequestId());
|
||||
$this->assertEquals(9, count($result->getHeaders()));
|
||||
|
||||
$this->assertEquals('str-1', $result->getStrHeader());
|
||||
$this->assertEquals(123, $result->getIntHeader());
|
||||
$this->assertEquals(false, $result->getBoolHeader());
|
||||
$this->assertEquals(3.5, $result->getFloatHeader());
|
||||
$this->assertEquals($date, $result->getIsotimeHeader());
|
||||
$this->assertEquals($date, $result->getHttptimeHeader());
|
||||
$this->assertEquals($date, $result->getUnixtimeHeader());
|
||||
|
||||
$this->assertInstanceOf(RootConfiguration::class, $result->getConfiguration());
|
||||
$this->assertEquals('str1', $result->getConfiguration()->getId());
|
||||
$this->assertEquals('str2', $result->getConfiguration()->getText());
|
||||
$this->assertEquals('str-sub', $result->getConfiguration()->getSubConfiguration()[0]->getStrField());
|
||||
$this->assertEquals(1234, $result->getConfiguration()->getSubConfiguration()[0]->getIntField());
|
||||
}
|
||||
|
||||
public function testDeserializeOutputBodyXmlElement(): void
|
||||
{
|
||||
//xml
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Configuration>
|
||||
<Id>str1</Id>
|
||||
<Text>str2</Text>
|
||||
<SubConfiguration>
|
||||
<StrField>str-sub</StrField>
|
||||
<IntField>1234</IntField>
|
||||
</SubConfiguration>
|
||||
</Configuration>';
|
||||
$date = new \DateTime();
|
||||
$date->setTimestamp(1702783809);
|
||||
$output = new OperationOutput(
|
||||
status: 'OK',
|
||||
statusCode: 200,
|
||||
headers: [
|
||||
'x-oss-request-id' => '123',
|
||||
'content-type' => 'test',
|
||||
'x-oss-str' => 'str-1',
|
||||
'x-oss-int' => '123',
|
||||
'x-oss-bool' => 'false',
|
||||
'x-oss-float' => '3.5',
|
||||
],
|
||||
body: Utils::streamFor($str),
|
||||
);
|
||||
|
||||
$result = new PutApiBResult();
|
||||
$customDeserializer = [
|
||||
[Deserializer::class, 'deserializeOutputHeaders'],
|
||||
[Deserializer::class, 'deserializeOutputInnerBody'],
|
||||
];
|
||||
Deserializer::deserializeOutput($result, $output, $customDeserializer);
|
||||
$this->assertEquals('OK', $result->getStatus());
|
||||
$this->assertEquals(200, $result->getStatusCode());
|
||||
$this->assertEquals('123', $result->getRequestId());
|
||||
$this->assertEquals(6, count($result->getHeaders()));
|
||||
|
||||
$this->assertEquals('str-1', $result->getStrHeader());
|
||||
$this->assertEquals(123, $result->getIntHeader());
|
||||
$this->assertEquals(false, $result->getBoolHeader());
|
||||
$this->assertEquals(3.5, $result->getFloatHeader());
|
||||
|
||||
$this->assertEquals('str1', $result->getId());
|
||||
$this->assertEquals('str2', $result->getText());
|
||||
$this->assertEquals('str-sub', $result->getSubConfiguration()[0]->getStrField());
|
||||
$this->assertEquals(1234, $result->getSubConfiguration()[0]->getIntField());
|
||||
}
|
||||
}
|
||||
15
vendor/alibabacloud/oss-v2/tests/UnitTests/Exception/ExceptionTest.php
vendored
Normal file
15
vendor/alibabacloud/oss-v2/tests/UnitTests/Exception/ExceptionTest.php
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Exception;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Exception\OperationException;
|
||||
|
||||
class ExceptionTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testOperationException()
|
||||
{
|
||||
$e = new OperationException('GetBucketAcl', new \InvalidArgumentException('abc is invalid'));
|
||||
$this->assertNotNull($e);
|
||||
$this->assertEquals('Operation error GetBucketAcl: abc is invalid', $e->getMessage());
|
||||
}
|
||||
}
|
||||
32
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/BaiscTypeLackAnnotationXml.php
vendored
Normal file
32
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/BaiscTypeLackAnnotationXml.php
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Types\Model;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlElement;
|
||||
|
||||
|
||||
class BaiscTypeLackAnnotationXml extends Model
|
||||
{
|
||||
#[XmlElement(rename:'StrValue', type: 'string')]
|
||||
public ?string $strValue;
|
||||
|
||||
#[XmlElement(rename:'IntValue', type: 'int')]
|
||||
public ?int $intValue;
|
||||
|
||||
public ?bool $boolValue;
|
||||
|
||||
public ?float $floatValue;
|
||||
|
||||
public function __construct(
|
||||
?string $strValue = null,
|
||||
?int $intValue = null,
|
||||
?bool $boolValue = null,
|
||||
?float $floatValue = null
|
||||
) {
|
||||
$this->strValue = $strValue;
|
||||
$this->intValue = $intValue;
|
||||
$this->boolValue = $boolValue;
|
||||
$this->floatValue = $floatValue;
|
||||
}
|
||||
}
|
||||
36
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/BaiscTypeListXml.php
vendored
Normal file
36
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/BaiscTypeListXml.php
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Types\Model;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlElement;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlRoot;
|
||||
|
||||
|
||||
#[XmlRoot(name:'BasicTypeList')]
|
||||
class BaiscTypeListXml extends Model
|
||||
{
|
||||
#[XmlElement(rename:'StrValue', type: 'string')]
|
||||
public ?array $strValues;
|
||||
|
||||
#[XmlElement(rename:'IntValue', type: 'int')]
|
||||
public ?array $intValues;
|
||||
|
||||
#[XmlElement(rename:'BoolValue', type: 'bool')]
|
||||
public ?array $boolValues;
|
||||
|
||||
#[XmlElement(rename:'FloatValue', type: 'float')]
|
||||
public ?array $floatValues;
|
||||
|
||||
public function __construct(
|
||||
?array $strValues = null,
|
||||
?array $intValues = null,
|
||||
?array $boolValues = null,
|
||||
?array $floatValues = null
|
||||
) {
|
||||
$this->strValues = $strValues;
|
||||
$this->intValues = $intValues;
|
||||
$this->boolValues = $boolValues;
|
||||
$this->floatValues = $floatValues;
|
||||
}
|
||||
}
|
||||
36
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/BaiscTypeXml.php
vendored
Normal file
36
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/BaiscTypeXml.php
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Types\Model;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlElement;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlRoot;
|
||||
|
||||
|
||||
#[XmlRoot(name:'BasicType')]
|
||||
class BaiscTypeXml extends Model
|
||||
{
|
||||
#[XmlElement(rename:'StrValue', type: 'string')]
|
||||
public ?string $strValue;
|
||||
|
||||
#[XmlElement(rename:'IntValue', type: 'int')]
|
||||
public ?int $intValue;
|
||||
|
||||
#[XmlElement(rename:'BoolValue', type: 'bool')]
|
||||
public ?bool $boolValue;
|
||||
|
||||
#[XmlElement(rename:'FloatValue', type: 'float')]
|
||||
public ?float $floatValue;
|
||||
|
||||
public function __construct(
|
||||
?string $strValue = null,
|
||||
?int $intValue = null,
|
||||
?bool $boolValue = null,
|
||||
?float $floatValue = null
|
||||
) {
|
||||
$this->strValue = $strValue;
|
||||
$this->intValue = $intValue;
|
||||
$this->boolValue = $boolValue;
|
||||
$this->floatValue = $floatValue;
|
||||
}
|
||||
}
|
||||
36
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/DatetimeTypeXml.php
vendored
Normal file
36
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/DatetimeTypeXml.php
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Types\Model;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlElement;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlRoot;
|
||||
|
||||
|
||||
#[XmlRoot(name:'DatetimeType')]
|
||||
class DatetimeTypeXml extends Model
|
||||
{
|
||||
#[XmlElement(rename:'DateTimeValue', type: 'DateTime')]
|
||||
public ?\DateTime $isotimeValue;
|
||||
|
||||
#[XmlElement(rename:'DateTimeImmutableValue', type: 'DateTimeImmutable')]
|
||||
public ?\DateTimeImmutable $dateTimeImmutableValue;
|
||||
|
||||
#[XmlElement(rename:'UnixtimeValue', type: 'DateTime', format: 'unixtime')]
|
||||
public ?\DateTime $unixtimeValue;
|
||||
|
||||
#[XmlElement(rename:'HttptimeValue', type: 'DateTime', format: 'httptime')]
|
||||
public ?\DateTime $httptimeValue;
|
||||
|
||||
public function __construct(
|
||||
?\DateTime $isotimeValue = null,
|
||||
?\DateTimeImmutable $dateTimeImmutableValue = null,
|
||||
?\DateTime $unixtimeValue = null,
|
||||
?\DateTime $httptimeValue = null
|
||||
) {
|
||||
$this->isotimeValue = $isotimeValue;
|
||||
$this->dateTimeImmutableValue = $dateTimeImmutableValue;
|
||||
$this->unixtimeValue = $unixtimeValue;
|
||||
$this->httptimeValue = $httptimeValue;
|
||||
}
|
||||
}
|
||||
30
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/MixedTypeListXml.php
vendored
Normal file
30
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/MixedTypeListXml.php
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Types\Model;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlElement;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlRoot;
|
||||
|
||||
#[XmlRoot(name:'MixedTypeList')]
|
||||
class MixedTypeListXml extends Model
|
||||
{
|
||||
#[XmlElement(rename:'StrValue', type: 'string')]
|
||||
public ?string $strValue;
|
||||
|
||||
#[XmlElement(rename:'IntValue', type: 'int')]
|
||||
public ?int $intValue;
|
||||
|
||||
#[XmlElement(rename:'BasicTypeFiled', type: BaiscTypeXml::class)]
|
||||
public ?array $xmlValues;
|
||||
|
||||
public function __construct(
|
||||
?string $strValue = null,
|
||||
?int $intValue = null,
|
||||
?array $xmlValues = null
|
||||
) {
|
||||
$this->strValue = $strValue;
|
||||
$this->intValue = $intValue;
|
||||
$this->xmlValues = $xmlValues;
|
||||
}
|
||||
}
|
||||
38
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/MixedTypeXml.php
vendored
Normal file
38
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/MixedTypeXml.php
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Types\Model;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlElement;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlRoot;
|
||||
use UnitTests\Fixtures\BaiscTypeXml;
|
||||
use UnitTests\Fixtures\BaiscTypeListXml;
|
||||
|
||||
#[XmlRoot(name:'MixedType')]
|
||||
class MixedTypeXml extends Model
|
||||
{
|
||||
#[XmlElement(rename:'StrValue', type: 'string')]
|
||||
public ?string $strValue;
|
||||
|
||||
#[XmlElement(rename:'IntValue', type: 'int')]
|
||||
public ?int $intValue;
|
||||
|
||||
#[XmlElement(rename:'BasicTypeFiled', type: BaiscTypeXml::class)]
|
||||
public ?BaiscTypeXml $xmlValue;
|
||||
|
||||
|
||||
#[XmlElement(rename:'BasicTypeListFiled', type: BaiscTypeListXml::class)]
|
||||
public ?BaiscTypeListXml $xmlListValue;
|
||||
|
||||
public function __construct(
|
||||
?string $strValue = null,
|
||||
?int $intValue = null,
|
||||
?BaiscTypeXml $xmlValue = null,
|
||||
?BaiscTypeListXml $xmlListValue = null
|
||||
) {
|
||||
$this->strValue = $strValue;
|
||||
$this->intValue = $intValue;
|
||||
$this->xmlValue = $xmlValue;
|
||||
$this->xmlListValue = $xmlListValue;
|
||||
}
|
||||
}
|
||||
23
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/NoRewindStream.php
vendored
Normal file
23
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/NoRewindStream.php
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use GuzzleHttp;
|
||||
|
||||
/**
|
||||
* Stream decorator that prevents a stream from rewind.
|
||||
*/
|
||||
final class NoRewindStream implements \Psr\Http\Message\StreamInterface
|
||||
{
|
||||
use GuzzleHttp\Psr7\StreamDecoratorTrait;
|
||||
|
||||
/** @var \Psr\Http\Message\StreamInterface */
|
||||
private $stream;
|
||||
|
||||
public function rewind(): void
|
||||
{
|
||||
throw new \RuntimeException('Cannot rewind a NoRewindStream');
|
||||
}
|
||||
}
|
||||
44
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/PutApiARequest.php
vendored
Normal file
44
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/PutApiARequest.php
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Types\ModelTrait;
|
||||
use AlibabaCloud\Oss\V2\Types\RequestModel;
|
||||
use AlibabaCloud\Oss\V2\Annotation\TagProperty;
|
||||
use AlibabaCloud\Oss\V2\Annotation\RequiredProperty;
|
||||
|
||||
class PutApiARequest extends RequestModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
#[RequiredProperty()]
|
||||
#[TagProperty(tag: 'input', position: 'host', rename: '', type: 'string')]
|
||||
private ?string $bucket;
|
||||
|
||||
#[RequiredProperty()]
|
||||
#[TagProperty(tag: 'input', position: 'path', rename: '', type: 'string')]
|
||||
private ?string $key;
|
||||
|
||||
#[TagProperty(tag: 'input', position: 'header', rename: 'x-oss-str', type: 'string')]
|
||||
private ?string $strHeader;
|
||||
|
||||
#[TagProperty(tag: 'input', position: 'query', rename: 'param-str', type: 'string')]
|
||||
private ?string $strParam;
|
||||
|
||||
#[TagProperty(tag: 'input', position: 'body', rename: '', type: 'string')]
|
||||
private ?string $configuration;
|
||||
|
||||
public function __construct(
|
||||
?string $bucket = null,
|
||||
?string $key = null,
|
||||
?string $strHeader = null,
|
||||
?string $strParam = null,
|
||||
?string $configuration = null
|
||||
) {
|
||||
$this->bucket = $bucket;
|
||||
$this->key = $key;
|
||||
$this->strHeader = $strHeader;
|
||||
$this->strParam = $strParam;
|
||||
$this->configuration = $configuration;
|
||||
}
|
||||
}
|
||||
44
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/PutApiBRequest.php
vendored
Normal file
44
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/PutApiBRequest.php
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Types\ModelTrait;
|
||||
use AlibabaCloud\Oss\V2\Types\RequestModel;
|
||||
use AlibabaCloud\Oss\V2\Annotation\TagProperty;
|
||||
use AlibabaCloud\Oss\V2\Annotation\RequiredProperty;
|
||||
|
||||
class PutApiBRequest extends RequestModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
#[RequiredProperty()]
|
||||
#[TagProperty(tag: 'input', position: 'host', rename: '', type: 'string')]
|
||||
private ?string $bucket;
|
||||
|
||||
#[RequiredProperty()]
|
||||
#[TagProperty(tag: 'input', position: 'path', rename: '', type: 'string')]
|
||||
private ?string $key;
|
||||
|
||||
#[TagProperty(tag: 'input', position: 'header', rename: 'x-oss-str', type: 'string')]
|
||||
private ?string $strHeader;
|
||||
|
||||
#[TagProperty(tag: 'input', position: 'query', rename: 'param-str', type: 'string')]
|
||||
private ?string $strParam;
|
||||
|
||||
#[TagProperty(tag: 'input', position: 'header', rename: 'x-oss-prefix-', type: 'string', format: 'usermeta')]
|
||||
private ?array $arrayHeader;
|
||||
|
||||
public function __construct(
|
||||
?string $bucket = null,
|
||||
?string $key = null,
|
||||
?string $strHeader = null,
|
||||
?string $strParam = null,
|
||||
?array $arrayHeader = null
|
||||
) {
|
||||
$this->bucket = $bucket;
|
||||
$this->key = $key;
|
||||
$this->strHeader = $strHeader;
|
||||
$this->strParam = $strParam;
|
||||
$this->arrayHeader = $arrayHeader;
|
||||
}
|
||||
}
|
||||
52
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/PutApiBResult.php
vendored
Normal file
52
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/PutApiBResult.php
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Types\ModelTrait;
|
||||
use AlibabaCloud\Oss\V2\Types\ResultModel;
|
||||
use AlibabaCloud\Oss\V2\Annotation\TagHeader;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlElement;
|
||||
|
||||
class PutApiBResult extends ResultModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-str', type: 'string')]
|
||||
private ?string $strHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-int', type: 'int')]
|
||||
private ?int $intHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-bool', type: 'bool')]
|
||||
private ?bool $boolHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-float', type: 'float')]
|
||||
private ?float $floatHeader;
|
||||
|
||||
#[XmlElement(rename: 'Id', type: 'string')]
|
||||
private ?string $id;
|
||||
|
||||
#[XmlElement(rename: 'Text', type: 'string')]
|
||||
private ?string $text;
|
||||
|
||||
#[XmlElement(rename: 'SubConfiguration', type: SubConfiguration::class)]
|
||||
private ?array $subConfiguration;
|
||||
|
||||
public function __construct(
|
||||
?string $strHeader = null,
|
||||
?int $intHeader = null,
|
||||
?bool $boolHeader = null,
|
||||
?float $floatHeader = null,
|
||||
?string $id = null,
|
||||
?string $text = null,
|
||||
?array $subConfiguration = null
|
||||
) {
|
||||
$this->strHeader = $strHeader;
|
||||
$this->intHeader = $intHeader;
|
||||
$this->boolHeader = $boolHeader;
|
||||
$this->floatHeader = $floatHeader;
|
||||
$this->id = $id;
|
||||
$this->text = $text;
|
||||
$this->subConfiguration = $subConfiguration;
|
||||
}
|
||||
}
|
||||
107
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/PutApiRequest.php
vendored
Normal file
107
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/PutApiRequest.php
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Types\ModelTrait;
|
||||
use AlibabaCloud\Oss\V2\Types\RequestModel;
|
||||
use AlibabaCloud\Oss\V2\Annotation\TagProperty;
|
||||
use AlibabaCloud\Oss\V2\Annotation\RequiredProperty;
|
||||
use AlibabaCloud\Oss\V2\Annotation\TagHeader;
|
||||
use AlibabaCloud\Oss\V2\Annotation\TagQuery;
|
||||
use AlibabaCloud\Oss\V2\Annotation\TagBody;
|
||||
|
||||
class PutApiRequest extends RequestModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
#[RequiredProperty()]
|
||||
#[TagProperty(tag: '', position: 'host', rename: '', type: 'string')]
|
||||
private ?string $bucket;
|
||||
|
||||
#[RequiredProperty()]
|
||||
#[TagProperty(tag: '', position: 'path', rename: '', type: 'string')]
|
||||
private ?string $key;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-str', type: 'string')]
|
||||
private ?string $strHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-int', type: 'int')]
|
||||
private ?int $intHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-bool', type: 'bool')]
|
||||
private ?bool $boolHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-float', type: 'float')]
|
||||
private ?float $floatHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-isotime', type: 'Datetime')]
|
||||
private ?\Datetime $isotimeHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-httptime', type: 'Datetime', format:'httptime')]
|
||||
private ?\Datetime $httptimeHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-unixtime', type: 'Datetime', format:'unixtime')]
|
||||
private ?\Datetime $unixtimeHeader;
|
||||
|
||||
#[TagQuery(rename: 'param-str', type: 'string')]
|
||||
private ?string $strParam;
|
||||
|
||||
#[TagQuery(rename: 'param-int', type: 'int')]
|
||||
private ?int $intParam;
|
||||
|
||||
#[TagQuery(rename: 'param-bool', type: 'bool')]
|
||||
private ?bool $boolParam;
|
||||
|
||||
#[TagQuery(rename: 'param-float', type: 'float')]
|
||||
private ?float $floatParam;
|
||||
|
||||
#[TagQuery(rename: 'param-isotime', type: 'Datetime')]
|
||||
private ?\Datetime $isotimeParam;
|
||||
|
||||
#[TagQuery(rename: 'param-httptime', type: 'Datetime', format:'httptime')]
|
||||
private ?\Datetime $httptimeParam;
|
||||
|
||||
#[TagQuery(rename: 'param-unixtime', type: 'Datetime', format:'unixtime')]
|
||||
private ?\Datetime $unixtimeParam;
|
||||
|
||||
#[TagBody(rename: 'Configuration', type: 'xml')]
|
||||
private ?RootConfiguration $configuration;
|
||||
|
||||
public function __construct(
|
||||
?string $bucket = null,
|
||||
?string $key = null,
|
||||
?string $strHeader = null,
|
||||
?int $intHeader = null,
|
||||
?bool $boolHeader = null,
|
||||
?float $floatHeader = null,
|
||||
?\Datetime $isotimeHeader = null,
|
||||
?\Datetime $httptimeHeader = null,
|
||||
?\Datetime $unixtimeHeader = null,
|
||||
?string $strParam = null,
|
||||
?int $intParam = null,
|
||||
?bool $boolParam = null,
|
||||
?float $floatParam = null,
|
||||
?\Datetime $isotimeParam = null,
|
||||
?\Datetime $httptimeParam = null,
|
||||
?\Datetime $unixtimeParam = null,
|
||||
?RootConfiguration $configuration = null
|
||||
) {
|
||||
$this->bucket = $bucket;
|
||||
$this->key = $key;
|
||||
$this->strHeader = $strHeader;
|
||||
$this->intHeader = $intHeader;
|
||||
$this->boolHeader = $boolHeader;
|
||||
$this->floatHeader = $floatHeader;
|
||||
$this->isotimeHeader = $isotimeHeader;
|
||||
$this->httptimeHeader = $httptimeHeader;
|
||||
$this->unixtimeHeader = $unixtimeHeader;
|
||||
$this->strParam = $strParam;
|
||||
$this->intParam = $intParam;
|
||||
$this->boolParam = $boolParam;
|
||||
$this->floatParam = $floatParam;
|
||||
$this->isotimeParam = $isotimeParam;
|
||||
$this->httptimeParam = $httptimeParam;
|
||||
$this->unixtimeParam = $unixtimeParam;
|
||||
$this->configuration = $configuration;
|
||||
}
|
||||
}
|
||||
62
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/PutApiResult.php
vendored
Normal file
62
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/PutApiResult.php
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Types\ModelTrait;
|
||||
use AlibabaCloud\Oss\V2\Types\ResultModel;
|
||||
use AlibabaCloud\Oss\V2\Annotation\TagHeader;
|
||||
use AlibabaCloud\Oss\V2\Annotation\TagBody;
|
||||
|
||||
class PutApiResult extends ResultModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-str', type: 'string')]
|
||||
private ?string $strHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-int', type: 'int')]
|
||||
private ?int $intHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-bool', type: 'bool')]
|
||||
private ?bool $boolHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-float', type: 'float')]
|
||||
private ?float $floatHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-isotime', type: 'DateTime')]
|
||||
private ?\Datetime $isotimeHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-httptime', type: 'DateTime', format: 'httptime')]
|
||||
private ?\Datetime $httptimeHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-unixtime', type: 'DateTime', format: 'unixtime')]
|
||||
private ?\Datetime $unixtimeHeader;
|
||||
|
||||
#[TagHeader(rename: 'x-oss-prefix-', type: 'string', format: 'usermeta')]
|
||||
private ?array $arrayHeader;
|
||||
|
||||
#[TagBody(rename: 'Configuration', type: RootConfiguration::class, format: 'xml')]
|
||||
private ?RootConfiguration $configuration;
|
||||
|
||||
public function __construct(
|
||||
?string $strHeader = null,
|
||||
?int $intHeader = null,
|
||||
?bool $boolHeader = null,
|
||||
?float $floatHeader = null,
|
||||
?\Datetime $isotimeHeader = null,
|
||||
?\Datetime $httptimeHeader = null,
|
||||
?\Datetime $unixtimeHeader = null,
|
||||
?array $arrayHeader = null,
|
||||
?RootConfiguration $configuration = null
|
||||
) {
|
||||
$this->strHeader = $strHeader;
|
||||
$this->intHeader = $intHeader;
|
||||
$this->boolHeader = $boolHeader;
|
||||
$this->floatHeader = $floatHeader;
|
||||
$this->isotimeHeader = $isotimeHeader;
|
||||
$this->httptimeHeader = $httptimeHeader;
|
||||
$this->unixtimeHeader = $unixtimeHeader;
|
||||
$this->arrayHeader = $arrayHeader;
|
||||
$this->configuration = $configuration;
|
||||
}
|
||||
}
|
||||
34
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/RewindStatStream.php
vendored
Normal file
34
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/RewindStatStream.php
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use GuzzleHttp;
|
||||
|
||||
/**
|
||||
* Stream decorator that prevents a stream from rewind.
|
||||
*/
|
||||
final class RewindStatStream implements \Psr\Http\Message\StreamInterface
|
||||
{
|
||||
use GuzzleHttp\Psr7\StreamDecoratorTrait;
|
||||
|
||||
/** @var \Psr\Http\Message\StreamInterface */
|
||||
private $stream;
|
||||
|
||||
private int $rewindCount = 0;
|
||||
|
||||
public function rewind(): void
|
||||
{
|
||||
$this->rewindCount++;
|
||||
$this->stream->rewind();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of rewindCount
|
||||
*/
|
||||
public function getRewindCount()
|
||||
{
|
||||
return $this->rewindCount;
|
||||
}
|
||||
}
|
||||
34
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/RootConfiguration.php
vendored
Normal file
34
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/RootConfiguration.php
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Types\Model;
|
||||
use AlibabaCloud\Oss\V2\Types\ModelTrait;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlElement;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlRoot;
|
||||
|
||||
|
||||
#[XmlRoot(name: 'RootConfiguration')]
|
||||
class RootConfiguration extends Model
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
#[XmlElement(rename: 'Id', type: 'string')]
|
||||
private ?string $id;
|
||||
|
||||
#[XmlElement(rename: 'Text', type: 'string')]
|
||||
private ?string $text;
|
||||
|
||||
#[XmlElement(rename: 'SubConfiguration', type: SubConfiguration::class)]
|
||||
private ?array $subConfiguration;
|
||||
|
||||
public function __construct(
|
||||
?string $id = null,
|
||||
?string $text = null,
|
||||
?array $subConfiguration = null
|
||||
) {
|
||||
$this->id = $id;
|
||||
$this->text = $text;
|
||||
$this->subConfiguration = $subConfiguration;
|
||||
}
|
||||
}
|
||||
29
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/SubConfiguration.php
vendored
Normal file
29
vendor/alibabacloud/oss-v2/tests/UnitTests/Fixtures/SubConfiguration.php
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Fixtures;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Types\Model;
|
||||
use AlibabaCloud\Oss\V2\Types\ModelTrait;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlElement;
|
||||
use AlibabaCloud\Oss\V2\Annotation\XmlRoot;
|
||||
|
||||
|
||||
#[XmlRoot(name: 'SubConfiguration')]
|
||||
class SubConfiguration extends Model
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
#[XmlElement(rename: 'StrField', type: 'string')]
|
||||
private ?string $strField;
|
||||
|
||||
#[XmlElement(rename: 'IntField', type: 'int')]
|
||||
private ?int $intField;
|
||||
|
||||
public function __construct(
|
||||
?string $strField = null,
|
||||
?int $intField = null
|
||||
) {
|
||||
$this->strField = $strField;
|
||||
$this->intField = $intField;
|
||||
}
|
||||
}
|
||||
58
vendor/alibabacloud/oss-v2/tests/UnitTests/Retry/BackoffTest.php
vendored
Normal file
58
vendor/alibabacloud/oss-v2/tests/UnitTests/Retry/BackoffTest.php
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Retry;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Retry;
|
||||
|
||||
class BackoffTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
const ATTEMPTED_CELLING = 64;
|
||||
|
||||
public function testEqualJitterBackoff()
|
||||
{
|
||||
$basedelay = 1.0;
|
||||
$maxdelay = 20.0;
|
||||
$r = new Retry\EqualJitterBackoff($basedelay, $maxdelay);
|
||||
|
||||
for ($x = 0; $x <= self::ATTEMPTED_CELLING * 2; $x++) {
|
||||
$delay = $r->backoffDelay($x, new \Exception());
|
||||
$this->assertLessThan( $maxdelay + 1, $delay);
|
||||
$this->assertGreaterThan(0, $delay);
|
||||
}
|
||||
|
||||
$delay = $r->backoffDelay($x, null);
|
||||
$this->assertLessThan( $maxdelay + 1, $delay);
|
||||
$this->assertGreaterThan(0, $delay);
|
||||
}
|
||||
|
||||
public function testFullJitterBackoff()
|
||||
{
|
||||
$basedelay = 1.0;
|
||||
$maxdelay = 20.0;
|
||||
$r = new Retry\FullJitterBackoff($basedelay, $maxdelay);
|
||||
|
||||
for ($x = 0; $x <= self::ATTEMPTED_CELLING * 2; $x++) {
|
||||
$delay = $r->backoffDelay($x, new \Exception());
|
||||
$this->assertLessThan( $maxdelay + 1, $delay);
|
||||
$this->assertGreaterThan(0, $delay);
|
||||
}
|
||||
|
||||
$delay = $r->backoffDelay($x, null);
|
||||
$this->assertLessThan( $maxdelay + 1, $delay);
|
||||
$this->assertGreaterThan(0, $delay);
|
||||
}
|
||||
|
||||
public function testFixedDelayBackoff()
|
||||
{
|
||||
$maxdelay = 20.0;
|
||||
$r = new Retry\FixedDelayBackoff($maxdelay);
|
||||
|
||||
for ($x = 0; $x <= self::ATTEMPTED_CELLING * 2; $x++) {
|
||||
$delay = $r->backoffDelay($x, new \Exception());
|
||||
$this->assertEquals($maxdelay, $delay);
|
||||
}
|
||||
|
||||
$delay = $r->backoffDelay($x, null);
|
||||
$this->assertEquals($maxdelay, $delay);
|
||||
}
|
||||
}
|
||||
72
vendor/alibabacloud/oss-v2/tests/UnitTests/Retry/ErrorRetryableTest.php
vendored
Normal file
72
vendor/alibabacloud/oss-v2/tests/UnitTests/Retry/ErrorRetryableTest.php
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Retry;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Retry;
|
||||
use AlibabaCloud\Oss\V2\Exception;
|
||||
use GuzzleHttp;
|
||||
|
||||
class ErrorRetryableTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
const ATTEMPTED_CELLING = 64;
|
||||
|
||||
public function testHTTPStatusCodeRetryable()
|
||||
{
|
||||
$r = new Retry\HTTPStatusCodeRetryable();
|
||||
$this->assertEquals(false, $r->isErrorRetryable(new \Exception()));
|
||||
$this->assertEquals(false, $r->isErrorRetryable(self::genStatusCodeError(403)));
|
||||
$this->assertEquals(false, $r->isErrorRetryable(self::genStatusCodeError(405)));
|
||||
|
||||
$this->assertEquals(true, $r->isErrorRetryable(self::genStatusCodeError(401)));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(self::genStatusCodeError(408)));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(self::genStatusCodeError(429)));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(self::genStatusCodeError(500)));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(self::genStatusCodeError(501)));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(self::genStatusCodeError(599)));
|
||||
}
|
||||
|
||||
public function testServiceErrorCodeRetryable()
|
||||
{
|
||||
$r = new Retry\ServiceErrorCodeRetryable();
|
||||
$this->assertEquals(false, $r->isErrorRetryable(new \Exception()));
|
||||
$this->assertEquals(false, $r->isErrorRetryable(self::genServiceCodeError('123')));
|
||||
|
||||
$this->assertEquals(true, $r->isErrorRetryable(self::genServiceCodeError('RequestTimeTooSkewed')));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(self::genServiceCodeError('BadRequest')));
|
||||
}
|
||||
|
||||
public function testClientErrorCodeRetryable()
|
||||
{
|
||||
$r = new Retry\ClientErrorRetryable();
|
||||
$this->assertEquals(false, $r->isErrorRetryable(new \Exception()));
|
||||
$this->assertEquals(false, $r->isErrorRetryable(self::genServiceCodeError('123')));
|
||||
|
||||
$this->assertEquals(true, $r->isErrorRetryable(new Exception\CredentialsException('')));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(new Exception\InconsistentExecption('1', '2')));
|
||||
|
||||
$request = new GuzzleHttp\Psr7\Request('GET', 'http://foo.com');
|
||||
$respons = new GuzzleHttp\Psr7\Response();
|
||||
$this->assertEquals(true, $r->isErrorRetryable(new GuzzleHttp\Exception\BadResponseException('', $request, $respons)));
|
||||
|
||||
$this->assertEquals(true, $r->isErrorRetryable(new GuzzleHttp\Exception\ConnectException('', $request)));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(new GuzzleHttp\Exception\RequestException('', $request)));
|
||||
}
|
||||
|
||||
public static function genStatusCodeError(int $statusCode)
|
||||
{
|
||||
return new Exception\ServiceException(
|
||||
[
|
||||
'status_code' => $statusCode,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function genServiceCodeError(string $code)
|
||||
{
|
||||
return new Exception\ServiceException(
|
||||
[
|
||||
'code' => $code,
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
76
vendor/alibabacloud/oss-v2/tests/UnitTests/Retry/RetryerTest.php
vendored
Normal file
76
vendor/alibabacloud/oss-v2/tests/UnitTests/Retry/RetryerTest.php
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Retry;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Retry;
|
||||
use AlibabaCloud\Oss\V2\Defaults;
|
||||
use AlibabaCloud\Oss\V2\Exception;
|
||||
|
||||
use GuzzleHttp;
|
||||
|
||||
class RetryerTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
const ATTEMPTED_CELLING = 64;
|
||||
|
||||
public function testNopRetryer()
|
||||
{
|
||||
$r = new Retry\NopRetryer();
|
||||
$this->assertEquals(false, $r->isErrorRetryable(new \Exception('')));
|
||||
$this->assertEquals(1, $r->getMaxAttempts());
|
||||
|
||||
try {
|
||||
|
||||
$r->retryDelay(1, new \Exception(''));
|
||||
$this->assertTrue(false, 'should not here');
|
||||
} catch (\Exception $e) {
|
||||
$this->assertEquals('NotImplemented', $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function testStandardRetryer()
|
||||
{
|
||||
//default
|
||||
$r = new Retry\StandardRetryer();
|
||||
$this->assertEquals(Defaults::MAX_ATTEMPTS, $r->getMaxAttempts());
|
||||
|
||||
$this->assertEquals(false, $r->isErrorRetryable(new \Exception()));
|
||||
$this->assertEquals(false, $r->isErrorRetryable(ErrorRetryableTest::genStatusCodeError(403)));
|
||||
$this->assertEquals(false, $r->isErrorRetryable(ErrorRetryableTest::genStatusCodeError(405)));
|
||||
|
||||
$this->assertEquals(true, $r->isErrorRetryable(ErrorRetryableTest::genStatusCodeError(401)));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(ErrorRetryableTest::genStatusCodeError(408)));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(ErrorRetryableTest::genStatusCodeError(429)));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(ErrorRetryableTest::genStatusCodeError(500)));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(ErrorRetryableTest::genStatusCodeError(501)));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(ErrorRetryableTest::genStatusCodeError(599)));
|
||||
|
||||
$this->assertEquals(false, $r->isErrorRetryable(ErrorRetryableTest::genServiceCodeError('123')));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(ErrorRetryableTest::genServiceCodeError('RequestTimeTooSkewed')));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(ErrorRetryableTest::genServiceCodeError('BadRequest')));
|
||||
|
||||
$this->assertEquals(true, $r->isErrorRetryable(new Exception\ServiceException([
|
||||
'status_code' => 403,
|
||||
'code' => 'RequestTimeTooSkewed',
|
||||
])));
|
||||
|
||||
$this->assertEquals(true, $r->isErrorRetryable(new Exception\CredentialsException('')));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(new Exception\InconsistentExecption('1', '2')));
|
||||
|
||||
$request = new GuzzleHttp\Psr7\Request('GET', 'http://foo.com');
|
||||
$respons = new GuzzleHttp\Psr7\Response();
|
||||
$this->assertEquals(true, $r->isErrorRetryable(new GuzzleHttp\Exception\BadResponseException('', $request, $respons)));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(new GuzzleHttp\Exception\ConnectException('', $request)));
|
||||
$this->assertEquals(true, $r->isErrorRetryable(new GuzzleHttp\Exception\RequestException('', $request)));
|
||||
|
||||
|
||||
for ($x = 0; $x <= self::ATTEMPTED_CELLING * 2; $x++) {
|
||||
$delay = $r->retryDelay($x, new \Exception());
|
||||
$this->assertLessThan(Defaults::MAX_BACKOFF_S + 1, $delay);
|
||||
$this->assertGreaterThan(0, $delay);
|
||||
}
|
||||
|
||||
$delay = $r->retryDelay($x, null);
|
||||
$this->assertLessThan(Defaults::MAX_BACKOFF_S + 1, $delay);
|
||||
$this->assertGreaterThan(0, $delay);
|
||||
}
|
||||
}
|
||||
722
vendor/alibabacloud/oss-v2/tests/UnitTests/SerializerTest.php
vendored
Normal file
722
vendor/alibabacloud/oss-v2/tests/UnitTests/SerializerTest.php
vendored
Normal file
@@ -0,0 +1,722 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests;
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'BaiscTypeXml.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'BaiscTypeListXml.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'MixedTypeXml.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'MixedTypeListXml.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'BaiscTypeLackAnnotationXml.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'DatetimeTypeXml.php';
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'SubConfiguration.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'RootConfiguration.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'PutApiRequest.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'PutApiARequest.php';
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'PutApiBRequest.php';
|
||||
|
||||
use AlibabaCloud\Oss\V2\OperationInput;
|
||||
use AlibabaCloud\Oss\V2\Serializer;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
use UnitTests\Fixtures\BaiscTypeXml;
|
||||
use UnitTests\Fixtures\BaiscTypeListXml;
|
||||
use UnitTests\Fixtures\MixedTypeXml;
|
||||
use UnitTests\Fixtures\MixedTypeListXml;
|
||||
use UnitTests\Fixtures\BaiscTypeLackAnnotationXml;
|
||||
use UnitTests\Fixtures\DatetimeTypeXml;
|
||||
|
||||
use UnitTests\Fixtures\SubConfiguration;
|
||||
use UnitTests\Fixtures\RootConfiguration;
|
||||
use UnitTests\Fixtures\PutApiRequest;
|
||||
use UnitTests\Fixtures\PutApiARequest;
|
||||
use UnitTests\Fixtures\PutApiBRequest;
|
||||
|
||||
|
||||
class SerializerTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testSerializeBaiscTypeXml()
|
||||
{
|
||||
// empty
|
||||
$obj = new BaiscTypeXml();
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertNotEmpty($str);
|
||||
$this->assertStringContainsString('<BasicType/>', $str);
|
||||
$xml = \simplexml_load_string($str);
|
||||
$this->assertEquals(0, $xml->count());
|
||||
$this->assertFalse(isset($xml->StrValue));
|
||||
$this->assertFalse(isset($xml->IntValue));
|
||||
$this->assertFalse(isset($xml->BoolValue));
|
||||
$this->assertFalse(isset($xml->FloatValue));
|
||||
|
||||
// all
|
||||
$obj = new BaiscTypeXml(
|
||||
strValue: 'str',
|
||||
intValue: 1234,
|
||||
boolValue: true,
|
||||
floatValue: 3.14,
|
||||
);
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertNotEmpty($str);
|
||||
$xml = \simplexml_load_string($str);
|
||||
$this->assertEquals(4, $xml->count());
|
||||
$this->assertEquals('str', $xml->StrValue);
|
||||
$this->assertEquals('1234', $xml->IntValue);
|
||||
$this->assertEquals('true', $xml->BoolValue);
|
||||
$this->assertEquals('3.14', $xml->FloatValue);
|
||||
|
||||
// part
|
||||
$obj = new BaiscTypeXml(
|
||||
strValue: 'str-123',
|
||||
floatValue: 2.14,
|
||||
);
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertNotEmpty($str);
|
||||
$xml = \simplexml_load_string($str);
|
||||
$this->assertEquals(2, $xml->count());
|
||||
$this->assertEquals('str-123', $xml->StrValue);
|
||||
$this->assertFalse(isset($xml->IntValue));
|
||||
$this->assertFalse(isset($xml->BoolValue));
|
||||
$this->assertEquals('2.14', $xml->FloatValue);
|
||||
|
||||
// part 2
|
||||
$obj = new BaiscTypeXml(
|
||||
strValue: 'str-123',
|
||||
boolValue: false,
|
||||
);
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertNotEmpty($str);
|
||||
$xml = \simplexml_load_string($str);
|
||||
$this->assertEquals(2, $xml->count());
|
||||
$this->assertEquals('str-123', $xml->StrValue);
|
||||
$this->assertFalse(isset($xml->IntValue));
|
||||
$this->assertEquals('false', $xml->BoolValue);
|
||||
$this->assertFalse(isset($xml->FloatValue));
|
||||
}
|
||||
|
||||
public function testSerializeBaiscTypeListXml(): void
|
||||
{
|
||||
// empty
|
||||
$obj = new BaiscTypeListXml();
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertStringContainsString('<BasicTypeList/>', $str);
|
||||
|
||||
// all
|
||||
$obj = new BaiscTypeListXml(
|
||||
strValues: ['str1', 'str2'],
|
||||
intValues: [1234, 2234],
|
||||
boolValues: [true, true, false],
|
||||
floatValues: [3.14],
|
||||
);
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertNotEmpty($str);
|
||||
$xml = \simplexml_load_string($str);
|
||||
$this->assertEquals(8, $xml->count());
|
||||
$this->assertEquals(2, count($xml->StrValue));
|
||||
$this->assertEquals('str1', $xml->StrValue[0]);
|
||||
$this->assertEquals('str2', $xml->StrValue[1]);
|
||||
$this->assertEquals(2, count($xml->IntValue));
|
||||
$this->assertEquals('1234', $xml->IntValue[0]);
|
||||
$this->assertEquals('2234', $xml->IntValue[1]);
|
||||
$this->assertEquals(3, count($xml->BoolValue));
|
||||
$this->assertEquals('true', $xml->BoolValue[0]);
|
||||
$this->assertEquals('true', $xml->BoolValue[1]);
|
||||
$this->assertEquals('false', $xml->BoolValue[2]);
|
||||
$this->assertEquals(1, count($xml->FloatValue));
|
||||
$this->assertEquals('3.14', $xml->FloatValue[0]);
|
||||
}
|
||||
|
||||
public function testSerializeMixedTypeXml(): void
|
||||
{
|
||||
// empty
|
||||
$obj = new MixedTypeXml();
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertStringContainsString('<MixedType/>', $str);
|
||||
|
||||
// all
|
||||
$obj = new MixedTypeXml(
|
||||
strValue: 'str-111',
|
||||
intValue: 12,
|
||||
xmlValue: new BaiscTypeXml(
|
||||
strValue: 'str',
|
||||
intValue: 123,
|
||||
boolValue: true,
|
||||
floatValue: 1.14,
|
||||
),
|
||||
xmlListValue: new BaiscTypeListXml(
|
||||
strValues: ['str1', 'str2'],
|
||||
intValues: [1234, 2234],
|
||||
boolValues: [true, true, false],
|
||||
floatValues: [3.14],
|
||||
),
|
||||
);
|
||||
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertNotEmpty($str);
|
||||
$xml = \simplexml_load_string($str);
|
||||
$this->assertEquals(4, $xml->count());
|
||||
$this->assertEquals('str-111', $xml->StrValue);
|
||||
$this->assertEquals('12', $xml->IntValue);
|
||||
|
||||
$this->assertEquals(1, ($xml->BasicTypeFiled)->count());
|
||||
$this->assertEquals('str', $xml->BasicTypeFiled->StrValue);
|
||||
$this->assertEquals('123', $xml->BasicTypeFiled->IntValue);
|
||||
$this->assertEquals('true', $xml->BasicTypeFiled->BoolValue);
|
||||
$this->assertEquals('1.14', $xml->BasicTypeFiled->FloatValue);
|
||||
|
||||
$this->assertEquals(1, ($xml->BasicTypeListFiled)->count());
|
||||
$this->assertEquals(2, ($xml->BasicTypeListFiled->StrValue)->count());
|
||||
$this->assertEquals('str1', $xml->BasicTypeListFiled->StrValue[0]);
|
||||
$this->assertEquals('str2', $xml->BasicTypeListFiled->StrValue[1]);
|
||||
$this->assertEquals(2, ($xml->BasicTypeListFiled->IntValue)->count());
|
||||
$this->assertEquals('1234', $xml->BasicTypeListFiled->IntValue[0]);
|
||||
$this->assertEquals('2234', $xml->BasicTypeListFiled->IntValue[1]);
|
||||
$this->assertEquals(3, ($xml->BasicTypeListFiled->BoolValue)->count());
|
||||
$this->assertEquals('true', $xml->BasicTypeListFiled->BoolValue[0]);
|
||||
$this->assertEquals('true', $xml->BasicTypeListFiled->BoolValue[1]);
|
||||
$this->assertEquals('false', $xml->BasicTypeListFiled->BoolValue[2]);
|
||||
$this->assertEquals(1, ($xml->BasicTypeListFiled->FloatValue)->count());
|
||||
$this->assertEquals('3.14', $xml->BasicTypeListFiled->FloatValue[0]);
|
||||
}
|
||||
|
||||
public function testSerializeMixedTypeListXml(): void
|
||||
{
|
||||
// empty
|
||||
$obj = new MixedTypeListXml();
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertStringContainsString('<MixedTypeList/>', $str);
|
||||
|
||||
// all
|
||||
$obj = new MixedTypeListXml(
|
||||
strValue: 'str-111',
|
||||
intValue: 12,
|
||||
xmlValues: [
|
||||
new BaiscTypeXml(
|
||||
strValue: 'str',
|
||||
intValue: 123,
|
||||
boolValue: true,
|
||||
floatValue: 1.14,
|
||||
),
|
||||
new BaiscTypeXml(
|
||||
strValue: 'str-1',
|
||||
intValue: 223,
|
||||
boolValue: false,
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertNotEmpty($str);
|
||||
$xml = \simplexml_load_string($str);
|
||||
$this->assertEquals(4, $xml->count());
|
||||
$this->assertEquals('str-111', $xml->StrValue);
|
||||
$this->assertEquals('12', $xml->IntValue);
|
||||
|
||||
$this->assertEquals(2, ($xml->BasicTypeFiled)->count());
|
||||
$this->assertEquals('str', $xml->BasicTypeFiled[0]->StrValue);
|
||||
$this->assertEquals('123', $xml->BasicTypeFiled[0]->IntValue);
|
||||
$this->assertEquals('true', $xml->BasicTypeFiled[0]->BoolValue);
|
||||
$this->assertEquals('1.14', $xml->BasicTypeFiled[0]->FloatValue);
|
||||
|
||||
$this->assertEquals('str-1', $xml->BasicTypeFiled[1]->StrValue);
|
||||
$this->assertEquals('223', $xml->BasicTypeFiled[1]->IntValue);
|
||||
$this->assertEquals('false', $xml->BasicTypeFiled[1]->BoolValue);
|
||||
$this->assertFalse(isset($xml->BasicTypeFiled[1]->FloatValue));
|
||||
}
|
||||
|
||||
public function testSerializeWithSpecialRootName()
|
||||
{
|
||||
$obj = new BaiscTypeXml();
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertNotEmpty($str);
|
||||
$this->assertStringContainsString('<BasicType/>', $str);
|
||||
|
||||
// empty
|
||||
$obj = new BaiscTypeXml();
|
||||
$str = Serializer::serializeXml($obj, 'MyRoot');
|
||||
$this->assertNotEmpty($str);
|
||||
$this->assertStringContainsString('<MyRoot/>', $str);
|
||||
}
|
||||
|
||||
public function testSerializeLackXmlAnnotation()
|
||||
{
|
||||
//xml root
|
||||
$obj = new BaiscTypeLackAnnotationXml();
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertNotEmpty($str);
|
||||
$this->assertStringContainsString('<BaiscTypeLackAnnotationXml/>', $str);
|
||||
|
||||
$obj = new BaiscTypeLackAnnotationXml();
|
||||
$str = Serializer::serializeXml($obj, 'MyRoot');
|
||||
$this->assertNotEmpty($str);
|
||||
$this->assertStringContainsString('<MyRoot/>', $str);
|
||||
|
||||
//xml element
|
||||
$obj = new BaiscTypeLackAnnotationXml(
|
||||
strValue: 'str-123',
|
||||
intValue: 1234,
|
||||
boolValue: true,
|
||||
floatValue: 3.14,
|
||||
);
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertNotEmpty($str);
|
||||
$xml = \simplexml_load_string($str);
|
||||
$this->assertEquals(2, $xml->count());
|
||||
$this->assertEquals('str-123', $xml->StrValue);
|
||||
$this->assertEquals('1234', $xml->IntValue);
|
||||
$this->assertFalse(isset($xml->BoolValue));
|
||||
$this->assertFalse(isset($xml->FloatValue));
|
||||
}
|
||||
|
||||
public function testSerializeDateTimeTypeXml()
|
||||
{
|
||||
//xml root
|
||||
$obj = new DatetimeTypeXml();
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertNotEmpty($str);
|
||||
$this->assertStringContainsString('<DatetimeType/>', $str);
|
||||
|
||||
$date = new \DateTime();
|
||||
$date->setTimestamp(1702783809);
|
||||
|
||||
$date1 = new \DateTimeImmutable();
|
||||
$date1 = $date1->setTimestamp(1702783819);
|
||||
|
||||
//xml element
|
||||
$obj = new DatetimeTypeXml(
|
||||
isotimeValue: $date,
|
||||
dateTimeImmutableValue: $date1,
|
||||
httptimeValue: $date,
|
||||
unixtimeValue: $date,
|
||||
);
|
||||
|
||||
$str = Serializer::serializeXml($obj);
|
||||
$this->assertNotEmpty($str);
|
||||
$xml = \simplexml_load_string($str);
|
||||
$this->assertEquals(4, $xml->count());
|
||||
$this->assertEquals('2023-12-17T03:30:09Z', $xml->DateTimeValue);
|
||||
$this->assertEquals('2023-12-17T03:30:19Z', $xml->DateTimeImmutableValue);
|
||||
$this->assertEquals('1702783809', $xml->UnixtimeValue);
|
||||
$this->assertEquals('Sun, 17 Dec 2023 03:30:09 GMT', $xml->HttptimeValue);
|
||||
}
|
||||
|
||||
public function testSerializeInput(): void
|
||||
{
|
||||
$datetimeUtc = new \DateTime();
|
||||
$datetimeUtc->setTimestamp(1702783809);
|
||||
|
||||
$datetime2Utc = new \DateTime();
|
||||
$datetime2Utc->setTimestamp(1702783819);
|
||||
|
||||
$request = new PutApiRequest(
|
||||
bucket: "bucket-124",
|
||||
#key: "key-1",
|
||||
strHeader: "str_header",
|
||||
intHeader: 123,
|
||||
boolHeader: true,
|
||||
floatHeader: 2.5,
|
||||
isotimeHeader: $datetimeUtc,
|
||||
httptimeHeader: $datetimeUtc,
|
||||
unixtimeHeader: $datetimeUtc,
|
||||
strParam: "str_param",
|
||||
intParam: 456,
|
||||
boolParam: false,
|
||||
floatParam: 4.5,
|
||||
isotimeParam: $datetime2Utc,
|
||||
httptimeParam: $datetime2Utc,
|
||||
unixtimeParam: $datetime2Utc,
|
||||
configuration: new RootConfiguration(
|
||||
id: "id-124",
|
||||
text: "just for test",
|
||||
subConfiguration: [
|
||||
new SubConfiguration(
|
||||
strField: 'str-1',
|
||||
intField: 111,
|
||||
),
|
||||
new SubConfiguration(
|
||||
strField: 'str-2',
|
||||
intField: 222,
|
||||
),
|
||||
],
|
||||
)
|
||||
);
|
||||
|
||||
# miss required field
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
);
|
||||
|
||||
try {
|
||||
Serializer::serializeInput($request, $input);
|
||||
$this->assertTrue(false, "shoud not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, key", (string)$e);
|
||||
} catch (\Exception $e) {
|
||||
$this->assertTrue(false, "shoud not here");
|
||||
}
|
||||
|
||||
#normal case
|
||||
$request->setKey('key');
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
);
|
||||
Serializer::serializeInput($request, $input);
|
||||
$this->assertEquals('str_header', $input->getHeaders()['x-oss-str']);
|
||||
$this->assertEquals('123', $input->getHeaders()['x-oss-int']);
|
||||
$this->assertEquals('true', $input->getHeaders()['x-oss-bool']);
|
||||
$this->assertEquals('2.5', $input->getHeaders()['x-oss-float']);
|
||||
$this->assertEquals('2023-12-17T03:30:09Z', $input->getHeaders()['x-oss-isotime']);
|
||||
$this->assertEquals('Sun, 17 Dec 2023 03:30:09 GMT', $input->getHeaders()['x-oss-httptime']);
|
||||
$this->assertEquals('1702783809', $input->getHeaders()['x-oss-unixtime']);
|
||||
|
||||
$this->assertEquals('str_param', $input->getParameters()['param-str']);
|
||||
$this->assertEquals('456', $input->getParameters()['param-int']);
|
||||
$this->assertEquals('false', $input->getParameters()['param-bool']);
|
||||
$this->assertEquals('4.5', $input->getParameters()['param-float']);
|
||||
$this->assertEquals('2023-12-17T03:30:19Z', $input->getParameters()['param-isotime']);
|
||||
$this->assertEquals('Sun, 17 Dec 2023 03:30:19 GMT', $input->getParameters()['param-httptime']);
|
||||
$this->assertEquals('1702783819', $input->getParameters()['param-unixtime']);
|
||||
|
||||
$str = $input->getBody()->getContents();
|
||||
$this->assertStringContainsString('<Configuration>', $str);
|
||||
$xml = \simplexml_load_string($str);
|
||||
$this->assertEquals(4, $xml->count());
|
||||
$this->assertEquals('id-124', $xml->Id);
|
||||
$this->assertEquals('just for test', $xml->Text);
|
||||
$this->assertEquals(2, ($xml->SubConfiguration)->count());
|
||||
$this->assertEquals('str-1', $xml->SubConfiguration[0]->StrField);
|
||||
$this->assertEquals('111', $xml->SubConfiguration[0]->IntField);
|
||||
$this->assertEquals('str-2', $xml->SubConfiguration[1]->StrField);
|
||||
$this->assertEquals('222', $xml->SubConfiguration[1]->IntField);
|
||||
}
|
||||
|
||||
public function testSerializeInputWithHeadersAndParameters(): void
|
||||
{
|
||||
//case 1, input has headers and parameters
|
||||
$request = new PutApiARequest(
|
||||
bucket: "bucket-124",
|
||||
key: "key-1",
|
||||
strHeader: "str_header",
|
||||
strParam: "str_param",
|
||||
);
|
||||
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
headers: ['Key' => 'value', 'key-1' => 'value-1'],
|
||||
parameters: ['Key' => 'value', 'key-1' => 'value-1'],
|
||||
);
|
||||
Serializer::serializeInput($request, $input);
|
||||
$this->assertEquals('str_header', $input->getHeaders()['x-oss-str']);
|
||||
$this->assertEquals('value', $input->getHeaders()['key']);
|
||||
$this->assertEquals('value-1', $input->getHeaders()['key-1']);
|
||||
$this->assertEquals('str_param', $input->getParameters()['param-str']);
|
||||
$this->assertEquals('value', $input->getParameters()['Key']);
|
||||
$this->assertEquals('value-1', $input->getParameters()['key-1']);
|
||||
|
||||
//case 2, input and request has same headers and parameters
|
||||
$request = new PutApiARequest(
|
||||
bucket: "bucket-124",
|
||||
key: "key-1",
|
||||
strHeader: "str_header",
|
||||
strParam: "str_param",
|
||||
);
|
||||
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
headers: ['X-OSS-str' => 'value'],
|
||||
parameters: ['param-str' => 'value', 'param-int' => '123'],
|
||||
);
|
||||
Serializer::serializeInput($request, $input);
|
||||
$this->assertEquals(1, count($input->getHeaders()));
|
||||
$this->assertEquals('str_header', $input->getHeaders()['x-oss-str']);
|
||||
$this->assertEquals(2, count($input->getParameters()));
|
||||
$this->assertEquals('str_param', $input->getParameters()['param-str']);
|
||||
$this->assertEquals('123', $input->getParameters()['param-int']);
|
||||
|
||||
//case 3, request has headers and parameters, request.headers and request.parameters
|
||||
$request = new PutApiARequest(
|
||||
bucket: "bucket-124",
|
||||
key: "key-1",
|
||||
strHeader: "str_header",
|
||||
strParam: "str_param",
|
||||
);
|
||||
|
||||
$request->setHeaders(['X-Oss-header1' => 'value-1', 'x-oss-header2' => 'value-2']);
|
||||
$request->setParameters(['X-Oss-param1' => 'value-1', 'x-oss-param2' => 'value-2']);
|
||||
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
headers: ['Key' => 'value', 'key-1' => 'value-1'],
|
||||
parameters: ['Key' => 'value', 'key-1' => 'value-1'],
|
||||
);
|
||||
Serializer::serializeInput($request, $input);
|
||||
$this->assertEquals('str_header', $input->getHeaders()['x-oss-str']);
|
||||
$this->assertEquals('value', $input->getHeaders()['key']);
|
||||
$this->assertEquals('value-1', $input->getHeaders()['key-1']);
|
||||
$this->assertEquals('value-1', $input->getHeaders()['x-oss-header1']);
|
||||
$this->assertEquals('value-2', $input->getHeaders()['x-oss-header2']);
|
||||
$this->assertEquals('str_param', $input->getParameters()['param-str']);
|
||||
$this->assertEquals('value', $input->getParameters()['Key']);
|
||||
$this->assertEquals('value-1', $input->getParameters()['key-1']);
|
||||
$this->assertEquals('value-1', $input->getParameters()['X-Oss-param1']);
|
||||
$this->assertEquals('value-2', $input->getParameters()['x-oss-param2']);
|
||||
}
|
||||
|
||||
public function testSerializeInputWithBody(): void
|
||||
{
|
||||
#case 1, request with body
|
||||
$request = new PutApiARequest(
|
||||
bucket: "bucket-124",
|
||||
key: "key-1",
|
||||
strHeader: "str_header",
|
||||
strParam: "str_param",
|
||||
configuration: "hello world"
|
||||
);
|
||||
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
);
|
||||
Serializer::serializeInput($request, $input);
|
||||
$this->assertEquals('str_header', $input->getHeaders()['x-oss-str']);
|
||||
$this->assertEquals('str_param', $input->getParameters()['param-str']);
|
||||
|
||||
$str = $input->getBody()->getContents();
|
||||
$this->assertEquals('hello world', $str);
|
||||
|
||||
#case 2, request without body
|
||||
$request = new PutApiARequest(
|
||||
bucket: "bucket-124",
|
||||
key: "key-1",
|
||||
strHeader: "str_header",
|
||||
strParam: "str_param",
|
||||
);
|
||||
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
);
|
||||
Serializer::serializeInput($request, $input);
|
||||
$this->assertEquals('str_header', $input->getHeaders()['x-oss-str']);
|
||||
$this->assertEquals('str_param', $input->getParameters()['param-str']);
|
||||
$this->assertEquals(null, $input->getBody());
|
||||
|
||||
#case 3, input with body
|
||||
$request = new PutApiARequest(
|
||||
bucket: "bucket-124",
|
||||
key: "key-1",
|
||||
strHeader: "str_header",
|
||||
strParam: "str_param",
|
||||
);
|
||||
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
body: Utils::streamFor('1234'),
|
||||
);
|
||||
Serializer::serializeInput($request, $input);
|
||||
$this->assertEquals('str_header', $input->getHeaders()['x-oss-str']);
|
||||
$this->assertEquals('str_param', $input->getParameters()['param-str']);
|
||||
|
||||
$str = $input->getBody()->getContents();
|
||||
$this->assertEquals('1234', $str);
|
||||
|
||||
#case 4, input & request with body
|
||||
$request = new PutApiARequest(
|
||||
bucket: "bucket-124",
|
||||
key: "key-1",
|
||||
strHeader: "str_header",
|
||||
strParam: "str_param",
|
||||
configuration: "hello world abc",
|
||||
);
|
||||
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
body: Utils::streamFor('1234'),
|
||||
);
|
||||
Serializer::serializeInput($request, $input);
|
||||
$this->assertEquals('str_header', $input->getHeaders()['x-oss-str']);
|
||||
$this->assertEquals('str_param', $input->getParameters()['param-str']);
|
||||
|
||||
$str = $input->getBody()->getContents();
|
||||
$this->assertEquals('hello world abc', $str);
|
||||
|
||||
#case 5, request.paylaod
|
||||
$request = new PutApiARequest(
|
||||
bucket: "bucket-124",
|
||||
key: "key-1",
|
||||
strHeader: "str_header",
|
||||
strParam: "str_param",
|
||||
);
|
||||
|
||||
$request->setPayload(Utils::streamFor('just a payload'));
|
||||
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
);
|
||||
Serializer::serializeInput($request, $input);
|
||||
$this->assertEquals('str_header', $input->getHeaders()['x-oss-str']);
|
||||
$this->assertEquals('str_param', $input->getParameters()['param-str']);
|
||||
|
||||
$str = $input->getBody()->getContents();
|
||||
$this->assertEquals('just a payload', $str);
|
||||
|
||||
#case 6, request.paylaod and input.body
|
||||
$request = new PutApiARequest(
|
||||
bucket: "bucket-124",
|
||||
key: "key-1",
|
||||
strHeader: "str_header",
|
||||
strParam: "str_param",
|
||||
);
|
||||
|
||||
$request->setPayload(Utils::streamFor('payload-1234'));
|
||||
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
body: Utils::streamFor('body-1234'),
|
||||
);
|
||||
Serializer::serializeInput($request, $input);
|
||||
$this->assertEquals('str_header', $input->getHeaders()['x-oss-str']);
|
||||
$this->assertEquals('str_param', $input->getParameters()['param-str']);
|
||||
|
||||
$str = $input->getBody()->getContents();
|
||||
$this->assertEquals('payload-1234', $str);
|
||||
|
||||
#case 6, request.paylaod and request.body
|
||||
$request = new PutApiARequest(
|
||||
bucket: "bucket-124",
|
||||
key: "key-1",
|
||||
strHeader: "str_header",
|
||||
strParam: "str_param",
|
||||
configuration: 'request body',
|
||||
);
|
||||
|
||||
$request->setPayload(Utils::streamFor('payload-1234'));
|
||||
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
body: Utils::streamFor('body-1234'),
|
||||
);
|
||||
Serializer::serializeInput($request, $input);
|
||||
$this->assertEquals('str_header', $input->getHeaders()['x-oss-str']);
|
||||
$this->assertEquals('str_param', $input->getParameters()['param-str']);
|
||||
|
||||
$str = $input->getBody()->getContents();
|
||||
$this->assertEquals('request body', $str);
|
||||
}
|
||||
|
||||
public function testSerializeInputWithArrayHeader(): void
|
||||
{
|
||||
# case 1
|
||||
$request = new PutApiBRequest(
|
||||
bucket: "bucket-124",
|
||||
key: "key-1",
|
||||
strHeader: "str_header",
|
||||
strParam: "str_param",
|
||||
arrayHeader: ['a' => 'value-1', 'b' => 'value-2'],
|
||||
);
|
||||
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
);
|
||||
Serializer::serializeInput($request, $input);
|
||||
$this->assertEquals('str_header', $input->getHeaders()['x-oss-str']);
|
||||
$this->assertEquals('value-1', $input->getHeaders()['x-oss-prefix-a']);
|
||||
$this->assertEquals('value-2', $input->getHeaders()['x-oss-prefix-b']);
|
||||
$this->assertEquals('str_param', $input->getParameters()['param-str']);
|
||||
|
||||
# case 1
|
||||
$request = new PutApiBRequest(
|
||||
bucket: "bucket-124",
|
||||
key: "key-1",
|
||||
strHeader: "str_header",
|
||||
strParam: "str_param",
|
||||
);
|
||||
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
);
|
||||
Serializer::serializeInput($request, $input);
|
||||
$this->assertEquals(1, count($input->getHeaders()));
|
||||
$this->assertEquals('str_header', $input->getHeaders()['x-oss-str']);
|
||||
$this->assertEquals('str_param', $input->getParameters()['param-str']);
|
||||
}
|
||||
|
||||
public static function addTestHeader($request, OperationInput $input): void
|
||||
{
|
||||
$input->setHeader('Serializer-Header', '12345');
|
||||
}
|
||||
|
||||
public function testSerializeInputWithCustomSerializer(): void
|
||||
{
|
||||
# case 1
|
||||
$request = new PutApiBRequest(
|
||||
bucket: "bucket-124",
|
||||
key: "key-1",
|
||||
strHeader: "str_header",
|
||||
strParam: "str_param",
|
||||
arrayHeader: ['a' => 'value-1', 'b' => 'value-2'],
|
||||
);
|
||||
|
||||
$input = new OperationInput(
|
||||
opName: 'TestApi',
|
||||
method: 'GET',
|
||||
bucket: $request->getBucket(),
|
||||
key: $request->getKey(),
|
||||
);
|
||||
|
||||
$customSerializer = [
|
||||
static function ($request, OperationInput $input) {
|
||||
$input->setHeader('my-header', 'just test');
|
||||
},
|
||||
[self::class, 'addTestHeader'],
|
||||
];
|
||||
|
||||
Serializer::serializeInput($request, $input, $customSerializer);
|
||||
$this->assertEquals('str_header', $input->getHeaders()['x-oss-str']);
|
||||
$this->assertEquals('value-1', $input->getHeaders()['x-oss-prefix-a']);
|
||||
$this->assertEquals('value-2', $input->getHeaders()['x-oss-prefix-b']);
|
||||
$this->assertEquals('just test', $input->getHeaders()['my-header']);
|
||||
$this->assertEquals('12345', $input->getHeaders()['serializer-header']);
|
||||
$this->assertEquals('str_param', $input->getParameters()['param-str']);
|
||||
}
|
||||
}
|
||||
18
vendor/alibabacloud/oss-v2/tests/UnitTests/Signer/NopSignerTest.php
vendored
Normal file
18
vendor/alibabacloud/oss-v2/tests/UnitTests/Signer/NopSignerTest.php
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Signer;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Signer\NopSigner;
|
||||
use AlibabaCloud\Oss\V2\Signer\SigningContext;
|
||||
|
||||
class NopSignerTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
|
||||
public function testNopSigner()
|
||||
{
|
||||
$r = new NopSigner();
|
||||
$g = new SigningContext();
|
||||
$this->assertNull($r->sign($g));
|
||||
}
|
||||
|
||||
}
|
||||
26
vendor/alibabacloud/oss-v2/tests/UnitTests/Signer/SignerContextTest.php
vendored
Normal file
26
vendor/alibabacloud/oss-v2/tests/UnitTests/Signer/SignerContextTest.php
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Signer;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Signer\SigningContext;
|
||||
|
||||
class SignerContextTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
|
||||
public function testSignerContextTestWithNull()
|
||||
{
|
||||
$g = new SigningContext();
|
||||
$this->assertIsArray($g->subResource);
|
||||
$this->assertNull($g->product);
|
||||
$this->assertNull($g->region);
|
||||
$this->assertNull($g->bucket);
|
||||
$this->assertNull($g->key);
|
||||
$this->assertNull($g->request);
|
||||
$this->assertNull($g->credentials);
|
||||
$this->assertNull($g->time);
|
||||
$this->assertNull($g->signedHeaders);
|
||||
$this->assertNull($g->stringToSign);
|
||||
$this->assertFalse($g->authMethodQuery);
|
||||
}
|
||||
|
||||
}
|
||||
258
vendor/alibabacloud/oss-v2/tests/UnitTests/Signer/SignerV1Test.php
vendored
Normal file
258
vendor/alibabacloud/oss-v2/tests/UnitTests/Signer/SignerV1Test.php
vendored
Normal file
@@ -0,0 +1,258 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Signer;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Credentials\StaticCredentialsProvider;
|
||||
use AlibabaCloud\Oss\V2\Signer\SignerV1;
|
||||
use AlibabaCloud\Oss\V2\Signer\SigningContext;
|
||||
use DateTime;
|
||||
use DateTimeZone;
|
||||
use GuzzleHttp\Psr7\Request;
|
||||
|
||||
class SignerV1Test extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
|
||||
public function testAuthHeader()
|
||||
{
|
||||
$provider = new StaticCredentialsProvider("ak", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
|
||||
// case 1
|
||||
$request = new Request("PUT", "https://examplebucket.oss-cn-hangzhou.aliyuncs.com");
|
||||
$request = $request->withHeader("Content-MD5", "eB5eJF1ptWaXm4bijSPyxw==")
|
||||
->withHeader("Content-Type", "text/html")
|
||||
->withHeader("x-oss-meta-author", "alice")
|
||||
->withHeader("x-oss-meta-magic", "abracadabra")
|
||||
->withHeader("x-oss-date", "Wed, 28 Dec 2022 10:27:41 GMT");
|
||||
$signTime = DateTime::createFromFormat("D, d M Y H:i:s T", "Wed, 28 Dec 2022 10:27:41 GMT");
|
||||
#$signCtx = new SigningContext(bucket: "examplebucket", key: "nelson", request: $request, credentials: $cred, time: $signTime);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->bucket = 'examplebucket';
|
||||
$signCtx->key = 'nelson';
|
||||
$signCtx->request = $request;
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $signTime;
|
||||
$signer = new SignerV1();
|
||||
$signer->sign($signCtx);
|
||||
$signToString = "PUT\neB5eJF1ptWaXm4bijSPyxw==\ntext/html\nWed, 28 Dec 2022 10:27:41 GMT\nx-oss-date:Wed, 28 Dec 2022 10:27:41 GMT\nx-oss-meta-author:alice\nx-oss-meta-magic:abracadabra\n/examplebucket/nelson";
|
||||
$this->assertEquals($signToString, $signCtx->stringToSign);
|
||||
$this->assertEquals($signTime, $signCtx->time);
|
||||
$request = $signCtx->request;
|
||||
$this->assertEquals("OSS ak:kSHKmLxlyEAKtZPkJhG9bZb5k7M=", $request->getHeaderLine("Authorization"));
|
||||
|
||||
// case 2
|
||||
$request = new Request("PUT", "https://examplebucket.oss-cn-hangzhou.aliyuncs.com/?acl");
|
||||
$request = $request->withHeader("Content-MD5", "eB5eJF1ptWaXm4bijSPyxw==")
|
||||
->withHeader("Content-Type", "text/html")
|
||||
->withHeader("x-oss-meta-author", "alice")
|
||||
->withHeader("x-oss-meta-magic", "abracadabra")
|
||||
->withHeader("x-oss-date", "Wed, 28 Dec 2022 10:27:41 GMT");
|
||||
$signTime = DateTime::createFromFormat("D, d M Y H:i:s T", "Wed, 28 Dec 2022 10:27:41 GMT");
|
||||
#$signCtx = new SigningContext(bucket: "examplebucket", key: "nelson", request: $request, credentials: $cred, time: $signTime);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->bucket = 'examplebucket';
|
||||
$signCtx->key = 'nelson';
|
||||
$signCtx->request = $request;
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $signTime;
|
||||
$signer = new SignerV1();
|
||||
$signer->sign($signCtx);
|
||||
$signToString = "PUT\neB5eJF1ptWaXm4bijSPyxw==\ntext/html\nWed, 28 Dec 2022 10:27:41 GMT\nx-oss-date:Wed, 28 Dec 2022 10:27:41 GMT\nx-oss-meta-author:alice\nx-oss-meta-magic:abracadabra\n/examplebucket/nelson?acl";
|
||||
$this->assertEquals($signToString, $signCtx->stringToSign);
|
||||
$this->assertEquals($signTime, $signCtx->time);
|
||||
$request = $signCtx->request;
|
||||
$this->assertEquals("OSS ak:/afkugFbmWDQ967j1vr6zygBLQk=", $request->getHeaderLine("Authorization"));
|
||||
|
||||
// case 3
|
||||
$request = new Request("GET", "https://examplebucket.oss-cn-hangzhou.aliyuncs.com/?resourceGroup&non-resousce=null");
|
||||
$request = $request->withHeader("x-oss-date", "Wed, 28 Dec 2022 10:27:41 GMT");
|
||||
$signTime = DateTime::createFromFormat("D, d M Y H:i:s T", "Wed, 28 Dec 2022 10:27:41 GMT");
|
||||
#$signCtx = new SigningContext(bucket: "examplebucket", request: $request, subResource: ["resourceGroup"], credentials: $cred, time: $signTime);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->bucket = 'examplebucket';
|
||||
$signCtx->request = $request;
|
||||
$signCtx->subResource = ["resourceGroup"];
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $signTime;
|
||||
$signer = new SignerV1();
|
||||
$signer->sign($signCtx);
|
||||
$signToString = "GET\n\n\nWed, 28 Dec 2022 10:27:41 GMT\nx-oss-date:Wed, 28 Dec 2022 10:27:41 GMT\n/examplebucket/?resourceGroup";
|
||||
$this->assertEquals($signToString, $signCtx->stringToSign);
|
||||
$this->assertEquals($signTime, $signCtx->time);
|
||||
$request = $signCtx->request;
|
||||
$this->assertEquals("OSS ak:vkQmfuUDyi1uDi3bKt67oemssIs=", $request->getHeaderLine("Authorization"));
|
||||
|
||||
// case 4
|
||||
$request = new Request("GET", "https://examplebucket.oss-cn-hangzhou.aliyuncs.com/?resourceGroup&acl");
|
||||
$request = $request->withHeader("x-oss-date", "Wed, 28 Dec 2022 10:27:41 GMT");
|
||||
$signTime = DateTime::createFromFormat("D, d M Y H:i:s T", "Wed, 28 Dec 2022 10:27:41 GMT");
|
||||
#$signCtx = new SigningContext(bucket: "examplebucket", request: $request, subResource: ["resourceGroup"], credentials: $cred, time: $signTime);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->bucket = 'examplebucket';
|
||||
$signCtx->request = $request;
|
||||
$signCtx->subResource = ["resourceGroup"];
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $signTime;
|
||||
$signer = new SignerV1();
|
||||
$signer->sign($signCtx);
|
||||
$signToString = "GET\n\n\nWed, 28 Dec 2022 10:27:41 GMT\nx-oss-date:Wed, 28 Dec 2022 10:27:41 GMT\n/examplebucket/?acl&resourceGroup";
|
||||
$this->assertEquals($signToString, $signCtx->stringToSign);
|
||||
$this->assertEquals($signTime, $signCtx->time);
|
||||
$request = $signCtx->request;
|
||||
$this->assertEquals("OSS ak:x3E5TgOvl/i7PN618s5mEvpJDYk=", $request->getHeaderLine("Authorization"));
|
||||
|
||||
// case 5
|
||||
$request = new Request("GET", "https://examplebucket.oss-cn-hangzhou.aliyuncs.com/?resourceGroup&acl");
|
||||
$request = $request->withHeader("x-oss-date", "Wed, 28 Dec 2022 10:27:41 GMT");
|
||||
#$signCtx = new SigningContext(bucket: "examplebucket", request: $request, subResource: ["resourceGroup"], credentials: $cred);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->bucket = 'examplebucket';
|
||||
$signCtx->request = $request;
|
||||
$signCtx->subResource = ["resourceGroup"];
|
||||
$signCtx->credentials = $cred;
|
||||
$signer = new SignerV1();
|
||||
$signer->sign($signCtx);
|
||||
$this->assertNotNull($signCtx->stringToSign);
|
||||
$this->assertNotNull($signCtx->time->format("D, d M Y H:i:s"));
|
||||
$request = $signCtx->request;
|
||||
$this->assertNotNull($request->getHeaderLine("Authorization"));
|
||||
|
||||
$provider = new StaticCredentialsProvider("ak", "sk", "token");
|
||||
$cred = $provider->getCredentials();
|
||||
$request = new Request("GET", "https://examplebucket.oss-cn-hangzhou.aliyuncs.com/?resourceGroup&acl");
|
||||
$request = $request->withHeader("x-oss-date", "Wed, 28 Dec 2022 10:27:41 GMT");
|
||||
#$signCtx = new SigningContext(bucket: "examplebucket", request: $request, subResource: ["resourceGroup"], credentials: $cred);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->bucket = 'examplebucket';
|
||||
$signCtx->request = $request;
|
||||
$signCtx->subResource = ["resourceGroup"];
|
||||
$signCtx->credentials = $cred;
|
||||
$signer = new SignerV1();
|
||||
$signer->sign($signCtx);
|
||||
$this->assertNotNull($signCtx->stringToSign);
|
||||
$this->assertNotNull($signCtx->time->format("D, d M Y H:i:s"));
|
||||
$request = $signCtx->request;
|
||||
$this->assertNotNull($request->getHeaderLine("Authorization"));
|
||||
}
|
||||
|
||||
public function testInvalidArgument()
|
||||
{
|
||||
try {
|
||||
$signer = new SignerV1();
|
||||
$signer->sign(null);
|
||||
} catch (\TypeError $e) {
|
||||
$this->assertStringContainsString("AlibabaCloud\Oss\V2\Signer\SigningContext, null given", $e->getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
$provider = new StaticCredentialsProvider("", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
#$signCtx = new SigningContext(credentials: $cred);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->credentials = $cred;
|
||||
$signer = new SignerV1();
|
||||
$signer->sign($signCtx);
|
||||
} catch (\Exception $e) {
|
||||
$this->assertSame("SigningContext Credentials is null or empty.", $e->getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
$provider = new StaticCredentialsProvider("ak", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
#$signCtx = new SigningContext(credentials: $cred);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->credentials = $cred;
|
||||
$signer = new SignerV1();
|
||||
$signer->sign($signCtx);
|
||||
} catch (\Exception $e) {
|
||||
$this->assertSame("SigningContext Request is null.", $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function testAuthQuery()
|
||||
{
|
||||
$provider = new StaticCredentialsProvider("ak", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
|
||||
// case 1
|
||||
$request = new Request("GET", "https://bucket.oss-cn-hangzhou.aliyuncs.com/key?versionId=versionId");
|
||||
$signTime = DateTime::createFromFormat("D, d M Y H:i:s T", "Sun, 12 Nov 2023 16:43:40 GMT");
|
||||
#$signCtx = new SigningContext(bucket: "bucket", key: "key", request: $request, credentials: $cred, time: $signTime, authMethodQuery: true);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = 'key';
|
||||
$signCtx->request = $request;
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $signTime;
|
||||
$signCtx->authMethodQuery = true;
|
||||
$signer = new SignerV1();
|
||||
$signer->sign($signCtx);
|
||||
$signUrl = "https://bucket.oss-cn-hangzhou.aliyuncs.com/key?Expires=1699807420&OSSAccessKeyId=ak&Signature=dcLTea%2BYh9ApirQ8o8dOPqtvJXQ%3D&versionId=versionId";
|
||||
$request = $signCtx->request;
|
||||
$uri = $request->getUri();
|
||||
$this->assertEquals($signUrl, (string)$uri);
|
||||
$this->assertEquals($signTime, $signCtx->time);
|
||||
|
||||
// case 2
|
||||
$provider = new StaticCredentialsProvider("ak", "sk", "token");
|
||||
$cred = $provider->getCredentials();
|
||||
$request = new Request("GET", "https://bucket.oss-cn-hangzhou.aliyuncs.com/key%2B123?versionId=versionId");
|
||||
$signTime = DateTime::createFromFormat("D, d M Y H:i:s T", "Sun, 12 Nov 2023 16:56:44 GMT");
|
||||
#$signCtx = new SigningContext(bucket: "bucket", key: "key+123", request: $request, credentials: $cred, time: $signTime, authMethodQuery: true);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = 'key+123';
|
||||
$signCtx->request = $request;
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $signTime;
|
||||
$signCtx->authMethodQuery = true;
|
||||
$signer = new SignerV1();
|
||||
$signer->sign($signCtx);
|
||||
$signUrl = "https://bucket.oss-cn-hangzhou.aliyuncs.com/key%2B123?Expires=1699808204&OSSAccessKeyId=ak&Signature=jzKYRrM5y6Br0dRFPaTGOsbrDhY%3D&security-token=token&versionId=versionId";
|
||||
$request = $signCtx->request;
|
||||
$uri = $request->getUri();
|
||||
$this->assertEquals($signUrl, (string)$uri);
|
||||
$this->assertEquals($signTime, $signCtx->time);
|
||||
|
||||
// case 3
|
||||
$provider = new StaticCredentialsProvider("ak", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
|
||||
$request = new Request("GET", "https://bucket.oss-cn-hangzhou.aliyuncs.com/key 123");
|
||||
$signTime = DateTime::createFromFormat("D, d M Y H:i:s T", "Sun, 12 Nov 2023 16:43:40 GMT");
|
||||
#$signCtx = new SigningContext(bucket: "bucket", key: "key", request: $request, credentials: $cred, time: $signTime, authMethodQuery: true);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = 'key';
|
||||
$signCtx->request = $request;
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $signTime;
|
||||
$signCtx->authMethodQuery = true;
|
||||
$signer = new SignerV1();
|
||||
$signer->sign($signCtx);
|
||||
$signUrl = "https://bucket.oss-cn-hangzhou.aliyuncs.com/key%20123?Expires=1699807420&OSSAccessKeyId=ak&Signature=tYKe4BGVXY%2FMIl5F0qSoNfAnpkk%3D";
|
||||
$request = $signCtx->request;
|
||||
$uri = $request->getUri();
|
||||
$this->assertEquals($signUrl, (string)$uri);
|
||||
$this->assertEquals($signTime, $signCtx->time);
|
||||
|
||||
// case 4
|
||||
$provider = new StaticCredentialsProvider("ak", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
|
||||
$request = new Request("GET", "https://bucket.oss-cn-hangzhou.aliyuncs.com/key 123");
|
||||
$signTime = DateTime::createFromFormat("D, d M Y H:i:s T", "Sun, 12 Nov 2023 16:43:40 GMT");
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = 'key';
|
||||
$signCtx->request = $request;
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->authMethodQuery = true;
|
||||
$signer = new SignerV1();
|
||||
$signer->sign($signCtx);
|
||||
$signTime = (new DateTime('now', new DateTimeZone('UTC')))->modify('+' . SignerV1::DEFAULT_EXPIRES_DURATION . 'seconds');
|
||||
$request = $signCtx->request;
|
||||
$uri = $request->getUri();
|
||||
$this->assertStringContainsString("https://bucket.oss-cn-hangzhou.aliyuncs.com/key%20123?Expires=" . (string)$signTime->getTimestamp() . "&OSSAccessKeyId=ak&Signature=", (string)$uri);
|
||||
}
|
||||
}
|
||||
618
vendor/alibabacloud/oss-v2/tests/UnitTests/Signer/SignerV4Test.php
vendored
Normal file
618
vendor/alibabacloud/oss-v2/tests/UnitTests/Signer/SignerV4Test.php
vendored
Normal file
@@ -0,0 +1,618 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Signer;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Credentials\StaticCredentialsProvider;
|
||||
use AlibabaCloud\Oss\V2\Defaults;
|
||||
use AlibabaCloud\Oss\V2\Signer\SignerV4;
|
||||
use AlibabaCloud\Oss\V2\Signer\SigningContext;
|
||||
use DateTime;
|
||||
use DateTimeZone;
|
||||
use GuzzleHttp\Psr7\Request;
|
||||
|
||||
class SignerV4Test extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
|
||||
public function testAuthHeader()
|
||||
{
|
||||
$provider = new StaticCredentialsProvider("ak", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
|
||||
// case 1
|
||||
$request = new Request("PUT", "https://bucket.oss-cn-hangzhou.aliyuncs.com");
|
||||
$request = $request->withHeader("x-oss-head1", "value")
|
||||
->withHeader("abc", "value")
|
||||
->withHeader("ZAbc", "value")
|
||||
->withHeader("XYZ", "value")
|
||||
->withHeader("content-type", "text/plain")
|
||||
->withHeader("x-oss-content-sha256", "UNSIGNED-PAYLOAD");
|
||||
$signTime = new DateTime("@1702743657");
|
||||
#$signCtx = new SigningContext(product: "oss", region: "cn-hangzhou", bucket: "bucket", key: "1234+-/123/1.txt", request: $request, credentials: $cred, time: $signTime);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = 'oss';
|
||||
$signCtx->region = 'cn-hangzhou';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = '1234+-/123/1.txt';
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $signTime;
|
||||
$signer = new SignerV4();
|
||||
$query['param1'] = 'value1';
|
||||
$query['+param1'] = 'value3';
|
||||
$query['|param1'] = 'value4';
|
||||
$query['+param2'] = '';
|
||||
$query['|param2'] = '';
|
||||
$query['param2'] = '';
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$this->assertEquals('OSS4-HMAC-SHA256 Credential=ak/20231216/cn-hangzhou/oss/aliyun_v4_request,Signature=e21d18daa82167720f9b1047ae7e7f1ce7cb77a31e8203a7d5f4624fa0284afe', $request->getHeaderLine("Authorization"));
|
||||
|
||||
// case 2
|
||||
$query = array();
|
||||
$request = new Request("POST", "https://bucket.oss-cn-hangzhou.aliyuncs.com");
|
||||
$request = $request->withHeader("content-type", "text/plain")
|
||||
->withHeader("x-oss-content-sha256", "UNSIGNED-PAYLOAD");
|
||||
$signTime = new DateTime("@1702743657");
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = 'oss';
|
||||
$signCtx->region = 'cn-hangzhou';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = 'object';
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $signTime;
|
||||
$signer = new SignerV4();
|
||||
$query['position'] = 0;
|
||||
$query['append'] = "";
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$this->assertEquals('OSS4-HMAC-SHA256 Credential=ak/20231216/cn-hangzhou/oss/aliyun_v4_request,Signature=f7a645f23a0434ea90d5e2bb2bca90d0fda9ef4bc54a9c5008b2134e7c9023f2', $request->getHeaderLine("Authorization"));
|
||||
|
||||
// case 3
|
||||
$query = array();
|
||||
$request = new Request("POST", "https://bucket.oss-cn-hangzhou.aliyuncs.com");
|
||||
$request = $request->withHeader("content-type", "text/plain");
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = 'oss';
|
||||
$signCtx->region = 'cn-hangzhou';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = 'object';
|
||||
$signCtx->credentials = $cred;
|
||||
$signer = new SignerV4();
|
||||
$query['position'] = 0;
|
||||
$query['append'] = "";
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$this->assertStringContainsString('OSS4-HMAC-SHA256', $request->getHeaderLine("Authorization"));
|
||||
$date = (new DateTime('now', new DateTimeZone('UTC')))->format("Ymd");
|
||||
$this->assertStringContainsString("ak/{$date}/cn-hangzhou/oss/aliyun_v4_request", $request->getHeaderLine("Authorization"));
|
||||
$this->assertStringContainsString('Signature=', $request->getHeaderLine("Authorization"));
|
||||
}
|
||||
|
||||
public function testAuthHeaderWithCloudBox()
|
||||
{
|
||||
$provider = new StaticCredentialsProvider("ak", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
|
||||
// case 1
|
||||
$request = new Request("PUT", "http://bucket.cb-123.cn-hangzhou.oss-cloudbox.aliyuncs.com/1234+-/123/1.txt");
|
||||
$request = $request->withHeader("x-oss-head1", "value")
|
||||
->withHeader("abc", "value")
|
||||
->withHeader("ZAbc", "value")
|
||||
->withHeader("XYZ", "value")
|
||||
->withHeader("content-type", "text/plain")
|
||||
->withHeader("x-oss-content-sha256", "UNSIGNED-PAYLOAD");
|
||||
$signTime = new DateTime("@1702743657");
|
||||
#$signCtx = new SigningContext(product: "oss", region: "cn-hangzhou", bucket: "bucket", key: "1234+-/123/1.txt", request: $request, credentials: $cred, time: $signTime);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = Defaults::CLOUD_BOX_PRODUCT;
|
||||
$signCtx->region = 'cb-123';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = '1234+-/123/1.txt';
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $signTime;
|
||||
$signer = new SignerV4();
|
||||
$query['param1'] = 'value1';
|
||||
$query['+param1'] = 'value3';
|
||||
$query['|param1'] = 'value4';
|
||||
$query['+param2'] = '';
|
||||
$query['|param2'] = '';
|
||||
$query['param2'] = '';
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$this->assertEquals('OSS4-HMAC-SHA256 Credential=ak/20231216/cb-123/oss-cloudbox/aliyun_v4_request,Signature=94ce1f12c17d148ea681030275a94449d3357f5b5b21133996eec80af3e08a43', $request->getHeaderLine("Authorization"));
|
||||
}
|
||||
|
||||
public function testAuthHeaderToken()
|
||||
{
|
||||
$provider = new StaticCredentialsProvider("ak", "sk", "token");
|
||||
$cred = $provider->getCredentials();
|
||||
|
||||
// case 1
|
||||
$request = new Request("PUT", "https://bucket.oss-cn-hangzhou.aliyuncs.com");
|
||||
$request = $request->withHeader("x-oss-head1", "value")
|
||||
->withHeader("abc", "value")
|
||||
->withHeader("ZAbc", "value")
|
||||
->withHeader("XYZ", "value")
|
||||
->withHeader("content-type", "text/plain")
|
||||
->withHeader("x-oss-content-sha256", "UNSIGNED-PAYLOAD");
|
||||
$signTime = new DateTime("@1702784856");
|
||||
#$signCtx = new SigningContext(product: "oss", region: "cn-hangzhou", bucket: "bucket", key: "1234+-/123/1.txt", request: $request, credentials: $cred, time: $signTime);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = 'oss';
|
||||
$signCtx->region = 'cn-hangzhou';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = '1234+-/123/1.txt';
|
||||
$signCtx->request = $request;
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $signTime;
|
||||
$signer = new SignerV4();
|
||||
$query['param1'] = 'value1';
|
||||
$query['+param1'] = 'value3';
|
||||
$query['|param1'] = 'value4';
|
||||
$query['+param2'] = '';
|
||||
$query['|param2'] = '';
|
||||
$query['param2'] = '';
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$this->assertEquals('OSS4-HMAC-SHA256 Credential=ak/20231217/cn-hangzhou/oss/aliyun_v4_request,Signature=b94a3f999cf85bcdc00d332fbd3734ba03e48382c36fa4d5af5df817395bd9ea', $request->getHeaderLine("Authorization"));
|
||||
}
|
||||
|
||||
public function testAuthHeaderWithAdditionalHeaders()
|
||||
{
|
||||
$provider = new StaticCredentialsProvider("ak", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
|
||||
// case 1
|
||||
$request = new Request("PUT", "https://bucket.oss-cn-hangzhou.aliyuncs.com");
|
||||
$request = $request->withHeader("x-oss-head1", "value")
|
||||
->withHeader("abc", "value")
|
||||
->withHeader("ZAbc", "value")
|
||||
->withHeader("XYZ", "value")
|
||||
->withHeader("content-type", "text/plain")
|
||||
->withHeader("x-oss-content-sha256", "UNSIGNED-PAYLOAD");
|
||||
$signTime = new DateTime("@1702747512");
|
||||
#$signCtx = new SigningContext(product: "oss", region: "cn-hangzhou", bucket: "bucket", key: "1234+-/123/1.txt", request: $request, additionalHeaders: ["ZAbc", "abc"], credentials: $cred, time: $signTime);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = 'oss';
|
||||
$signCtx->region = 'cn-hangzhou';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = '1234+-/123/1.txt';
|
||||
$signCtx->request = $request;
|
||||
$signCtx->additionalHeaders = ["ZAbc", "abc"];
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $signTime;
|
||||
$signer = new SignerV4();
|
||||
$query['param1'] = 'value1';
|
||||
$query['+param1'] = 'value3';
|
||||
$query['|param1'] = 'value4';
|
||||
$query['+param2'] = '';
|
||||
$query['|param2'] = '';
|
||||
$query['param2'] = '';
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$this->assertEquals('OSS4-HMAC-SHA256 Credential=ak/20231216/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=abc;zabc,Signature=4a4183c187c07c8947db7620deb0a6b38d9fbdd34187b6dbaccb316fa251212f', $request->getHeaderLine("Authorization"));
|
||||
|
||||
// case 2:with default signed header
|
||||
$request = new Request("PUT", "https://bucket.oss-cn-hangzhou.aliyuncs.com");
|
||||
$request = $request->withHeader("x-oss-head1", "value")
|
||||
->withHeader("abc", "value")
|
||||
->withHeader("ZAbc", "value")
|
||||
->withHeader("XYZ", "value")
|
||||
->withHeader("content-type", "text/plain")
|
||||
->withHeader("x-oss-content-sha256", "UNSIGNED-PAYLOAD");
|
||||
$signTime = new DateTime("@1702747512");
|
||||
#$signCtx = new SigningContext(product: "oss", region: "cn-hangzhou", bucket: "bucket", key: "1234+-/123/1.txt", request: $request, additionalHeaders: ["x-oss-no-exist", "ZAbc", "x-oss-head1", "abc"], credentials: $cred, time: $signTime);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = 'oss';
|
||||
$signCtx->region = 'cn-hangzhou';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = '1234+-/123/1.txt';
|
||||
$signCtx->request = $request;
|
||||
$signCtx->additionalHeaders = ["x-oss-no-exist", "ZAbc", "x-oss-head1", "abc"];
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $signTime;
|
||||
$signer = new SignerV4();
|
||||
$query['param1'] = 'value1';
|
||||
$query['+param1'] = 'value3';
|
||||
$query['|param1'] = 'value4';
|
||||
$query['+param2'] = '';
|
||||
$query['|param2'] = '';
|
||||
$query['param2'] = '';
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$this->assertEquals('OSS4-HMAC-SHA256 Credential=ak/20231216/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=abc;zabc,Signature=4a4183c187c07c8947db7620deb0a6b38d9fbdd34187b6dbaccb316fa251212f', $request->getHeaderLine("Authorization"));
|
||||
}
|
||||
|
||||
public function testInvalidArgument()
|
||||
{
|
||||
try {
|
||||
$signer = new SignerV4();
|
||||
$signer->sign(null);
|
||||
} catch (\TypeError $e) {
|
||||
$this->assertStringContainsString("AlibabaCloud\Oss\V2\Signer\SigningContext, null given", $e->getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
$signCtx = new SigningContext();
|
||||
$signer = new SignerV4();
|
||||
$signer->sign($signCtx);
|
||||
} catch (\Exception $e) {
|
||||
$this->assertSame("SigningContext Credentials is null or empty.", $e->getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
$provider = new StaticCredentialsProvider("", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
#$signCtx = new SigningContext(credentials: $cred);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->credentials = $cred;
|
||||
$signer = new SignerV4();
|
||||
$signer->sign($signCtx);
|
||||
} catch (\Exception $e) {
|
||||
$this->assertSame("SigningContext Credentials is null or empty.", $e->getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
$provider = new StaticCredentialsProvider("ak", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
#$signCtx = new SigningContext(credentials: $cred);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->credentials = $cred;
|
||||
$signer = new SignerV4();
|
||||
$signer->sign($signCtx);
|
||||
} catch (\Exception $e) {
|
||||
$this->assertSame("SigningContext Region is empty.", $e->getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
$provider = new StaticCredentialsProvider("ak", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
#$signCtx = new SigningContext(credentials: $cred, region: 'cn-hangzhou');
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->region = 'cn-hangzhou';
|
||||
$signer = new SignerV4();
|
||||
$signer->sign($signCtx);
|
||||
} catch (\Exception $e) {
|
||||
$this->assertSame("SigningContext Request is null.", $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function testAuthQuery()
|
||||
{
|
||||
$provider = new StaticCredentialsProvider("ak", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
|
||||
// case 1
|
||||
$request = new Request("PUT", "https://bucket.oss-cn-hangzhou.aliyuncs.com");
|
||||
$request = $request->withHeader("x-oss-head1", "value")
|
||||
->withHeader("abc", "value")
|
||||
->withHeader("ZAbc", "value")
|
||||
->withHeader("XYZ", "value")
|
||||
->withHeader("content-type", "application/octet-stream");
|
||||
$signTime = new DateTime("@1702781677");
|
||||
$time = new DateTime("@1702782276");
|
||||
#$signCtx = new SigningContext(product: "oss", region: "cn-hangzhou", bucket: "bucket", key: "1234+-/123/1.txt", request: $request, credentials: $cred, time: $time, authMethodQuery: true);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = 'oss';
|
||||
$signCtx->region = 'cn-hangzhou';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = '1234+-/123/1.txt';
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $time;
|
||||
$signCtx->authMethodQuery = true;
|
||||
$signCtx->signTime = $signTime;
|
||||
$signer = new SignerV4();
|
||||
$query['param1'] = 'value1';
|
||||
$query['+param1'] = 'value3';
|
||||
$query['|param1'] = 'value4';
|
||||
$query['+param2'] = '';
|
||||
$query['|param2'] = '';
|
||||
$query['param2'] = '';
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$queryParams = $request->getUri()->getQuery();
|
||||
parse_str($queryParams, $parsedQuery);
|
||||
$this->assertEquals('OSS4-HMAC-SHA256', $parsedQuery['x-oss-signature-version']);
|
||||
$this->assertEquals('599', $parsedQuery['x-oss-expires']);
|
||||
$this->assertEquals('ak/20231217/cn-hangzhou/oss/aliyun_v4_request', $parsedQuery['x-oss-credential']);
|
||||
$this->assertEquals('a39966c61718be0d5b14e668088b3fa07601033f6518ac7b523100014269c0fe', $parsedQuery['x-oss-signature']);
|
||||
$this->assertFalse(array_key_exists('x-oss-additional-headers', $parsedQuery));
|
||||
|
||||
// case 2
|
||||
$request = new Request("PUT", "https://bucket.oss-cn-hangzhou.aliyuncs.com");
|
||||
$request = $request->withHeader("x-oss-head1", "value")
|
||||
->withHeader("abc", "value")
|
||||
->withHeader("ZAbc", "value")
|
||||
->withHeader("XYZ", "value")
|
||||
->withHeader("content-type", "application/octet-stream");
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = 'oss';
|
||||
$signCtx->region = 'cn-hangzhou';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = '1234+-/123/1.txt';
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->authMethodQuery = true;
|
||||
$signer = new SignerV4();
|
||||
$query['param1'] = 'value1';
|
||||
$query['+param1'] = 'value3';
|
||||
$query['|param1'] = 'value4';
|
||||
$query['+param2'] = '';
|
||||
$query['|param2'] = '';
|
||||
$query['param2'] = '';
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$queryParams = $request->getUri()->getQuery();
|
||||
parse_str($queryParams, $parsedQuery);
|
||||
$this->assertEquals('OSS4-HMAC-SHA256', $parsedQuery['x-oss-signature-version']);
|
||||
$date = (new DateTime('now', new DateTimeZone('UTC')))->format("Ymd");
|
||||
$this->assertEquals('900', $parsedQuery['x-oss-expires']);
|
||||
$this->assertEquals("ak/{$date}/cn-hangzhou/oss/aliyun_v4_request", $parsedQuery['x-oss-credential']);
|
||||
$this->assertNotEmpty($parsedQuery['x-oss-signature']);
|
||||
$this->assertFalse(array_key_exists('x-oss-additional-headers', $parsedQuery));
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function testAuthQueryToken()
|
||||
{
|
||||
$provider = new StaticCredentialsProvider("ak", "sk", "token");
|
||||
$cred = $provider->getCredentials();
|
||||
|
||||
// case 1
|
||||
$request = new Request("PUT", "https://bucket.oss-cn-hangzhou.aliyuncs.com");
|
||||
$request = $request->withHeader("x-oss-head1", "value")
|
||||
->withHeader("abc", "value")
|
||||
->withHeader("ZAbc", "value")
|
||||
->withHeader("XYZ", "value")
|
||||
->withHeader("content-type", "application/octet-stream");
|
||||
$signTime = new DateTime("@1702785388");
|
||||
$time = new DateTime("@1702785987");
|
||||
#$signCtx = new SigningContext(product: "oss", region: "cn-hangzhou", bucket: "bucket", key: "1234+-/123/1.txt", request: $request, credentials: $cred, time: $time, authMethodQuery: true);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = 'oss';
|
||||
$signCtx->region = 'cn-hangzhou';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = '1234+-/123/1.txt';
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $time;
|
||||
$signCtx->authMethodQuery = true;
|
||||
$signCtx->signTime = $signTime;
|
||||
$signer = new SignerV4();
|
||||
$query['param1'] = 'value1';
|
||||
$query['+param1'] = 'value3';
|
||||
$query['|param1'] = 'value4';
|
||||
$query['+param2'] = '';
|
||||
$query['|param2'] = '';
|
||||
$query['param2'] = '';
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$queryParams = $request->getUri()->getQuery();
|
||||
parse_str($queryParams, $parsedQuery);
|
||||
$this->assertEquals('OSS4-HMAC-SHA256', $parsedQuery['x-oss-signature-version']);
|
||||
$this->assertEquals('599', $parsedQuery['x-oss-expires']);
|
||||
$this->assertEquals('ak/20231217/cn-hangzhou/oss/aliyun_v4_request', $parsedQuery['x-oss-credential']);
|
||||
$this->assertEquals('3817ac9d206cd6dfc90f1c09c00be45005602e55898f26f5ddb06d7892e1f8b5', $parsedQuery['x-oss-signature']);
|
||||
$this->assertFalse(array_key_exists('x-oss-additional-headers', $parsedQuery));
|
||||
}
|
||||
|
||||
public function testAuthQueryWithAdditionalHeaders()
|
||||
{
|
||||
$provider = new StaticCredentialsProvider("ak", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
|
||||
// case 1
|
||||
$request = new Request("PUT", "https://bucket.oss-cn-hangzhou.aliyuncs.com");
|
||||
$request = $request->withHeader("x-oss-head1", "value")
|
||||
->withHeader("abc", "value")
|
||||
->withHeader("ZAbc", "value")
|
||||
->withHeader("XYZ", "value")
|
||||
->withHeader("content-type", "application/octet-stream");
|
||||
$signTime = new DateTime("@1702783809");
|
||||
$time = new DateTime("@1702784408");
|
||||
#$signCtx = new SigningContext(product: "oss", region: "cn-hangzhou", bucket: "bucket", key: "1234+-/123/1.txt", request: $request, additionalHeaders: ["ZAbc", "abc"], credentials: $cred, time: $time, authMethodQuery: true);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = 'oss';
|
||||
$signCtx->region = 'cn-hangzhou';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = '1234+-/123/1.txt';
|
||||
$signCtx->additionalHeaders = ["ZAbc", "abc"];
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $time;
|
||||
$signCtx->authMethodQuery = true;
|
||||
$signCtx->signTime = $signTime;
|
||||
$signer = new SignerV4();
|
||||
$query['param1'] = 'value1';
|
||||
$query['+param1'] = 'value3';
|
||||
$query['|param1'] = 'value4';
|
||||
$query['+param2'] = '';
|
||||
$query['|param2'] = '';
|
||||
$query['param2'] = '';
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query, '', '&', PHP_QUERY_RFC3986)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$queryParams = $request->getUri()->getQuery();
|
||||
parse_str($queryParams, $parsedQuery);
|
||||
$this->assertEquals('OSS4-HMAC-SHA256', $parsedQuery['x-oss-signature-version']);
|
||||
$this->assertEquals('599', $parsedQuery['x-oss-expires']);
|
||||
$this->assertEquals('ak/20231217/cn-hangzhou/oss/aliyun_v4_request', $parsedQuery['x-oss-credential']);
|
||||
$this->assertEquals('6bd984bfe531afb6db1f7550983a741b103a8c58e5e14f83ea474c2322dfa2b7', $parsedQuery['x-oss-signature']);
|
||||
$this->assertEquals('abc;zabc', $parsedQuery['x-oss-additional-headers']);
|
||||
|
||||
// case 2:with default signed header
|
||||
$request = new Request("PUT", "https://bucket.oss-cn-hangzhou.aliyuncs.com");
|
||||
$request = $request->withHeader("x-oss-head1", "value")
|
||||
->withHeader("abc", "value")
|
||||
->withHeader("ZAbc", "value")
|
||||
->withHeader("XYZ", "value")
|
||||
->withHeader("content-type", "application/octet-stream");
|
||||
$signTime = new DateTime("@1702783809");
|
||||
$time = new DateTime("@1702784408");
|
||||
#$signCtx = new SigningContext(product: "oss", region: "cn-hangzhou", bucket: "bucket", key: "1234+-/123/1.txt", request: $request, additionalHeaders: ["x-oss-no-exist", "abc", "x-oss-head1", "ZAbc"], credentials: $cred, time: $time, authMethodQuery: true);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = 'oss';
|
||||
$signCtx->region = 'cn-hangzhou';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = '1234+-/123/1.txt';
|
||||
$signCtx->additionalHeaders = ["x-oss-no-exist", "abc", "x-oss-head1", "ZAbc"];
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $time;
|
||||
$signCtx->authMethodQuery = true;
|
||||
$signCtx->signTime = $signTime;
|
||||
$signer = new SignerV4();
|
||||
$query['param1'] = 'value1';
|
||||
$query['+param1'] = 'value3';
|
||||
$query['|param1'] = 'value4';
|
||||
$query['+param2'] = '';
|
||||
$query['|param2'] = '';
|
||||
$query['param2'] = '';
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query, '', '&', PHP_QUERY_RFC3986)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$queryParams = $request->getUri()->getQuery();
|
||||
parse_str($queryParams, $parsedQuery);
|
||||
$this->assertEquals('OSS4-HMAC-SHA256', $parsedQuery['x-oss-signature-version']);
|
||||
$this->assertEquals('20231217T033009Z', $parsedQuery['x-oss-date']);
|
||||
$this->assertEquals('599', $parsedQuery['x-oss-expires']);
|
||||
$this->assertEquals('ak/20231217/cn-hangzhou/oss/aliyun_v4_request', $parsedQuery['x-oss-credential']);
|
||||
$this->assertEquals('6bd984bfe531afb6db1f7550983a741b103a8c58e5e14f83ea474c2322dfa2b7', $parsedQuery['x-oss-signature']);
|
||||
$this->assertEquals('abc;zabc', $parsedQuery['x-oss-additional-headers']);
|
||||
|
||||
// case 3
|
||||
$request = new Request("PUT", "https://bucket.oss-cn-hangzhou.aliyuncs.com/key 123.txt");
|
||||
$request = $request->withHeader("x-oss-head1", "value")
|
||||
->withHeader("abc", "value")
|
||||
->withHeader("ZAbc", "value")
|
||||
->withHeader("XYZ", "value")
|
||||
->withHeader("content-type", "application/octet-stream");
|
||||
$signTime = new DateTime("@1702783809");
|
||||
$time = new DateTime("@1702784408");
|
||||
#$signCtx = new SigningContext(product: "oss", region: "cn-hangzhou", bucket: "bucket", key: "key 123.txt", request: $request, additionalHeaders: ["ZAbc", "abc"], credentials: $cred, time: $time, authMethodQuery: true);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = 'oss';
|
||||
$signCtx->region = 'cn-hangzhou';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = 'key 123.txt';
|
||||
$signCtx->additionalHeaders = ["ZAbc", "abc"];
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $signTime;
|
||||
$signCtx->time = $time;
|
||||
$signCtx->authMethodQuery = true;
|
||||
$signCtx->signTime = $signTime;
|
||||
$signer = new SignerV4();
|
||||
$query['param1'] = 'value1';
|
||||
$query['+param1'] = 'value3';
|
||||
$query['|param1'] = 'value4';
|
||||
$query['+param2'] = '';
|
||||
$query['|param2'] = '';
|
||||
$query['param2'] = '';
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query, '', '&', PHP_QUERY_RFC3986)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$queryParams = $request->getUri()->getQuery();
|
||||
parse_str($queryParams, $parsedQuery);
|
||||
$uri = $request->getUri();
|
||||
$signUrl = "https://bucket.oss-cn-hangzhou.aliyuncs.com/key%20123.txt?%2Bparam1=value3&%2Bparam2=¶m1=value1¶m2=&x-oss-additional-headers=abc%3Bzabc&x-oss-credential=ak%2F20231217%2Fcn-hangzhou%2Foss%2Faliyun_v4_request&x-oss-date=20231217T033009Z&x-oss-expires=599&x-oss-signature=33208021567953241c3cc1d95ecf1864f8561890c30d29488ce76c7afb81a623&x-oss-signature-version=OSS4-HMAC-SHA256&%7Cparam1=value4&%7Cparam2=";
|
||||
$this->assertEquals($signUrl, (string)$uri);
|
||||
$this->assertEquals('OSS4-HMAC-SHA256', $parsedQuery['x-oss-signature-version']);
|
||||
$this->assertEquals('599', $parsedQuery['x-oss-expires']);
|
||||
$this->assertEquals('ak/20231217/cn-hangzhou/oss/aliyun_v4_request', $parsedQuery['x-oss-credential']);
|
||||
$this->assertEquals('33208021567953241c3cc1d95ecf1864f8561890c30d29488ce76c7afb81a623', $parsedQuery['x-oss-signature']);
|
||||
$this->assertEquals('abc;zabc', $parsedQuery['x-oss-additional-headers']);
|
||||
}
|
||||
|
||||
public function testAuthQueryWithCloudBox()
|
||||
{
|
||||
$provider = new StaticCredentialsProvider("ak", "sk");
|
||||
$cred = $provider->getCredentials();
|
||||
|
||||
// case 1
|
||||
$request = new Request("PUT", "http://bucket.cb-123.cn-hangzhou.oss-cloudbox.aliyuncs.com/1234+-/123/1.txt");
|
||||
$request = $request->withHeader("x-oss-head1", "value")
|
||||
->withHeader("abc", "value")
|
||||
->withHeader("ZAbc", "value")
|
||||
->withHeader("XYZ", "value")
|
||||
->withHeader("content-type", "application/octet-stream");
|
||||
$signTime = new DateTime("@1702781677");
|
||||
$time = new DateTime("@1702782276");
|
||||
#$signCtx = new SigningContext(product: "oss", region: "cn-hangzhou", bucket: "bucket", key: "1234+-/123/1.txt", request: $request, credentials: $cred, time: $time, authMethodQuery: true);
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = Defaults::CLOUD_BOX_PRODUCT;
|
||||
$signCtx->region = 'cb-123';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = '1234+-/123/1.txt';
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->time = $time;
|
||||
$signCtx->authMethodQuery = true;
|
||||
$signCtx->signTime = $signTime;
|
||||
$signCtx->additionalHeaders = ["ZAbc", "abc"];
|
||||
$signer = new SignerV4();
|
||||
$query['param1'] = 'value1';
|
||||
$query['+param1'] = 'value3';
|
||||
$query['|param1'] = 'value4';
|
||||
$query['+param2'] = '';
|
||||
$query['|param2'] = '';
|
||||
$query['param2'] = '';
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$queryParams = $request->getUri()->getQuery();
|
||||
parse_str($queryParams, $parsedQuery);
|
||||
$this->assertEquals('OSS4-HMAC-SHA256', $parsedQuery['x-oss-signature-version']);
|
||||
$this->assertEquals('599', $parsedQuery['x-oss-expires']);
|
||||
$this->assertEquals('ak/20231217/cb-123/oss-cloudbox/aliyun_v4_request', $parsedQuery['x-oss-credential']);
|
||||
$this->assertEquals('07284191b9b4978ac3520cd39ee2dea2747eda454089359371ff463a6c7ba20f', $parsedQuery['x-oss-signature']);
|
||||
$this->assertTrue(array_key_exists('x-oss-additional-headers', $parsedQuery));
|
||||
$this->assertEquals('abc;zabc', $parsedQuery['x-oss-additional-headers']);
|
||||
|
||||
// with default signed header
|
||||
$request = new Request("PUT", "http://bucket.cb-123.cn-hangzhou.oss-cloudbox.aliyuncs.com/1234+-/123/1.txt");
|
||||
$request = $request->withHeader("x-oss-head1", "value")
|
||||
->withHeader("x-oss-head1", "value")
|
||||
->withHeader("abc", "value")
|
||||
->withHeader("ZAbc", "value")
|
||||
->withHeader("XYZ", "value")
|
||||
->withHeader("content-type", "application/octet-stream");
|
||||
$signTime = new DateTime("@1702783809");
|
||||
$time = new DateTime("@1702784408");
|
||||
$signCtx = new SigningContext();
|
||||
$signCtx->product = 'oss-cloudbox';
|
||||
$signCtx->region = 'cb-123';
|
||||
$signCtx->bucket = 'bucket';
|
||||
$signCtx->key = '1234+-/123/1.txt';
|
||||
$signCtx->credentials = $cred;
|
||||
$signCtx->authMethodQuery = true;
|
||||
$signCtx->signTime = $signTime;
|
||||
$signCtx->time = $time;
|
||||
$signCtx->additionalHeaders = ["x-oss-no-exist", "abc", "x-oss-head1", "ZAbc"];
|
||||
$signer = new SignerV4();
|
||||
$query['param1'] = 'value1';
|
||||
$query['+param1'] = 'value3';
|
||||
$query['|param1'] = 'value4';
|
||||
$query['+param2'] = '';
|
||||
$query['|param2'] = '';
|
||||
$query['param2'] = '';
|
||||
$signCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query)));
|
||||
$signer->sign($signCtx);
|
||||
$request = $signCtx->request;
|
||||
$queryParams = $request->getUri()->getQuery();
|
||||
parse_str($queryParams, $parsedQuery);
|
||||
$this->assertEquals('OSS4-HMAC-SHA256', $parsedQuery['x-oss-signature-version']);
|
||||
$this->assertEquals('599', $parsedQuery['x-oss-expires']);
|
||||
$this->assertEquals('ak/20231217/cb-123/oss-cloudbox/aliyun_v4_request', $parsedQuery['x-oss-credential']);
|
||||
$this->assertEquals('16782cc8a7a554523db055eb804b508522e7e370073108ad88ee2f47496701dd', $parsedQuery['x-oss-signature']);
|
||||
$this->assertTrue(array_key_exists('x-oss-additional-headers', $parsedQuery));
|
||||
$this->assertEquals('abc;zabc', $parsedQuery['x-oss-additional-headers']);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
482
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/AccessPointTest.php
vendored
Normal file
482
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/AccessPointTest.php
vendored
Normal file
@@ -0,0 +1,482 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\AccessPoint;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class AccessPointTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromCreateAccessPoint()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\CreateAccessPointRequest();
|
||||
$input = AccessPoint::fromCreateAccessPoint($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\CreateAccessPointRequest('bucket-123');
|
||||
$input = AccessPoint::fromCreateAccessPoint($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, createAccessPointConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\CreateAccessPointRequest('bucket-123', new Models\CreateAccessPointConfiguration(
|
||||
accessPointName: 'ap-01',
|
||||
networkOrigin: 'internet'
|
||||
));
|
||||
$input = AccessPoint::fromCreateAccessPoint($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><CreateAccessPointConfiguration><AccessPointName>ap-01</AccessPointName><NetworkOrigin>internet</NetworkOrigin></CreateAccessPointConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
$request = new Models\CreateAccessPointRequest('bucket-123', new Models\CreateAccessPointConfiguration(
|
||||
vpcConfiguration: new Models\AccessPointVpcConfiguration('vpc-t4nlw426y44rd3iq4xxxx'),
|
||||
accessPointName: 'ap-01',
|
||||
networkOrigin: 'vpc'
|
||||
));
|
||||
$input = AccessPoint::fromCreateAccessPoint($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><CreateAccessPointConfiguration><VpcConfiguration><VpcId>vpc-t4nlw426y44rd3iq4xxxx</VpcId></VpcConfiguration><AccessPointName>ap-01</AccessPointName><NetworkOrigin>vpc</NetworkOrigin></CreateAccessPointConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToCreateAccessPoint()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = AccessPoint::toCreateAccessPoint($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CreateAccessPointResult>
|
||||
<AccessPointArn>acs:oss:cn-hangzhou:128364106451xxxx:accesspoint/ap-01</AccessPointArn>
|
||||
<Alias>ap-01-45ee7945007a2f0bcb595f63e2215cxxxx-ossalias</Alias>
|
||||
</CreateAccessPointResult>';
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
body: Utils::streamFor($body)
|
||||
);
|
||||
$result = AccessPoint::toCreateAccessPoint($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('acs:oss:cn-hangzhou:128364106451xxxx:accesspoint/ap-01', $result->createAccessPoint->accessPointArn);
|
||||
$this->assertEquals('ap-01-45ee7945007a2f0bcb595f63e2215cxxxx-ossalias', $result->createAccessPoint->alias);
|
||||
}
|
||||
|
||||
public function testFromGetAccessPoint()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetAccessPointRequest();
|
||||
$input = AccessPoint::fromGetAccessPoint($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\GetAccessPointRequest('bucket-123');
|
||||
$input = AccessPoint::fromGetAccessPoint($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, accessPointName", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetAccessPointRequest('bucket-123', 'ap-01');
|
||||
$input = AccessPoint::fromGetAccessPoint($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
$this->assertEquals('ap-01', $input->getHeaders()['x-oss-access-point-name']);
|
||||
}
|
||||
|
||||
public function testToGetAccessPoint()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = AccessPoint::toGetAccessPoint($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<GetAccessPointResult>
|
||||
<AccessPointName>ap-01</AccessPointName>
|
||||
<Bucket>oss-example</Bucket>
|
||||
<AccountId>111933544165xxxx</AccountId>
|
||||
<NetworkOrigin>vpc</NetworkOrigin>
|
||||
<VpcConfiguration>
|
||||
<VpcId>vpc-t4nlw426y44rd3iq4xxxx</VpcId>
|
||||
</VpcConfiguration>
|
||||
<AccessPointArn>arn:acs:oss:cn-hangzhou:111933544165xxxx:accesspoint/ap-01</AccessPointArn>
|
||||
<CreationDate>1626769503</CreationDate>
|
||||
<Alias>ap-01-ossalias</Alias>
|
||||
<Status>enable</Status>
|
||||
<Endpoints>
|
||||
<PublicEndpoint>ap-01.oss-cn-hangzhou.oss-accesspoint.aliyuncs.com</PublicEndpoint>
|
||||
<InternalEndpoint>ap-01.oss-cn-hangzhou-internal.oss-accesspoint.aliyuncs.com</InternalEndpoint>
|
||||
</Endpoints>
|
||||
<PublicAccessBlockConfiguration>
|
||||
<BlockPublicAccess>true</BlockPublicAccess>
|
||||
</PublicAccessBlockConfiguration>
|
||||
</GetAccessPointResult>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
body: Utils::streamFor($body)
|
||||
);
|
||||
$result = AccessPoint::toGetAccessPoint($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('ap-01', $result->getAccessPoint->accessPointName);
|
||||
$this->assertEquals('oss-example', $result->getAccessPoint->bucket);
|
||||
$this->assertEquals('111933544165xxxx', $result->getAccessPoint->accountId);
|
||||
$this->assertEquals('vpc', $result->getAccessPoint->networkOrigin);
|
||||
$this->assertEquals('vpc-t4nlw426y44rd3iq4xxxx', $result->getAccessPoint->vpcConfiguration->vpcId);
|
||||
$this->assertEquals('arn:acs:oss:cn-hangzhou:111933544165xxxx:accesspoint/ap-01', $result->getAccessPoint->accessPointArn);
|
||||
$this->assertEquals('1626769503', $result->getAccessPoint->creationDate);
|
||||
$this->assertEquals('ap-01-ossalias', $result->getAccessPoint->alias);
|
||||
$this->assertEquals('enable', $result->getAccessPoint->status);
|
||||
$this->assertEquals('ap-01.oss-cn-hangzhou.oss-accesspoint.aliyuncs.com', $result->getAccessPoint->endpoints->publicEndpoint);
|
||||
$this->assertEquals('ap-01.oss-cn-hangzhou-internal.oss-accesspoint.aliyuncs.com', $result->getAccessPoint->endpoints->internalEndpoint);
|
||||
$this->assertTrue($result->getAccessPoint->publicAccessBlockConfiguration->blockPublicAccess);
|
||||
}
|
||||
|
||||
public function testFromDeleteAccessPoint()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteAccessPointRequest();
|
||||
$input = AccessPoint::fromDeleteAccessPoint($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\DeleteAccessPointRequest('bucket-123');
|
||||
$input = AccessPoint::fromDeleteAccessPoint($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, accessPointName", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteAccessPointRequest('bucket-123', 'ap-01');
|
||||
$input = AccessPoint::fromDeleteAccessPoint($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
$this->assertEquals('ap-01', $input->getHeaders()['x-oss-access-point-name']);
|
||||
}
|
||||
|
||||
public function testToDeleteAccessPoint()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = AccessPoint::toDeleteAccessPoint($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123'],
|
||||
);
|
||||
$result = AccessPoint::toDeleteAccessPoint($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromListAccessPoints()
|
||||
{
|
||||
$request = new Models\ListAccessPointsRequest();
|
||||
$input = AccessPoint::fromListAccessPoints($request);
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
|
||||
$request = new Models\ListAccessPointsRequest(10, 'token', 'bucket-123');
|
||||
$input = AccessPoint::fromListAccessPoints($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
$this->assertEquals('10', $input->getParameters()['max-keys']);
|
||||
$this->assertEquals('token', $input->getParameters()['continuation-token']);
|
||||
}
|
||||
|
||||
public function testToListAccessPoints()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = AccessPoint::toGetAccessPoint($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListAccessPointsResult>
|
||||
<IsTruncated>true</IsTruncated>
|
||||
<NextContinuationToken>abc</NextContinuationToken>
|
||||
<AccountId>111933544165****</AccountId>
|
||||
<MaxKeys>3</MaxKeys>
|
||||
<AccessPoints>
|
||||
<AccessPoint>
|
||||
<Bucket>oss-example</Bucket>
|
||||
<AccessPointName>ap-01</AccessPointName>
|
||||
<Alias>ap-01-ossalias</Alias>
|
||||
<NetworkOrigin>vpc</NetworkOrigin>
|
||||
<VpcConfiguration>
|
||||
<VpcId>vpc-t4nlw426y44rd3iq4****</VpcId>
|
||||
</VpcConfiguration>
|
||||
<Status>enable</Status>
|
||||
</AccessPoint>
|
||||
<AccessPoint>
|
||||
<Bucket>oss-example</Bucket>
|
||||
<AccessPointName>ap-02</AccessPointName>
|
||||
<Alias>ap-02-ossalias</Alias>
|
||||
<NetworkOrigin>vpc</NetworkOrigin>
|
||||
<VpcConfiguration>
|
||||
<VpcId>vpc-t4nlw426y44rd3iq2****</VpcId>
|
||||
</VpcConfiguration>
|
||||
<Status>enable</Status>
|
||||
</AccessPoint>
|
||||
<AccessPoint>
|
||||
<Bucket>oss-example</Bucket>
|
||||
<AccessPointName>ap-03</AccessPointName>
|
||||
<Alias>ap-03-ossalias</Alias>
|
||||
<NetworkOrigin>internet</NetworkOrigin>
|
||||
<VpcConfiguration>
|
||||
<VpcId></VpcId>
|
||||
</VpcConfiguration>
|
||||
<Status>enable</Status>
|
||||
</AccessPoint>
|
||||
</AccessPoints>
|
||||
</ListAccessPointsResult>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
body: Utils::streamFor($body)
|
||||
);
|
||||
$result = AccessPoint::toListAccessPoints($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('111933544165****', $result->listAccessPoints->accountId);
|
||||
$this->assertEquals('abc', $result->listAccessPoints->nextContinuationToken);
|
||||
$this->assertTrue($result->listAccessPoints->isTruncated);
|
||||
$this->assertEquals(3, $result->listAccessPoints->maxKeys);
|
||||
$this->assertEquals(3, count($result->listAccessPoints->accessPoints->accessPoints));
|
||||
$this->assertEquals('oss-example', $result->listAccessPoints->accessPoints->accessPoints[0]->bucket);
|
||||
$this->assertEquals('ap-01', $result->listAccessPoints->accessPoints->accessPoints[0]->accessPointName);
|
||||
$this->assertEquals('ap-01-ossalias', $result->listAccessPoints->accessPoints->accessPoints[0]->alias);
|
||||
$this->assertEquals('vpc', $result->listAccessPoints->accessPoints->accessPoints[0]->networkOrigin);
|
||||
$this->assertEquals('vpc-t4nlw426y44rd3iq4****', $result->listAccessPoints->accessPoints->accessPoints[0]->vpcConfiguration->vpcId);
|
||||
$this->assertEquals('enable', $result->listAccessPoints->accessPoints->accessPoints[0]->status);
|
||||
$this->assertEquals('oss-example', $result->listAccessPoints->accessPoints->accessPoints[1]->bucket);
|
||||
$this->assertEquals('ap-02', $result->listAccessPoints->accessPoints->accessPoints[1]->accessPointName);
|
||||
$this->assertEquals('ap-02-ossalias', $result->listAccessPoints->accessPoints->accessPoints[1]->alias);
|
||||
$this->assertEquals('vpc', $result->listAccessPoints->accessPoints->accessPoints[1]->networkOrigin);
|
||||
$this->assertEquals('vpc-t4nlw426y44rd3iq2****', $result->listAccessPoints->accessPoints->accessPoints[1]->vpcConfiguration->vpcId);
|
||||
$this->assertEquals('enable', $result->listAccessPoints->accessPoints->accessPoints[1]->status);
|
||||
$this->assertEquals('oss-example', $result->listAccessPoints->accessPoints->accessPoints[2]->bucket);
|
||||
$this->assertEquals('ap-03', $result->listAccessPoints->accessPoints->accessPoints[2]->accessPointName);
|
||||
$this->assertEquals('ap-03-ossalias', $result->listAccessPoints->accessPoints->accessPoints[2]->alias);
|
||||
$this->assertEquals('internet', $result->listAccessPoints->accessPoints->accessPoints[2]->networkOrigin);
|
||||
$this->assertEquals('enable', $result->listAccessPoints->accessPoints->accessPoints[2]->status);
|
||||
}
|
||||
|
||||
public function testFromPutAccessPointPolicy()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutAccessPointPolicyRequest();
|
||||
$input = AccessPoint::fromPutAccessPointPolicy($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutAccessPointPolicyRequest('bucket-123');
|
||||
$input = AccessPoint::fromPutAccessPointPolicy($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, accessPointName", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutAccessPointPolicyRequest('bucket-123', 'ap-01');
|
||||
$input = AccessPoint::fromPutAccessPointPolicy($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, body", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\PutAccessPointPolicyRequest('bucket-123', 'ap-01', '{"Version":"1","Statement":[{"Action":["oss:PutObject","oss:GetObject"],"Effect":"Deny","Principal":["27737962156157xxxx"],"Resource":["acs:oss:cn-hangzhou:111933544165xxxx:accesspoint/ap-01","acs:oss:cn-hangzhou:111933544165xxxx:accesspoint/ap-01/object/*"]}]}');
|
||||
$input = AccessPoint::fromPutAccessPointPolicy($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('{"Version":"1","Statement":[{"Action":["oss:PutObject","oss:GetObject"],"Effect":"Deny","Principal":["27737962156157xxxx"],"Resource":["acs:oss:cn-hangzhou:111933544165xxxx:accesspoint/ap-01","acs:oss:cn-hangzhou:111933544165xxxx:accesspoint/ap-01/object/*"]}]}', $input->getBody()->getContents());
|
||||
}
|
||||
|
||||
public function testToPutAccessPointPolicy()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = AccessPoint::toPutAccessPointPolicy($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
);
|
||||
$result = AccessPoint::toPutAccessPointPolicy($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetAccessPointPolicy()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetAccessPointPolicyRequest();
|
||||
$input = AccessPoint::fromGetAccessPointPolicy($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\GetAccessPointPolicyRequest('bucket-123');
|
||||
$input = AccessPoint::fromGetAccessPointPolicy($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, accessPointName", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetAccessPointPolicyRequest('bucket-123', 'ap-01');
|
||||
$input = AccessPoint::fromGetAccessPointPolicy($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('ap-01', $input->getHeaders()['x-oss-access-point-name']);
|
||||
}
|
||||
|
||||
public function testToGetAccessPointPolicy()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = AccessPoint::toGetAccessPointPolicy($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '{"Version":"1","Statement":[{"Action":["oss:PutObject","oss:GetObject"],"Effect":"Deny","Principal":["27737962156157xxxx"],"Resource":["acs:oss:cn-hangzhou:111933544165xxxx:accesspoint/ap-01","acs:oss:cn-hangzhou:111933544165xxxx:accesspoint/ap-01/object/*"]}]}';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/json'],
|
||||
body: Utils::streamFor($body)
|
||||
);
|
||||
$result = AccessPoint::toGetAccessPointPolicy($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/json', $result->headers['content-type']);
|
||||
$this->assertEquals($body, $result->body);
|
||||
}
|
||||
|
||||
public function testFromDeleteAccessPointPolicy()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteAccessPointPolicyRequest();
|
||||
$input = AccessPoint::fromDeleteAccessPointPolicy($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\DeleteAccessPointPolicyRequest('bucket-123');
|
||||
$input = AccessPoint::fromDeleteAccessPointPolicy($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, accessPointName", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteAccessPointPolicyRequest('bucket-123', 'ap-01');
|
||||
$input = AccessPoint::fromDeleteAccessPointPolicy($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
$this->assertEquals('ap-01', $input->getHeaders()['x-oss-access-point-name']);
|
||||
}
|
||||
|
||||
public function testToDeleteAccessPointPolicy()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = AccessPoint::toDeleteAccessPointPolicy($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123'],
|
||||
);
|
||||
$result = AccessPoint::toDeleteAccessPointPolicy($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
115
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketAccessMonitorTest.php
vendored
Normal file
115
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketAccessMonitorTest.php
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketAccessMonitor;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketAccessMonitorTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketAccessMonitor()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketAccessMonitorRequest();
|
||||
$input = BucketAccessMonitor::fromPutBucketAccessMonitor($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketAccessMonitorRequest('bucket-123');
|
||||
$input = BucketAccessMonitor::fromPutBucketAccessMonitor($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, accessMonitorConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\PutBucketAccessMonitorRequest('bucket-123', new Models\AccessMonitorConfiguration(
|
||||
status: Models\AccessMonitorStatusType::ENABLED
|
||||
));
|
||||
$input = BucketAccessMonitor::fromPutBucketAccessMonitor($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><AccessMonitorConfiguration><Status>Enabled</Status></AccessMonitorConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketAccessMonitor()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketAccessMonitor::toPutBucketAccessMonitor($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketAccessMonitor::toPutBucketAccessMonitor($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketAccessMonitor()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketAccessMonitorRequest();
|
||||
$input = BucketAccessMonitor::fromGetBucketAccessMonitor($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketAccessMonitorRequest('bucket-123');
|
||||
$input = BucketAccessMonitor::fromGetBucketAccessMonitor($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketAccessMonitor()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketAccessMonitor::toGetBucketAccessMonitor($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<AccessMonitorConfiguration>
|
||||
<Status>Enabled</Status>
|
||||
</AccessMonitorConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketAccessMonitor::toGetBucketAccessMonitor($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals(Models\AccessMonitorStatusType::ENABLED, $result->accessMonitorConfiguration->status);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
133
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketArchiveDirectReadTest.php
vendored
Normal file
133
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketArchiveDirectReadTest.php
vendored
Normal file
@@ -0,0 +1,133 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketArchiveDirectRead;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketArchiveDirectReadTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketArchiveDirectRead()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketArchiveDirectReadRequest();
|
||||
$input = BucketArchiveDirectRead::fromPutBucketArchiveDirectRead($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketArchiveDirectReadRequest('bucket-123');
|
||||
$input = BucketArchiveDirectRead::fromPutBucketArchiveDirectRead($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, archiveDirectReadConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\PutBucketArchiveDirectReadRequest('bucket-123', new Models\ArchiveDirectReadConfiguration(
|
||||
true
|
||||
));
|
||||
$input = BucketArchiveDirectRead::fromPutBucketArchiveDirectRead($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><ArchiveDirectReadConfiguration><Enabled>true</Enabled></ArchiveDirectReadConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketArchiveDirectRead()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketArchiveDirectRead::toPutBucketArchiveDirectRead($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketArchiveDirectRead::toPutBucketArchiveDirectRead($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketArchiveDirectRead()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketArchiveDirectReadRequest();
|
||||
$input = BucketArchiveDirectRead::fromGetBucketArchiveDirectRead($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketArchiveDirectReadRequest('bucket-123');
|
||||
$input = BucketArchiveDirectRead::fromGetBucketArchiveDirectRead($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketArchiveDirectRead()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketArchiveDirectRead::toGetBucketArchiveDirectRead($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ArchiveDirectReadConfiguration>
|
||||
<Enabled>true</Enabled>
|
||||
</ArchiveDirectReadConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketArchiveDirectRead::toGetBucketArchiveDirectRead($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertTrue($result->archiveDirectReadConfiguration->enabled);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ArchiveDirectReadConfiguration>
|
||||
<Enabled>false</Enabled>
|
||||
</ArchiveDirectReadConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketArchiveDirectRead::toGetBucketArchiveDirectRead($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertFalse($result->archiveDirectReadConfiguration->enabled);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
2414
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketBasicTest.php
vendored
Normal file
2414
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketBasicTest.php
vendored
Normal file
File diff suppressed because it is too large
Load Diff
377
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketCnameTest.php
vendored
Normal file
377
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketCnameTest.php
vendored
Normal file
@@ -0,0 +1,377 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketCname;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketCnameTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutCname()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutCnameRequest();
|
||||
$input = BucketCname::fromPutCname($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutCnameRequest('bucket-123');
|
||||
$input = BucketCname::fromPutCname($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucketCnameConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\PutCnameRequest('bucket-123', new Models\BucketCnameConfiguration(
|
||||
new Models\Cname(
|
||||
domain: 'example.com'
|
||||
)
|
||||
));
|
||||
$input = BucketCname::fromPutCname($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><BucketCnameConfiguration><Cname><Domain>example.com</Domain></Cname></BucketCnameConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
$request = new Models\PutCnameRequest('bucket-123', new Models\BucketCnameConfiguration(
|
||||
new Models\Cname(
|
||||
domain: 'example.com',
|
||||
certificateConfiguration: new Models\CertificateConfiguration(
|
||||
force: true,
|
||||
certId: '493****-cn-hangzhou',
|
||||
certificate: '-----BEGIN CERTIFICATE----- MIIDhDCCAmwCCQCFs8ixARsyrDANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC **** -----END CERTIFICATE-----',
|
||||
privateKey: '-----BEGIN CERTIFICATE----- MIIDhDCCAmwCCQCFs8ixARsyrDANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC **** -----END CERTIFICATE-----',
|
||||
previousCertId: '493****-cn-hangzhou'
|
||||
)
|
||||
)
|
||||
));
|
||||
$input = BucketCname::fromPutCname($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><BucketCnameConfiguration><Cname><Domain>example.com</Domain><CertificateConfiguration><Force>true</Force><CertId>493****-cn-hangzhou</CertId><Certificate>-----BEGIN CERTIFICATE----- MIIDhDCCAmwCCQCFs8ixARsyrDANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC **** -----END CERTIFICATE-----</Certificate><PrivateKey>-----BEGIN CERTIFICATE----- MIIDhDCCAmwCCQCFs8ixARsyrDANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC **** -----END CERTIFICATE-----</PrivateKey><PreviousCertId>493****-cn-hangzhou</PreviousCertId></CertificateConfiguration></Cname></BucketCnameConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
$request = new Models\PutCnameRequest('bucket-123', new Models\BucketCnameConfiguration(
|
||||
new Models\Cname(
|
||||
domain: 'example.com',
|
||||
certificateConfiguration: new Models\CertificateConfiguration(
|
||||
deleteCertificate: true,
|
||||
)
|
||||
)
|
||||
));
|
||||
$input = BucketCname::fromPutCname($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><BucketCnameConfiguration><Cname><Domain>example.com</Domain><CertificateConfiguration><DeleteCertificate>true</DeleteCertificate></CertificateConfiguration></Cname></BucketCnameConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutCname()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketCname::toPutCname($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketCname::toPutCname($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromCreateCnameToken()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\CreateCnameTokenRequest();
|
||||
$input = BucketCname::fromCreateCnameToken($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\CreateCnameTokenRequest('bucket-123');
|
||||
$input = BucketCname::fromCreateCnameToken($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucketCnameConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\CreateCnameTokenRequest('bucket-123', new Models\BucketCnameConfiguration(
|
||||
new Models\Cname(
|
||||
domain: 'example.com'
|
||||
)
|
||||
));
|
||||
$input = BucketCname::fromCreateCnameToken($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><BucketCnameConfiguration><Cname><Domain>example.com</Domain></Cname></BucketCnameConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToCreateCnameToken()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketCname::toCreateCnameToken($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
body: Utils::streamFor('<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CnameToken>
|
||||
<Bucket>bucket</Bucket>
|
||||
<Cname>example.com</Cname>;
|
||||
<Token>be1d49d863dea9ffeff3df7d6455****</Token>
|
||||
<ExpireTime>Wed, 23 Feb 2022 21:16:37 GMT</ExpireTime>
|
||||
</CnameToken>')
|
||||
);
|
||||
$result = BucketCname::toCreateCnameToken($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('bucket', $result->cnameToken->bucket);
|
||||
$this->assertEquals('example.com', $result->cnameToken->cname);
|
||||
$this->assertEquals('be1d49d863dea9ffeff3df7d6455****', $result->cnameToken->token);
|
||||
$this->assertEquals('Wed, 23 Feb 2022 21:16:37 GMT', $result->cnameToken->expireTime);
|
||||
}
|
||||
|
||||
public function testFromGetCnameToken()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetCnameTokenRequest();
|
||||
$input = BucketCname::fromGetCnameToken($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\GetCnameTokenRequest('bucket-123');
|
||||
$input = BucketCname::fromGetCnameToken($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, cname", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetCnameTokenRequest('bucket-123', 'example.com');
|
||||
$input = BucketCname::fromGetCnameToken($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('example.com', $input->getParameters()['cname']);
|
||||
}
|
||||
|
||||
public function testToGetCnameToken()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketCname::toGetCnameToken($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
body: Utils::streamFor('<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CnameToken>
|
||||
<Bucket>bucket</Bucket>
|
||||
<Cname>example.com</Cname>;
|
||||
<Token>be1d49d863dea9ffeff3df7d6455****</Token>
|
||||
<ExpireTime>Wed, 23 Feb 2022 21:16:37 GMT</ExpireTime>
|
||||
</CnameToken>')
|
||||
);
|
||||
$result = BucketCname::toGetCnameToken($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('bucket', $result->cnameToken->bucket);
|
||||
$this->assertEquals('example.com', $result->cnameToken->cname);
|
||||
$this->assertEquals('be1d49d863dea9ffeff3df7d6455****', $result->cnameToken->token);
|
||||
$this->assertEquals('Wed, 23 Feb 2022 21:16:37 GMT', $result->cnameToken->expireTime);
|
||||
}
|
||||
|
||||
public function testFromListCname()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\ListCnameRequest();
|
||||
$input = BucketCname::fromListCname($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\ListCnameRequest('bucket-123');
|
||||
$input = BucketCname::fromListCname($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToListCname()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketCname::toListCname($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListCnameResult>
|
||||
<Bucket>bucket</Bucket>
|
||||
<Owner>owner</Owner>
|
||||
<Cname>
|
||||
<Domain>example.com</Domain>
|
||||
<LastModified>2021-09-15T02:35:07.000Z</LastModified>
|
||||
<Status>Enabled</Status>
|
||||
<Certificate>
|
||||
<Type>CAS</Type>
|
||||
<CertId>493****-cn-hangzhou</CertId>
|
||||
<Status>Enabled</Status>
|
||||
<CreationDate>Wed, 15 Sep 2021 02:35:06 GMT</CreationDate>
|
||||
<Fingerprint>DE:01:CF:EC:7C:A7:98:CB:D8:6E:FB:1D:97:EB:A9:64:1D:4E:**:**</Fingerprint>
|
||||
<ValidStartDate>Wed, 12 Apr 2023 10:14:51 GMT</ValidStartDate>
|
||||
<ValidEndDate>Mon, 4 May 2048 10:14:51 GMT</ValidEndDate>
|
||||
</Certificate>
|
||||
</Cname>
|
||||
<Cname>
|
||||
<Domain>example.org</Domain>
|
||||
<LastModified>2021-09-15T02:34:58.000Z</LastModified>
|
||||
<Status>Enabled</Status>
|
||||
</Cname>
|
||||
<Cname>
|
||||
<Domain>example.edu</Domain>
|
||||
<LastModified>2021-09-15T02:50:34.000Z</LastModified>
|
||||
<Status>Enabled</Status>
|
||||
</Cname>
|
||||
</ListCnameResult>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketCname::toListCname($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('bucket', $result->bucket);
|
||||
$this->assertEquals('owner', $result->owner);
|
||||
$this->assertEquals(3, count($result->cnames));
|
||||
$this->assertEquals('example.com', $result->cnames[0]->domain);
|
||||
$this->assertEquals('2021-09-15T02:35:07.000Z', $result->cnames[0]->lastModified);
|
||||
$this->assertEquals('Enabled', $result->cnames[0]->status);
|
||||
$this->assertEquals('CAS', $result->cnames[0]->certificate->type);
|
||||
$this->assertEquals('493****-cn-hangzhou', $result->cnames[0]->certificate->certId);
|
||||
$this->assertEquals('Enabled', $result->cnames[0]->certificate->status);
|
||||
$this->assertEquals('Wed, 15 Sep 2021 02:35:06 GMT', $result->cnames[0]->certificate->creationDate);
|
||||
$this->assertEquals('DE:01:CF:EC:7C:A7:98:CB:D8:6E:FB:1D:97:EB:A9:64:1D:4E:**:**', $result->cnames[0]->certificate->fingerprint);
|
||||
$this->assertEquals('Wed, 12 Apr 2023 10:14:51 GMT', $result->cnames[0]->certificate->validStartDate);
|
||||
$this->assertEquals('Mon, 4 May 2048 10:14:51 GMT', $result->cnames[0]->certificate->validEndDate);
|
||||
$this->assertEquals('example.org', $result->cnames[1]->domain);
|
||||
$this->assertEquals('2021-09-15T02:34:58.000Z', $result->cnames[1]->lastModified);
|
||||
$this->assertEquals('Enabled', $result->cnames[1]->status);
|
||||
$this->assertEquals('example.edu', $result->cnames[2]->domain);
|
||||
$this->assertEquals('2021-09-15T02:50:34.000Z', $result->cnames[2]->lastModified);
|
||||
$this->assertEquals('Enabled', $result->cnames[2]->status);
|
||||
}
|
||||
|
||||
public function testFromDeleteCname()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteCnameRequest();
|
||||
$input = BucketCname::fromDeleteCname($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\DeleteCnameRequest('bucket-123');
|
||||
$input = BucketCname::fromDeleteCname($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucketCnameConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteCnameRequest('bucket-123', new Models\BucketCnameConfiguration(
|
||||
new Models\Cname(
|
||||
domain: 'example.com'
|
||||
)
|
||||
));
|
||||
$input = BucketCname::fromDeleteCname($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><BucketCnameConfiguration><Cname><Domain>example.com</Domain></Cname></BucketCnameConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToDeleteCname()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketCname::toDeleteCname($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
);
|
||||
$result = BucketCname::toDeleteCname($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
271
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketCorsTest.php
vendored
Normal file
271
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketCorsTest.php
vendored
Normal file
@@ -0,0 +1,271 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketCors;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketCorsTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketCors()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketCorsRequest();
|
||||
$input = BucketCors::fromPutBucketCors($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketCorsRequest('bucket-123');
|
||||
$input = BucketCors::fromPutBucketCors($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, corsConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
// demo1
|
||||
$request = new Models\PutBucketCorsRequest('bucket-123', new Models\CORSConfiguration(
|
||||
[
|
||||
new Models\CORSRule(
|
||||
allowedHeaders: ['Authorization'],
|
||||
allowedOrigins: ['*'],
|
||||
allowedMethods: ['PUT', 'GET']
|
||||
),
|
||||
new Models\CORSRule(
|
||||
allowedHeaders: ['Authorization'],
|
||||
exposeHeaders: ["x-oss-test", "x-oss-test1"],
|
||||
maxAgeSeconds: 100,
|
||||
allowedOrigins: ["http://example.com", "http://example.net"],
|
||||
allowedMethods: ['GET'],
|
||||
),
|
||||
],
|
||||
responseVary: false
|
||||
));
|
||||
$input = BucketCors::fromPutBucketCors($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><CORSConfiguration><CORSRule><AllowedHeader>Authorization</AllowedHeader><AllowedOrigin>*</AllowedOrigin><AllowedMethod>PUT</AllowedMethod><AllowedMethod>GET</AllowedMethod></CORSRule><CORSRule><AllowedHeader>Authorization</AllowedHeader><ExposeHeader>x-oss-test</ExposeHeader><ExposeHeader>x-oss-test1</ExposeHeader><MaxAgeSeconds>100</MaxAgeSeconds><AllowedOrigin>http://example.com</AllowedOrigin><AllowedOrigin>http://example.net</AllowedOrigin><AllowedMethod>GET</AllowedMethod></CORSRule><ResponseVary>false</ResponseVary></CORSConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketCors()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketCors::toPutBucketCors($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketCors::toPutBucketCors($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketCors()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketCorsRequest();
|
||||
$input = BucketCors::fromGetBucketCors($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketCorsRequest('bucket-123');
|
||||
$input = BucketCors::fromGetBucketCors($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketCors()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketCors::toGetBucketCors($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CORSConfiguration>
|
||||
<CORSRule>
|
||||
<AllowedOrigin>*</AllowedOrigin>
|
||||
<AllowedMethod>PUT</AllowedMethod>
|
||||
<AllowedMethod>GET</AllowedMethod>
|
||||
<AllowedHeader>Authorization</AllowedHeader>
|
||||
</CORSRule>
|
||||
<CORSRule>
|
||||
<AllowedOrigin>http://example.com</AllowedOrigin>
|
||||
<AllowedOrigin>http://example.net</AllowedOrigin>
|
||||
<AllowedMethod>GET</AllowedMethod>
|
||||
<AllowedHeader>Authorization</AllowedHeader>
|
||||
<ExposeHeader>x-oss-test</ExposeHeader>
|
||||
<ExposeHeader>x-oss-test1</ExposeHeader>
|
||||
<MaxAgeSeconds>100</MaxAgeSeconds>
|
||||
</CORSRule>
|
||||
<ResponseVary>false</ResponseVary>
|
||||
</CORSConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketCors::toGetBucketCors($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals(2, count($result->corsConfiguration->corsRules));
|
||||
$this->assertFalse($result->corsConfiguration->responseVary);
|
||||
$this->assertEquals($result->corsConfiguration->corsRules[0]->allowedOrigins[0], '*');
|
||||
$this->assertEquals(count($result->corsConfiguration->corsRules[0]->allowedMethods), 2);
|
||||
$this->assertEquals($result->corsConfiguration->corsRules[0]->allowedMethods[0], 'PUT');
|
||||
$this->assertEquals($result->corsConfiguration->corsRules[0]->allowedMethods[1], 'GET');
|
||||
$this->assertEquals(count($result->corsConfiguration->corsRules[0]->allowedHeaders), 1);
|
||||
$this->assertEquals($result->corsConfiguration->corsRules[0]->allowedHeaders[0], 'Authorization');
|
||||
|
||||
$this->assertEquals($result->corsConfiguration->corsRules[1]->allowedOrigins[0], 'http://example.com');
|
||||
$this->assertEquals($result->corsConfiguration->corsRules[1]->allowedOrigins[1], 'http://example.net');
|
||||
$this->assertEquals(count($result->corsConfiguration->corsRules[1]->allowedMethods), 1);
|
||||
$this->assertEquals($result->corsConfiguration->corsRules[1]->allowedMethods[0], 'GET');
|
||||
$this->assertEquals(count($result->corsConfiguration->corsRules[1]->allowedHeaders), 1);
|
||||
$this->assertEquals($result->corsConfiguration->corsRules[1]->allowedHeaders[0], 'Authorization');
|
||||
$this->assertEquals(count($result->corsConfiguration->corsRules[1]->exposeHeaders), 2);
|
||||
$this->assertEquals($result->corsConfiguration->corsRules[1]->exposeHeaders[0], "x-oss-test");
|
||||
$this->assertEquals($result->corsConfiguration->corsRules[1]->exposeHeaders[1], "x-oss-test1");
|
||||
$this->assertEquals($result->corsConfiguration->corsRules[1]->maxAgeSeconds, 100);
|
||||
}
|
||||
|
||||
public function testFromDeleteBucketCors()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteBucketCorsRequest();
|
||||
$input = BucketCors::fromDeleteBucketCors($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteBucketCorsRequest('bucket-123');
|
||||
$input = BucketCors::fromDeleteBucketCors($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToDeleteBucketCors()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketCors::toDeleteBucketCors($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketCors::toDeleteBucketCors($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromOptionObject()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\OptionObjectRequest();
|
||||
$input = BucketCors::fromOptionObject($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\OptionObjectRequest('bucket-123');
|
||||
$input = BucketCors::fromOptionObject($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, key", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\OptionObjectRequest('bucket-123', 'key-123');
|
||||
$input = BucketCors::fromOptionObject($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, origin", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\OptionObjectRequest('bucket-123', 'key-123', 'http://www.example.com');
|
||||
$input = BucketCors::fromOptionObject($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, accessControlRequestMethod", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\OptionObjectRequest('bucket-123', 'key-123', 'http://www.example.com', 'PUT');
|
||||
$input = BucketCors::fromOptionObject($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToOptionObject()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketCors::toOptionObject($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'Access-Control-Allow-Origin' => 'http://www.example.com', 'Access-Control-Allow-Methods' => 'PUT', 'Access-Control-Allow-Headers' => 'x-oss-allow', 'Access-Control-Expose-Headers' => 'x-oss-test1,x-oss-test2', 'Access-Control-Max-Age' => "60"]
|
||||
);
|
||||
$result = BucketCors::toOptionObject($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(6, count($result->headers));
|
||||
$this->assertEquals('http://www.example.com', $result->accessControlAllowOrigin);
|
||||
$this->assertEquals('x-oss-test1,x-oss-test2', $result->accessControlExposeHeaders);
|
||||
$this->assertEquals('x-oss-allow', $result->accessControlAllowHeaders);
|
||||
$this->assertEquals('PUT', $result->accessControlAllowMethods);
|
||||
$this->assertEquals(60, $result->accessControlMaxAge);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
232
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketEncryptionTest.php
vendored
Normal file
232
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketEncryptionTest.php
vendored
Normal file
@@ -0,0 +1,232 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketEncryption;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketEncryptionTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketEncryption()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketEncryptionRequest();
|
||||
$input = BucketEncryption::fromPutBucketEncryption($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketEncryptionRequest('bucket-123');
|
||||
$input = BucketEncryption::fromPutBucketEncryption($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, serverSideEncryptionRule", (string)$e);
|
||||
}
|
||||
|
||||
// demo1
|
||||
$request = new Models\PutBucketEncryptionRequest('bucket-123', new Models\ServerSideEncryptionRule(
|
||||
new Models\ApplyServerSideEncryptionByDefault(
|
||||
sseAlgorithm: 'KMS',
|
||||
kmsDataEncryption: 'SM4'
|
||||
)));
|
||||
$input = BucketEncryption::fromPutBucketEncryption($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><ServerSideEncryptionRule><ApplyServerSideEncryptionByDefault><SSEAlgorithm>KMS</SSEAlgorithm><KMSDataEncryption>SM4</KMSDataEncryption></ApplyServerSideEncryptionByDefault></ServerSideEncryptionRule>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo2
|
||||
$request = new Models\PutBucketEncryptionRequest('bucket-123', new Models\ServerSideEncryptionRule(
|
||||
new Models\ApplyServerSideEncryptionByDefault(
|
||||
sseAlgorithm: 'KMS',
|
||||
kmsMasterKeyID: '9468da86-3509-4f8d-a61e-6eab1eac****',
|
||||
kmsDataEncryption: 'SM4'
|
||||
)));
|
||||
$input = BucketEncryption::fromPutBucketEncryption($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><ServerSideEncryptionRule><ApplyServerSideEncryptionByDefault><SSEAlgorithm>KMS</SSEAlgorithm><KMSMasterKeyID>9468da86-3509-4f8d-a61e-6eab1eac****</KMSMasterKeyID><KMSDataEncryption>SM4</KMSDataEncryption></ApplyServerSideEncryptionByDefault></ServerSideEncryptionRule>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo3
|
||||
$request = new Models\PutBucketEncryptionRequest('bucket-123', new Models\ServerSideEncryptionRule(
|
||||
new Models\ApplyServerSideEncryptionByDefault(
|
||||
sseAlgorithm: 'AES256',
|
||||
)));
|
||||
$input = BucketEncryption::fromPutBucketEncryption($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><ServerSideEncryptionRule><ApplyServerSideEncryptionByDefault><SSEAlgorithm>AES256</SSEAlgorithm></ApplyServerSideEncryptionByDefault></ServerSideEncryptionRule>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketEncryption()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketEncryption::toPutBucketEncryption($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketEncryption::toPutBucketEncryption($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketEncryption()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketEncryptionRequest();
|
||||
$input = BucketEncryption::fromGetBucketEncryption($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketEncryptionRequest('bucket-123');
|
||||
$input = BucketEncryption::fromGetBucketEncryption($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketEncryption()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketEncryption::toGetBucketEncryption($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ServerSideEncryptionRule>
|
||||
<ApplyServerSideEncryptionByDefault>
|
||||
<SSEAlgorithm>KMS</SSEAlgorithm>
|
||||
<KMSMasterKeyID>9468da86-3509-4f8d-a61e-6eab1eac****</KMSMasterKeyID>
|
||||
</ApplyServerSideEncryptionByDefault>
|
||||
</ServerSideEncryptionRule>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketEncryption::toGetBucketEncryption($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('9468da86-3509-4f8d-a61e-6eab1eac****', $result->serverSideEncryptionRule->applyServerSideEncryptionByDefault->kmsMasterKeyID);
|
||||
$this->assertEquals('KMS', $result->serverSideEncryptionRule->applyServerSideEncryptionByDefault->sseAlgorithm);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ServerSideEncryptionRule>
|
||||
<ApplyServerSideEncryptionByDefault>
|
||||
<SSEAlgorithm>KMS</SSEAlgorithm>
|
||||
<KMSDataEncryption>SM4</KMSDataEncryption>
|
||||
<KMSMasterKeyID>9468da86-3509-4f8d-a61e-6eab1eac****</KMSMasterKeyID>
|
||||
</ApplyServerSideEncryptionByDefault>
|
||||
</ServerSideEncryptionRule>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketEncryption::toGetBucketEncryption($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('9468da86-3509-4f8d-a61e-6eab1eac****', $result->serverSideEncryptionRule->applyServerSideEncryptionByDefault->kmsMasterKeyID);
|
||||
$this->assertEquals('KMS', $result->serverSideEncryptionRule->applyServerSideEncryptionByDefault->sseAlgorithm);
|
||||
$this->assertEquals('SM4', $result->serverSideEncryptionRule->applyServerSideEncryptionByDefault->kmsDataEncryption);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ServerSideEncryptionRule>
|
||||
<ApplyServerSideEncryptionByDefault>
|
||||
<SSEAlgorithm>AES256</SSEAlgorithm>
|
||||
</ApplyServerSideEncryptionByDefault>
|
||||
</ServerSideEncryptionRule>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketEncryption::toGetBucketEncryption($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('AES256', $result->serverSideEncryptionRule->applyServerSideEncryptionByDefault->sseAlgorithm);
|
||||
}
|
||||
|
||||
public function testFromDeleteBucketEncryption()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteBucketEncryptionRequest();
|
||||
$input = BucketEncryption::fromDeleteBucketEncryption($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteBucketEncryptionRequest('bucket-123');
|
||||
$input = BucketEncryption::fromDeleteBucketEncryption($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToDeleteBucketEncryption()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketEncryption::toDeleteBucketEncryption($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketEncryption::toDeleteBucketEncryption($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
177
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketHttpsConfigTest.php
vendored
Normal file
177
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketHttpsConfigTest.php
vendored
Normal file
@@ -0,0 +1,177 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketHttpsConfig;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketHttpsConfigTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketHttpsConfig()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketHttpsConfigRequest();
|
||||
$input = BucketHttpsConfig::fromPutBucketHttpsConfig($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketHttpsConfigRequest('bucket-123');
|
||||
$input = BucketHttpsConfig::fromPutBucketHttpsConfig($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, httpsConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
// demo1
|
||||
$request = new Models\PutBucketHttpsConfigRequest('bucket-123', new Models\HttpsConfiguration(
|
||||
tls: new Models\TLS(
|
||||
tlsVersions: ['TLSv1.2', 'TLSv1.3'],
|
||||
enable: true
|
||||
)
|
||||
));
|
||||
$input = BucketHttpsConfig::fromPutBucketHttpsConfig($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><HttpsConfiguration><TLS><TLSVersion>TLSv1.2</TLSVersion><TLSVersion>TLSv1.3</TLSVersion><Enable>true</Enable></TLS></HttpsConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo2
|
||||
$request = new Models\PutBucketHttpsConfigRequest('bucket-123', new Models\HttpsConfiguration(
|
||||
tls: new Models\TLS(
|
||||
tlsVersions: ['TLSv1.2', 'TLSv1.3'],
|
||||
enable: true
|
||||
),
|
||||
cipherSuite: new Models\CipherSuite(
|
||||
enable: true,
|
||||
strongCipherSuite: false,
|
||||
customCipherSuites: ['ECDHE-ECDSA-AES128-SHA256', 'ECDHE-RSA-AES128-GCM-SHA256', 'ECDHE-ECDSA-AES256-CCM8'],
|
||||
tls13CustomCipherSuites: ['ECDHE-ECDSA-AES256-CCM8', 'ECDHE-ECDSA-AES256-CCM8', 'ECDHE-ECDSA-AES256-CCM8'],
|
||||
)
|
||||
));
|
||||
$input = BucketHttpsConfig::fromPutBucketHttpsConfig($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><HttpsConfiguration><TLS><TLSVersion>TLSv1.2</TLSVersion><TLSVersion>TLSv1.3</TLSVersion><Enable>true</Enable></TLS><CipherSuite><Enable>true</Enable><StrongCipherSuite>false</StrongCipherSuite><CustomCipherSuite>ECDHE-ECDSA-AES128-SHA256</CustomCipherSuite><CustomCipherSuite>ECDHE-RSA-AES128-GCM-SHA256</CustomCipherSuite><CustomCipherSuite>ECDHE-ECDSA-AES256-CCM8</CustomCipherSuite><TLS13CustomCipherSuite>ECDHE-ECDSA-AES256-CCM8</TLS13CustomCipherSuite><TLS13CustomCipherSuite>ECDHE-ECDSA-AES256-CCM8</TLS13CustomCipherSuite><TLS13CustomCipherSuite>ECDHE-ECDSA-AES256-CCM8</TLS13CustomCipherSuite></CipherSuite></HttpsConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketHttpsConfig()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketHttpsConfig::toPutBucketHttpsConfig($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketHttpsConfig::toPutBucketHttpsConfig($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketHttpsConfig()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketHttpsConfigRequest();
|
||||
$input = BucketHttpsConfig::fromGetBucketHttpsConfig($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketHttpsConfigRequest('bucket-123');
|
||||
$input = BucketHttpsConfig::fromGetBucketHttpsConfig($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketHttpsConfig()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketHttpsConfig::toGetBucketHttpsConfig($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<HttpsConfiguration>
|
||||
<TLS>
|
||||
<Enable>true</Enable>
|
||||
<TLSVersion>TLSv1.2</TLSVersion>
|
||||
<TLSVersion>TLSv1.3</TLSVersion>
|
||||
</TLS>
|
||||
</HttpsConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketHttpsConfig::toGetBucketHttpsConfig($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertTrue($result->httpsConfiguration->tls->enable);
|
||||
$this->assertEquals(2, count($result->httpsConfiguration->tls->tlsVersions));
|
||||
$this->assertEquals("TLSv1.2", $result->httpsConfiguration->tls->tlsVersions[0]);
|
||||
$this->assertEquals("TLSv1.3", $result->httpsConfiguration->tls->tlsVersions[1]);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?><HttpsConfiguration><TLS><TLSVersion>TLSv1.2</TLSVersion><TLSVersion>TLSv1.3</TLSVersion><Enable>true</Enable></TLS><CipherSuite><Enable>true</Enable><StrongCipherSuite>false</StrongCipherSuite><CustomCipherSuite>ECDHE-ECDSA-AES128-SHA256</CustomCipherSuite><CustomCipherSuite>ECDHE-RSA-AES128-GCM-SHA256</CustomCipherSuite><CustomCipherSuite>ECDHE-ECDSA-AES256-CCM8</CustomCipherSuite><TLS13CustomCipherSuite>ECDHE-ECDSA-AES256-CCM8</TLS13CustomCipherSuite><TLS13CustomCipherSuite>ECDHE-ECDSA-AES256-CCM8</TLS13CustomCipherSuite><TLS13CustomCipherSuite>ECDHE-ECDSA-AES256-CCM8</TLS13CustomCipherSuite></CipherSuite></HttpsConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketHttpsConfig::toGetBucketHttpsConfig($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertTrue($result->httpsConfiguration->tls->enable);
|
||||
$this->assertEquals(2, count($result->httpsConfiguration->tls->tlsVersions));
|
||||
$this->assertEquals("TLSv1.2", $result->httpsConfiguration->tls->tlsVersions[0]);
|
||||
$this->assertEquals("TLSv1.3", $result->httpsConfiguration->tls->tlsVersions[1]);
|
||||
|
||||
$this->assertTrue($result->httpsConfiguration->cipherSuite->enable);
|
||||
$this->assertFalse($result->httpsConfiguration->cipherSuite->strongCipherSuite);
|
||||
$this->assertEquals(3, count($result->httpsConfiguration->cipherSuite->customCipherSuites));
|
||||
$this->assertEquals('ECDHE-ECDSA-AES128-SHA256', $result->httpsConfiguration->cipherSuite->customCipherSuites[0]);
|
||||
$this->assertEquals('ECDHE-RSA-AES128-GCM-SHA256', $result->httpsConfiguration->cipherSuite->customCipherSuites[1]);
|
||||
$this->assertEquals('ECDHE-ECDSA-AES256-CCM8', $result->httpsConfiguration->cipherSuite->customCipherSuites[2]);
|
||||
$this->assertEquals(3, count($result->httpsConfiguration->cipherSuite->tls13CustomCipherSuites));
|
||||
$this->assertEquals('ECDHE-ECDSA-AES256-CCM8', $result->httpsConfiguration->cipherSuite->tls13CustomCipherSuites[0]);
|
||||
$this->assertEquals('ECDHE-ECDSA-AES256-CCM8', $result->httpsConfiguration->cipherSuite->tls13CustomCipherSuites[1]);
|
||||
$this->assertEquals('ECDHE-ECDSA-AES256-CCM8', $result->httpsConfiguration->cipherSuite->tls13CustomCipherSuites[2]);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
497
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketInventoryTest.php
vendored
Normal file
497
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketInventoryTest.php
vendored
Normal file
@@ -0,0 +1,497 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketInventory;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketInventoryTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketInventory()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketInventoryRequest();
|
||||
$input = BucketInventory::fromPutBucketInventory($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketInventoryRequest('bucket-123');
|
||||
$input = BucketInventory::fromPutBucketInventory($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, inventoryId", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketInventoryRequest('bucket-123', 'inventory-id');
|
||||
$input = BucketInventory::fromPutBucketInventory($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, inventoryConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
// demo1
|
||||
$request = new Models\PutBucketInventoryRequest('bucket-123', 'report1', inventoryConfiguration: new Models\InventoryConfiguration(
|
||||
isEnabled: true,
|
||||
destination: new Models\InventoryDestination(
|
||||
ossBucketDestination: new Models\InventoryOSSBucketDestination(
|
||||
bucket: 'acs:oss:::destination-bucket',
|
||||
prefix: 'prefix1',
|
||||
encryption: new Models\InventoryEncryption(
|
||||
sseKms: new Models\SSEKMS('keyId')
|
||||
),
|
||||
format: Models\InventoryFormatType::CSV,
|
||||
accountId: '1000000000000000', roleArn: 'acs:ram::1000000000000000:role/AliyunOSSRole'
|
||||
)
|
||||
),
|
||||
filter: new Models\InventoryFilter(
|
||||
prefix: 'filterPrefix',
|
||||
lastModifyBeginTimeStamp: 1637883649,
|
||||
lastModifyEndTimeStamp: 1638347592,
|
||||
lowerSizeBound: 1024,
|
||||
upperSizeBound: 1048576,
|
||||
storageClass: 'Standard,IA'
|
||||
),
|
||||
includedObjectVersions: 'All',
|
||||
optionalFields: new Models\OptionalFields(
|
||||
[
|
||||
Models\InventoryOptionalFieldType::SIZE,
|
||||
Models\InventoryOptionalFieldType::LAST_MODIFIED_DATE,
|
||||
Models\InventoryOptionalFieldType::ETAG,
|
||||
Models\InventoryOptionalFieldType::STORAGE_CLASS,
|
||||
Models\InventoryOptionalFieldType::IS_MULTIPART_UPLOADED,
|
||||
Models\InventoryOptionalFieldType::ENCRYPTION_STATUS,
|
||||
Models\InventoryOptionalFieldType::TRANSITION_TIME,
|
||||
]
|
||||
),
|
||||
id: 'report1'
|
||||
));
|
||||
$input = BucketInventory::fromPutBucketInventory($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><InventoryConfiguration><IsEnabled>true</IsEnabled><Destination><OSSBucketDestination><Bucket>acs:oss:::destination-bucket</Bucket><Prefix>prefix1</Prefix><Encryption><SSE-KMS><KeyId>keyId</KeyId></SSE-KMS></Encryption><Format>CSV</Format><AccountId>1000000000000000</AccountId><RoleArn>acs:ram::1000000000000000:role/AliyunOSSRole</RoleArn></OSSBucketDestination></Destination><Filter><Prefix>filterPrefix</Prefix><LastModifyBeginTimeStamp>1637883649</LastModifyBeginTimeStamp><LastModifyEndTimeStamp>1638347592</LastModifyEndTimeStamp><LowerSizeBound>1024</LowerSizeBound><UpperSizeBound>1048576</UpperSizeBound><StorageClass>Standard,IA</StorageClass></Filter><IncludedObjectVersions>All</IncludedObjectVersions><OptionalFields><Field>Size</Field><Field>LastModifiedDate</Field><Field>ETag</Field><Field>StorageClass</Field><Field>IsMultipartUploaded</Field><Field>EncryptionStatus</Field><Field>TransitionTime</Field></OptionalFields><Id>report1</Id></InventoryConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo2
|
||||
$request = new Models\PutBucketInventoryRequest('bucket-123', 'report1', inventoryConfiguration: new Models\InventoryConfiguration(
|
||||
isEnabled: true,
|
||||
destination: new Models\InventoryDestination(
|
||||
ossBucketDestination: new Models\InventoryOSSBucketDestination(
|
||||
bucket: 'acs:oss:::destination-bucket',
|
||||
format: Models\InventoryFormatType::CSV,
|
||||
accountId: '1000000000000000',
|
||||
roleArn: 'acs:ram::1000000000000000:role/AliyunOSSRole'
|
||||
)
|
||||
),
|
||||
schedule: new Models\InventorySchedule(
|
||||
frequency: Models\InventoryFrequencyType::DAILY
|
||||
),
|
||||
filter: new Models\InventoryFilter(
|
||||
prefix: 'filterPrefix',
|
||||
lastModifyBeginTimeStamp: 1637883649,
|
||||
lastModifyEndTimeStamp: 1638347592,
|
||||
lowerSizeBound: 1024,
|
||||
upperSizeBound: 1048576,
|
||||
storageClass: 'Standard,IA'
|
||||
),
|
||||
includedObjectVersions: 'All',
|
||||
id: 'report1'
|
||||
));
|
||||
$input = BucketInventory::fromPutBucketInventory($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><InventoryConfiguration><IsEnabled>true</IsEnabled><Destination><OSSBucketDestination><Bucket>acs:oss:::destination-bucket</Bucket><Format>CSV</Format><AccountId>1000000000000000</AccountId><RoleArn>acs:ram::1000000000000000:role/AliyunOSSRole</RoleArn></OSSBucketDestination></Destination><Schedule><Frequency>Daily</Frequency></Schedule><Filter><Prefix>filterPrefix</Prefix><LastModifyBeginTimeStamp>1637883649</LastModifyBeginTimeStamp><LastModifyEndTimeStamp>1638347592</LastModifyEndTimeStamp><LowerSizeBound>1024</LowerSizeBound><UpperSizeBound>1048576</UpperSizeBound><StorageClass>Standard,IA</StorageClass></Filter><IncludedObjectVersions>All</IncludedObjectVersions><Id>report1</Id></InventoryConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketInventory()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketInventory::toPutBucketInventory($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketInventory::toPutBucketInventory($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketInventory()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketInventoryRequest();
|
||||
$input = BucketInventory::fromGetBucketInventory($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\GetBucketInventoryRequest('bucket-123');
|
||||
$input = BucketInventory::fromGetBucketInventory($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, inventoryId", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketInventoryRequest('bucket-123', 'inventoryId');
|
||||
$input = BucketInventory::fromGetBucketInventory($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketInventory()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketInventory::toGetBucketInventory($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<InventoryConfiguration>
|
||||
<Id>report1</Id>
|
||||
<IsEnabled>true</IsEnabled>
|
||||
<Destination>
|
||||
<OSSBucketDestination>
|
||||
<Format>CSV</Format>
|
||||
<AccountId>1000000000000000</AccountId>
|
||||
<RoleArn>acs:ram::1000000000000000:role/AliyunOSSRole</RoleArn>
|
||||
<Bucket>acs:oss:::bucket_0001</Bucket>
|
||||
<Prefix>prefix1</Prefix>
|
||||
<Encryption>
|
||||
<SSE-KMS>
|
||||
<KeyId>keyId</KeyId>
|
||||
</SSE-KMS>
|
||||
</Encryption>
|
||||
</OSSBucketDestination>
|
||||
</Destination>
|
||||
<Schedule>
|
||||
<Frequency>Daily</Frequency>
|
||||
</Schedule>
|
||||
<Filter>
|
||||
<LastModifyBeginTimeStamp>1637883649</LastModifyBeginTimeStamp>
|
||||
<LastModifyEndTimeStamp>1638347592</LastModifyEndTimeStamp>
|
||||
<LowerSizeBound>1024</LowerSizeBound>
|
||||
<UpperSizeBound>1048576</UpperSizeBound>
|
||||
<StorageClass>Standard,IA</StorageClass>
|
||||
<Prefix>myprefix/</Prefix>
|
||||
</Filter>
|
||||
<IncludedObjectVersions>All</IncludedObjectVersions>
|
||||
<OptionalFields>
|
||||
<Field>Size</Field>
|
||||
<Field>LastModifiedDate</Field>
|
||||
<Field>ETag</Field>
|
||||
<Field>StorageClass</Field>
|
||||
<Field>IsMultipartUploaded</Field>
|
||||
<Field>EncryptionStatus</Field>
|
||||
<Field>TransitionTime</Field>
|
||||
</OptionalFields>
|
||||
</InventoryConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketInventory::toGetBucketInventory($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('report1', $result->inventoryConfiguration->id);
|
||||
$this->assertTrue($result->inventoryConfiguration->isEnabled);
|
||||
$this->assertEquals(Models\InventoryFormatType::CSV, $result->inventoryConfiguration->destination->ossBucketDestination->format);
|
||||
$this->assertEquals('1000000000000000', $result->inventoryConfiguration->destination->ossBucketDestination->accountId);
|
||||
$this->assertEquals('acs:ram::1000000000000000:role/AliyunOSSRole', $result->inventoryConfiguration->destination->ossBucketDestination->roleArn);
|
||||
$this->assertEquals('acs:oss:::bucket_0001', $result->inventoryConfiguration->destination->ossBucketDestination->bucket);
|
||||
$this->assertEquals('prefix1', $result->inventoryConfiguration->destination->ossBucketDestination->prefix);
|
||||
$this->assertEquals('keyId', $result->inventoryConfiguration->destination->ossBucketDestination->encryption->sseKms->keyId);
|
||||
$this->assertEquals(Models\InventoryFrequencyType::DAILY, $result->inventoryConfiguration->schedule->frequency);
|
||||
$this->assertEquals('All', $result->inventoryConfiguration->includedObjectVersions);
|
||||
$this->assertEquals(7, count($result->inventoryConfiguration->optionalFields->fields));
|
||||
$this->assertEquals(Models\InventoryOptionalFieldType::STORAGE_CLASS, $result->inventoryConfiguration->optionalFields->fields[3]);
|
||||
$this->assertEquals(Models\InventoryOptionalFieldType::TRANSITION_TIME, $result->inventoryConfiguration->optionalFields->fields[6]);
|
||||
$this->assertEquals('myprefix/', $result->inventoryConfiguration->filter->prefix);
|
||||
$this->assertEquals(1637883649, $result->inventoryConfiguration->filter->lastModifyBeginTimeStamp);
|
||||
$this->assertEquals(1638347592, $result->inventoryConfiguration->filter->lastModifyEndTimeStamp);
|
||||
$this->assertEquals(1024, $result->inventoryConfiguration->filter->lowerSizeBound);
|
||||
$this->assertEquals(1048576, $result->inventoryConfiguration->filter->upperSizeBound);
|
||||
$this->assertEquals('Standard,IA', $result->inventoryConfiguration->filter->storageClass);
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<InventoryConfiguration>
|
||||
<Id>report1</Id>
|
||||
<IsEnabled>true</IsEnabled>
|
||||
<Destination>
|
||||
<OSSBucketDestination>
|
||||
<Format>CSV</Format>
|
||||
<AccountId>1000000000000000</AccountId>
|
||||
<RoleArn>acs:ram::1000000000000000:role/AliyunOSSRole</RoleArn>
|
||||
<Bucket>acs:oss:::destination-bucket</Bucket>
|
||||
</OSSBucketDestination>
|
||||
</Destination>
|
||||
<Schedule>
|
||||
<Frequency>Weekly</Frequency>
|
||||
</Schedule>
|
||||
<IncludedObjectVersions>Current</IncludedObjectVersions>
|
||||
</InventoryConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketInventory::toGetBucketInventory($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('report1', $result->inventoryConfiguration->id);
|
||||
$this->assertTrue($result->inventoryConfiguration->isEnabled);
|
||||
$this->assertEquals(Models\InventoryFormatType::CSV, $result->inventoryConfiguration->destination->ossBucketDestination->format);
|
||||
$this->assertEquals('1000000000000000', $result->inventoryConfiguration->destination->ossBucketDestination->accountId);
|
||||
$this->assertEquals('acs:ram::1000000000000000:role/AliyunOSSRole', $result->inventoryConfiguration->destination->ossBucketDestination->roleArn);
|
||||
$this->assertEquals('acs:oss:::destination-bucket', $result->inventoryConfiguration->destination->ossBucketDestination->bucket);
|
||||
$this->assertEquals(Models\InventoryFrequencyType::WEEKLY, $result->inventoryConfiguration->schedule->frequency);
|
||||
$this->assertEquals('Current', $result->inventoryConfiguration->includedObjectVersions);
|
||||
}
|
||||
|
||||
public function testFromListBucketInventory()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\ListBucketInventoryRequest();
|
||||
$input = BucketInventory::fromListBucketInventory($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\ListBucketInventoryRequest('bucket-123');
|
||||
$input = BucketInventory::fromListBucketInventory($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
|
||||
$request = new Models\ListBucketInventoryRequest('bucket-123', 'token');
|
||||
$input = BucketInventory::fromListBucketInventory($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('token', $input->getParameters()['continuation-token']);
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToListBucketInventory()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketInventory::toListBucketInventory($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListInventoryConfigurationsResult>
|
||||
<InventoryConfiguration>
|
||||
<Id>report1</Id>
|
||||
<IsEnabled>true</IsEnabled>
|
||||
<Destination>
|
||||
<OSSBucketDestination>
|
||||
<Format>CSV</Format>
|
||||
<AccountId>1000000000000000</AccountId>
|
||||
<RoleArn>acs:ram::1000000000000000:role/AliyunOSSRole</RoleArn>
|
||||
<Bucket>acs:oss:::destination-bucket</Bucket>
|
||||
<Prefix>prefix1</Prefix>
|
||||
</OSSBucketDestination>
|
||||
</Destination>
|
||||
<Schedule>
|
||||
<Frequency>Daily</Frequency>
|
||||
</Schedule>
|
||||
<Filter>
|
||||
<Prefix>prefix/One</Prefix>
|
||||
</Filter>
|
||||
<IncludedObjectVersions>All</IncludedObjectVersions>
|
||||
<OptionalFields>
|
||||
<Field>Size</Field>
|
||||
<Field>LastModifiedDate</Field>
|
||||
<Field>ETag</Field>
|
||||
<Field>StorageClass</Field>
|
||||
<Field>IsMultipartUploaded</Field>
|
||||
<Field>EncryptionStatus</Field>
|
||||
</OptionalFields>
|
||||
</InventoryConfiguration>
|
||||
<InventoryConfiguration>
|
||||
<Id>report2</Id>
|
||||
<IsEnabled>true</IsEnabled>
|
||||
<Destination>
|
||||
<OSSBucketDestination>
|
||||
<Format>CSV</Format>
|
||||
<AccountId>1000000000000000</AccountId>
|
||||
<RoleArn>acs:ram::1000000000000000:role/AliyunOSSRole</RoleArn>
|
||||
<Bucket>acs:oss:::destination-bucket</Bucket>
|
||||
<Prefix>prefix2</Prefix>
|
||||
</OSSBucketDestination>
|
||||
</Destination>
|
||||
<Schedule>
|
||||
<Frequency>Daily</Frequency>
|
||||
</Schedule>
|
||||
<Filter>
|
||||
<Prefix>prefix/Two</Prefix>
|
||||
</Filter>
|
||||
<IncludedObjectVersions>All</IncludedObjectVersions>
|
||||
<OptionalFields>
|
||||
<Field>Size</Field>
|
||||
<Field>LastModifiedDate</Field>
|
||||
<Field>ETag</Field>
|
||||
<Field>StorageClass</Field>
|
||||
<Field>IsMultipartUploaded</Field>
|
||||
<Field>EncryptionStatus</Field>
|
||||
</OptionalFields>
|
||||
</InventoryConfiguration>
|
||||
<InventoryConfiguration>
|
||||
<Id>report3</Id>
|
||||
<IsEnabled>true</IsEnabled>
|
||||
<Destination>
|
||||
<OSSBucketDestination>
|
||||
<Format>CSV</Format>
|
||||
<AccountId>1000000000000000</AccountId>
|
||||
<RoleArn>acs:ram::1000000000000000:role/AliyunOSSRole</RoleArn>
|
||||
<Bucket>acs:oss:::destination-bucket</Bucket>
|
||||
<Prefix>prefix3</Prefix>
|
||||
</OSSBucketDestination>
|
||||
</Destination>
|
||||
<Schedule>
|
||||
<Frequency>Daily</Frequency>
|
||||
</Schedule>
|
||||
<Filter>
|
||||
<Prefix>prefix/Three</Prefix>
|
||||
</Filter>
|
||||
<IncludedObjectVersions>All</IncludedObjectVersions>
|
||||
<OptionalFields>
|
||||
<Field>Size</Field>
|
||||
<Field>LastModifiedDate</Field>
|
||||
<Field>ETag</Field>
|
||||
<Field>StorageClass</Field>
|
||||
<Field>IsMultipartUploaded</Field>
|
||||
<Field>EncryptionStatus</Field>
|
||||
</OptionalFields>
|
||||
</InventoryConfiguration>
|
||||
<IsTruncated>false</IsTruncated>
|
||||
</ListInventoryConfigurationsResult>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketInventory::toListBucketInventory($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals(3, count($result->listInventoryConfigurationsResult->inventoryConfigurations));
|
||||
$this->assertEquals('report1', $result->listInventoryConfigurationsResult->inventoryConfigurations[0]->id);
|
||||
$this->assertTrue($result->listInventoryConfigurationsResult->inventoryConfigurations[0]->isEnabled);
|
||||
$this->assertEquals(Models\InventoryFormatType::CSV, $result->listInventoryConfigurationsResult->inventoryConfigurations[0]->destination->ossBucketDestination->format);
|
||||
$this->assertEquals('1000000000000000', $result->listInventoryConfigurationsResult->inventoryConfigurations[0]->destination->ossBucketDestination->accountId);
|
||||
$this->assertEquals('acs:ram::1000000000000000:role/AliyunOSSRole', $result->listInventoryConfigurationsResult->inventoryConfigurations[0]->destination->ossBucketDestination->roleArn);
|
||||
$this->assertEquals('acs:oss:::destination-bucket', $result->listInventoryConfigurationsResult->inventoryConfigurations[0]->destination->ossBucketDestination->bucket);
|
||||
$this->assertEquals('prefix1', $result->listInventoryConfigurationsResult->inventoryConfigurations[0]->destination->ossBucketDestination->prefix);
|
||||
$this->assertEquals(Models\InventoryFrequencyType::DAILY, $result->listInventoryConfigurationsResult->inventoryConfigurations[0]->schedule->frequency);
|
||||
$this->assertEquals('All', $result->listInventoryConfigurationsResult->inventoryConfigurations[0]->includedObjectVersions);
|
||||
$this->assertEquals(6, count($result->listInventoryConfigurationsResult->inventoryConfigurations[0]->optionalFields->fields));
|
||||
$this->assertEquals(Models\InventoryOptionalFieldType::STORAGE_CLASS, $result->listInventoryConfigurationsResult->inventoryConfigurations[0]->optionalFields->fields[3]);
|
||||
$this->assertEquals('prefix/One', $result->listInventoryConfigurationsResult->inventoryConfigurations[0]->filter->prefix);
|
||||
|
||||
$this->assertEquals('report2', $result->listInventoryConfigurationsResult->inventoryConfigurations[1]->id);
|
||||
$this->assertTrue($result->listInventoryConfigurationsResult->inventoryConfigurations[1]->isEnabled);
|
||||
$this->assertEquals(Models\InventoryFormatType::CSV, $result->listInventoryConfigurationsResult->inventoryConfigurations[1]->destination->ossBucketDestination->format);
|
||||
$this->assertEquals('1000000000000000', $result->listInventoryConfigurationsResult->inventoryConfigurations[1]->destination->ossBucketDestination->accountId);
|
||||
$this->assertEquals('acs:ram::1000000000000000:role/AliyunOSSRole', $result->listInventoryConfigurationsResult->inventoryConfigurations[1]->destination->ossBucketDestination->roleArn);
|
||||
$this->assertEquals('acs:oss:::destination-bucket', $result->listInventoryConfigurationsResult->inventoryConfigurations[1]->destination->ossBucketDestination->bucket);
|
||||
$this->assertEquals('prefix2', $result->listInventoryConfigurationsResult->inventoryConfigurations[1]->destination->ossBucketDestination->prefix);
|
||||
$this->assertEquals(Models\InventoryFrequencyType::DAILY, $result->listInventoryConfigurationsResult->inventoryConfigurations[1]->schedule->frequency);
|
||||
$this->assertEquals('All', $result->listInventoryConfigurationsResult->inventoryConfigurations[1]->includedObjectVersions);
|
||||
$this->assertEquals(6, count($result->listInventoryConfigurationsResult->inventoryConfigurations[1]->optionalFields->fields));
|
||||
$this->assertEquals(Models\InventoryOptionalFieldType::STORAGE_CLASS, $result->listInventoryConfigurationsResult->inventoryConfigurations[1]->optionalFields->fields[3]);
|
||||
$this->assertEquals('prefix/Two', $result->listInventoryConfigurationsResult->inventoryConfigurations[1]->filter->prefix);
|
||||
$this->assertFalse($result->listInventoryConfigurationsResult->isTruncated);
|
||||
}
|
||||
|
||||
public function testFromDeleteBucketInventory()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteBucketInventoryRequest();
|
||||
$input = BucketInventory::fromDeleteBucketInventory($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\DeleteBucketInventoryRequest('bucket-123');
|
||||
$input = BucketInventory::fromDeleteBucketInventory($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, inventoryId", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteBucketInventoryRequest('bucket-123', 'inventoryId');
|
||||
$input = BucketInventory::fromDeleteBucketInventory($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToDeleteBucketInventory()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketInventory::toDeleteBucketInventory($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketInventory::toDeleteBucketInventory($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
538
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketLifecycleTest.php
vendored
Normal file
538
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketLifecycleTest.php
vendored
Normal file
@@ -0,0 +1,538 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Models\NoncurrentVersionTransition;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketLifecycle;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
use DateTime;
|
||||
use DateTimeZone;
|
||||
|
||||
class BucketLifecycleTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketLifecycle()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketLifecycleRequest();
|
||||
$input = BucketLifecycle::fromPutBucketLifecycle($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketLifecycleRequest('bucket-123');
|
||||
$input = BucketLifecycle::fromPutBucketLifecycle($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, lifecycleConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
// demo1
|
||||
$request = new Models\PutBucketLifecycleRequest('bucket-123');
|
||||
$rule = new Models\LifecycleRule(prefix: '', id: 'rule', expiration: new Models\LifecycleRuleExpiration(expiredObjectDeleteMarker: true), noncurrentVersionExpiration: new Models\NoncurrentVersionExpiration(noncurrentDays: 5), status: 'Enabled');
|
||||
$request->lifecycleConfiguration = new Models\LifecycleConfiguration(
|
||||
array(
|
||||
$rule
|
||||
)
|
||||
);
|
||||
$input = BucketLifecycle::fromPutBucketLifecycle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><LifecycleConfiguration><Rule><Prefix></Prefix><ID>rule</ID><Expiration><ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker></Expiration><NoncurrentVersionExpiration><NoncurrentDays>5</NoncurrentDays></NoncurrentVersionExpiration><Status>Enabled</Status></Rule></LifecycleConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo2
|
||||
$request = new Models\PutBucketLifecycleRequest('bucket-123');
|
||||
$rule = new Models\LifecycleRule(prefix: 'log/', id: 'rule', expiration: new Models\LifecycleRuleExpiration(days: 90), status: 'Enabled');
|
||||
$request->lifecycleConfiguration = new Models\LifecycleConfiguration(
|
||||
array(
|
||||
$rule
|
||||
)
|
||||
);
|
||||
$input = BucketLifecycle::fromPutBucketLifecycle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><LifecycleConfiguration><Rule><Prefix>log/</Prefix><ID>rule</ID><Expiration><Days>90</Days></Expiration><Status>Enabled</Status></Rule></LifecycleConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo3
|
||||
$request = new Models\PutBucketLifecycleRequest('bucket-123');
|
||||
$rule = new Models\LifecycleRule(prefix: 'log/', transitions: array(
|
||||
new Models\LifecycleRuleTransition(days: 30, storageClass: 'IA'),
|
||||
new Models\LifecycleRuleTransition(days: 60, storageClass: 'Archive'),
|
||||
), id: 'rule', expiration: new Models\LifecycleRuleExpiration(days: 3600), status: 'Enabled');
|
||||
$request->lifecycleConfiguration = new Models\LifecycleConfiguration(
|
||||
array(
|
||||
$rule
|
||||
)
|
||||
);
|
||||
$input = BucketLifecycle::fromPutBucketLifecycle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><LifecycleConfiguration><Rule><Prefix>log/</Prefix><Transition><Days>30</Days><StorageClass>IA</StorageClass></Transition><Transition><Days>60</Days><StorageClass>Archive</StorageClass></Transition><ID>rule</ID><Expiration><Days>3600</Days></Expiration><Status>Enabled</Status></Rule></LifecycleConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo4
|
||||
$request = new Models\PutBucketLifecycleRequest('bucket-123');
|
||||
$rule = new Models\LifecycleRule(prefix: '', id: 'rule', expiration: new Models\LifecycleRuleExpiration(expiredObjectDeleteMarker: true), noncurrentVersionExpiration: new Models\NoncurrentVersionExpiration(noncurrentDays: 5), status: 'Enabled');
|
||||
$request->lifecycleConfiguration = new Models\LifecycleConfiguration(
|
||||
array(
|
||||
$rule
|
||||
)
|
||||
);
|
||||
$input = BucketLifecycle::fromPutBucketLifecycle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><LifecycleConfiguration><Rule><Prefix></Prefix><ID>rule</ID><Expiration><ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker></Expiration><NoncurrentVersionExpiration><NoncurrentDays>5</NoncurrentDays></NoncurrentVersionExpiration><Status>Enabled</Status></Rule></LifecycleConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo5
|
||||
$request = new Models\PutBucketLifecycleRequest('bucket-123');
|
||||
$rule = new Models\LifecycleRule(prefix: '', transitions: array(
|
||||
new Models\LifecycleRuleTransition(days: 30, storageClass: 'Archive'),
|
||||
), filter: new Models\LifecycleRuleFilter(nots: array(new Models\LifecycleRuleNot(tag: new Models\Tag(key: 'key1', value: 'value1'), prefix: 'log')
|
||||
)), id: 'rule', expiration: new Models\LifecycleRuleExpiration(expiredObjectDeleteMarker: true), noncurrentVersionExpiration: new Models\NoncurrentVersionExpiration(noncurrentDays: 5), status: 'Enabled');
|
||||
$request->lifecycleConfiguration = new Models\LifecycleConfiguration(
|
||||
array(
|
||||
$rule
|
||||
)
|
||||
);
|
||||
$input = BucketLifecycle::fromPutBucketLifecycle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><LifecycleConfiguration><Rule><Prefix></Prefix><Transition><Days>30</Days><StorageClass>Archive</StorageClass></Transition><Filter><Not><Tag><Key>key1</Key><Value>value1</Value></Tag><Prefix>log</Prefix></Not></Filter><ID>rule</ID><Expiration><ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker></Expiration><NoncurrentVersionExpiration><NoncurrentDays>5</NoncurrentDays></NoncurrentVersionExpiration><Status>Enabled</Status></Rule></LifecycleConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
$request = new Models\PutBucketLifecycleRequest('bucket-123');
|
||||
$rule = new Models\LifecycleRule(
|
||||
prefix: '',
|
||||
transitions: array(
|
||||
new Models\LifecycleRuleTransition(days: 30, storageClass: 'Archive'),
|
||||
),
|
||||
filter: new Models\LifecycleRuleFilter(
|
||||
nots: array(
|
||||
new Models\LifecycleRuleNot(tag: new Models\Tag(key: 'key1', value: 'value1'), prefix: 'log'),
|
||||
new Models\LifecycleRuleNot(tag: new Models\Tag(key: 'key2', value: 'value2'), prefix: 'pre')
|
||||
)),
|
||||
id: 'rule',
|
||||
expiration: new Models\LifecycleRuleExpiration(expiredObjectDeleteMarker: true),
|
||||
noncurrentVersionExpiration: new Models\NoncurrentVersionExpiration(noncurrentDays: 5),
|
||||
status: 'Enabled'
|
||||
);
|
||||
$request->lifecycleConfiguration = new Models\LifecycleConfiguration(
|
||||
array(
|
||||
$rule
|
||||
)
|
||||
);
|
||||
$input = BucketLifecycle::fromPutBucketLifecycle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><LifecycleConfiguration><Rule><Prefix></Prefix><Transition><Days>30</Days><StorageClass>Archive</StorageClass></Transition><Filter><Not><Tag><Key>key1</Key><Value>value1</Value></Tag><Prefix>log</Prefix></Not><Not><Tag><Key>key2</Key><Value>value2</Value></Tag><Prefix>pre</Prefix></Not></Filter><ID>rule</ID><Expiration><ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker></Expiration><NoncurrentVersionExpiration><NoncurrentDays>5</NoncurrentDays></NoncurrentVersionExpiration><Status>Enabled</Status></Rule></LifecycleConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo6
|
||||
$request = new Models\PutBucketLifecycleRequest('bucket-123');
|
||||
$rule = new Models\LifecycleRule(prefix: '', transitions: array(
|
||||
new Models\LifecycleRuleTransition(days: 30, storageClass: 'Archive', isAccessTime: true, returnToStdWhenVisit: true),
|
||||
), status: 'Enabled');
|
||||
$request->lifecycleConfiguration = new Models\LifecycleConfiguration(
|
||||
array(
|
||||
$rule
|
||||
)
|
||||
);
|
||||
$input = BucketLifecycle::fromPutBucketLifecycle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><LifecycleConfiguration><Rule><Prefix></Prefix><Transition><Days>30</Days><StorageClass>Archive</StorageClass><IsAccessTime>true</IsAccessTime><ReturnToStdWhenVisit>true</ReturnToStdWhenVisit></Transition><Status>Enabled</Status></Rule></LifecycleConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo7
|
||||
$request = new Models\PutBucketLifecycleRequest('bucket-123');
|
||||
$rule = new Models\LifecycleRule(prefix: '', id: 'rule', abortMultipartUpload: new Models\LifecycleRuleAbortMultipartUpload(days: 30), status: 'Enabled');
|
||||
$request->lifecycleConfiguration = new Models\LifecycleConfiguration(
|
||||
array(
|
||||
$rule
|
||||
)
|
||||
);
|
||||
$input = BucketLifecycle::fromPutBucketLifecycle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><LifecycleConfiguration><Rule><Prefix></Prefix><ID>rule</ID><AbortMultipartUpload><Days>30</Days></AbortMultipartUpload><Status>Enabled</Status></Rule></LifecycleConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo8
|
||||
$request = new Models\PutBucketLifecycleRequest('bucket-123');
|
||||
$request->lifecycleConfiguration = new Models\LifecycleConfiguration(
|
||||
array(
|
||||
new Models\LifecycleRule(prefix: 'dir1', id: 'rule1', expiration: new Models\LifecycleRuleExpiration(days: 180), status: 'Enabled'),
|
||||
new Models\LifecycleRule(prefix: 'dir1/dir2/', id: 'rule2', expiration: new Models\LifecycleRuleExpiration(days: 30), status: 'Enabled'),
|
||||
),
|
||||
);
|
||||
$input = BucketLifecycle::fromPutBucketLifecycle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><LifecycleConfiguration><Rule><Prefix>dir1</Prefix><ID>rule1</ID><Expiration><Days>180</Days></Expiration><Status>Enabled</Status></Rule><Rule><Prefix>dir1/dir2/</Prefix><ID>rule2</ID><Expiration><Days>30</Days></Expiration><Status>Enabled</Status></Rule></LifecycleConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo9
|
||||
$request = new Models\PutBucketLifecycleRequest('bucket-123');
|
||||
$request->lifecycleConfiguration = new Models\LifecycleConfiguration(
|
||||
array(
|
||||
new Models\LifecycleRule(prefix: 'prefix0', id: 'r0', expiration: new Models\LifecycleRuleExpiration(days: 40, expiredObjectDeleteMarker: false), status: 'Enabled'),
|
||||
new Models\LifecycleRule(prefix: 'prefix1', filter: new Models\LifecycleRuleFilter(objectSizeGreaterThan: 500, objectSizeLessThan: 64500), id: 'r1', expiration: new Models\LifecycleRuleExpiration(days: 40, expiredObjectDeleteMarker: false), status: 'Enabled'),
|
||||
new Models\LifecycleRule(prefix: 'prefix3', transitions: array(new Models\LifecycleRuleTransition(days: 30, storageClass: 'IA', isAccessTime: false)), id: 'r3', expiration: new Models\LifecycleRuleExpiration(days: 40, expiredObjectDeleteMarker: false), status: 'Enabled'),
|
||||
new Models\LifecycleRule(prefix: 'prefix4', transitions: array(new Models\LifecycleRuleTransition(days: 30, storageClass: 'IA', isAccessTime: false)), noncurrentVersionTransitions: array(new NoncurrentVersionTransition(noncurrentDays: 10, storageClass: 'IA', isAccessTime: true, returnToStdWhenVisit: true)), id: 'r4', abortMultipartUpload: new Models\LifecycleRuleAbortMultipartUpload(createdBeforeDate: new DateTime('2015-11-11T00:00:00.000Z', new DateTimeZone('UTC'))), status: 'Enabled'),
|
||||
new Models\LifecycleRule(prefix: 'pre_', expiration: new Models\LifecycleRuleExpiration(days: 40, expiredObjectDeleteMarker: false), status: 'Enabled'),
|
||||
),
|
||||
);
|
||||
$input = BucketLifecycle::fromPutBucketLifecycle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><LifecycleConfiguration><Rule><Prefix>prefix0</Prefix><ID>r0</ID><Expiration><Days>40</Days><ExpiredObjectDeleteMarker>false</ExpiredObjectDeleteMarker></Expiration><Status>Enabled</Status></Rule><Rule><Prefix>prefix1</Prefix><Filter><ObjectSizeGreaterThan>500</ObjectSizeGreaterThan><ObjectSizeLessThan>64500</ObjectSizeLessThan></Filter><ID>r1</ID><Expiration><Days>40</Days><ExpiredObjectDeleteMarker>false</ExpiredObjectDeleteMarker></Expiration><Status>Enabled</Status></Rule><Rule><Prefix>prefix3</Prefix><Transition><Days>30</Days><StorageClass>IA</StorageClass><IsAccessTime>false</IsAccessTime></Transition><ID>r3</ID><Expiration><Days>40</Days><ExpiredObjectDeleteMarker>false</ExpiredObjectDeleteMarker></Expiration><Status>Enabled</Status></Rule><Rule><Prefix>prefix4</Prefix><Transition><Days>30</Days><StorageClass>IA</StorageClass><IsAccessTime>false</IsAccessTime></Transition><NoncurrentVersionTransition><NoncurrentDays>10</NoncurrentDays><StorageClass>IA</StorageClass><IsAccessTime>true</IsAccessTime><ReturnToStdWhenVisit>true</ReturnToStdWhenVisit></NoncurrentVersionTransition><ID>r4</ID><AbortMultipartUpload><CreatedBeforeDate>2015-11-11T00:00:00Z</CreatedBeforeDate></AbortMultipartUpload><Status>Enabled</Status></Rule><Rule><Prefix>pre_</Prefix><Expiration><Days>40</Days><ExpiredObjectDeleteMarker>false</ExpiredObjectDeleteMarker></Expiration><Status>Enabled</Status></Rule></LifecycleConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketLifecycle()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketLifecycle::toPutBucketLifecycle($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketLifecycle::toPutBucketLifecycle($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketLifecycle()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketLifecycleRequest();
|
||||
$input = BucketLifecycle::fromGetBucketLifecycle($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketLifecycleRequest('bucket-123');
|
||||
$input = BucketLifecycle::fromGetBucketLifecycle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketLifecycle()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketLifecycle::toGetBucketLifecycle($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<LifecycleConfiguration>
|
||||
<Rule>
|
||||
<ID>delete after one day</ID>
|
||||
<Prefix>logs1/</Prefix>
|
||||
<Status>Enabled</Status>
|
||||
<Expiration>
|
||||
<Days>1</Days>
|
||||
</Expiration>
|
||||
</Rule>
|
||||
<Rule>
|
||||
<ID>mtime transition1</ID>
|
||||
<Prefix>logs2/</Prefix>
|
||||
<Status>Enabled</Status>
|
||||
<Transition>
|
||||
<Days>30</Days>
|
||||
<StorageClass>IA</StorageClass>
|
||||
</Transition>
|
||||
</Rule>
|
||||
<Rule>
|
||||
<ID>mtime transition2</ID>
|
||||
<Prefix>logs3/</Prefix>
|
||||
<Status>Enabled</Status>
|
||||
<Transition>
|
||||
<Days>30</Days>
|
||||
<StorageClass>IA</StorageClass>
|
||||
<IsAccessTime>false</IsAccessTime>
|
||||
</Transition>
|
||||
</Rule>
|
||||
</LifecycleConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketLifecycle::toGetBucketLifecycle($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals(3, count($result->lifecycleConfiguration->rules));
|
||||
$this->assertEquals('delete after one day', $result->lifecycleConfiguration->rules[0]->id);
|
||||
$this->assertEquals('logs1/', $result->lifecycleConfiguration->rules[0]->prefix);
|
||||
$this->assertEquals('Enabled', $result->lifecycleConfiguration->rules[0]->status);
|
||||
$this->assertEquals(1, $result->lifecycleConfiguration->rules[0]->expiration->days);
|
||||
|
||||
$this->assertEquals('mtime transition1', $result->lifecycleConfiguration->rules[1]->id);
|
||||
$this->assertEquals('logs2/', $result->lifecycleConfiguration->rules[1]->prefix);
|
||||
$this->assertEquals('Enabled', $result->lifecycleConfiguration->rules[1]->status);
|
||||
$this->assertEquals(1, count($result->lifecycleConfiguration->rules[1]->transitions));
|
||||
$this->assertEquals(30, $result->lifecycleConfiguration->rules[1]->transitions[0]->days);
|
||||
$this->assertEquals('IA', $result->lifecycleConfiguration->rules[1]->transitions[0]->storageClass);
|
||||
|
||||
$this->assertEquals('mtime transition2', $result->lifecycleConfiguration->rules[2]->id);
|
||||
$this->assertEquals('logs3/', $result->lifecycleConfiguration->rules[2]->prefix);
|
||||
$this->assertEquals('Enabled', $result->lifecycleConfiguration->rules[2]->status);
|
||||
$this->assertEquals(1, count($result->lifecycleConfiguration->rules[2]->transitions));
|
||||
$this->assertEquals(30, $result->lifecycleConfiguration->rules[2]->transitions[0]->days);
|
||||
$this->assertEquals('IA', $result->lifecycleConfiguration->rules[2]->transitions[0]->storageClass);
|
||||
$this->assertFalse($result->lifecycleConfiguration->rules[2]->transitions[0]->isAccessTime);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<LifecycleConfiguration>
|
||||
<Rule>
|
||||
<ID>atime transition1</ID>
|
||||
<Prefix>logs1/</Prefix>
|
||||
<Status>Enabled</Status>
|
||||
<Transition>
|
||||
<Days>30</Days>
|
||||
<StorageClass>IA</StorageClass>
|
||||
<IsAccessTime>true</IsAccessTime>
|
||||
<ReturnToStdWhenVisit>false</ReturnToStdWhenVisit>
|
||||
</Transition>
|
||||
<AtimeBase>1631698332</AtimeBase>
|
||||
</Rule>
|
||||
<Rule>
|
||||
<ID>atime transition2</ID>
|
||||
<Prefix>logs2/</Prefix>
|
||||
<Status>Enabled</Status>
|
||||
<NoncurrentVersionTransition>
|
||||
<NoncurrentDays>10</NoncurrentDays>
|
||||
<StorageClass>IA</StorageClass>
|
||||
<IsAccessTime>true</IsAccessTime>
|
||||
<ReturnToStdWhenVisit>false</ReturnToStdWhenVisit>
|
||||
</NoncurrentVersionTransition>
|
||||
<AtimeBase>1631698332</AtimeBase>
|
||||
</Rule>
|
||||
</LifecycleConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketLifecycle::toGetBucketLifecycle($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals(2, count($result->lifecycleConfiguration->rules));
|
||||
$this->assertEquals('atime transition1', $result->lifecycleConfiguration->rules[0]->id);
|
||||
$this->assertEquals('logs1/', $result->lifecycleConfiguration->rules[0]->prefix);
|
||||
$this->assertEquals('Enabled', $result->lifecycleConfiguration->rules[0]->status);
|
||||
$this->assertEquals(1, count($result->lifecycleConfiguration->rules[0]->transitions));
|
||||
$this->assertEquals(30, $result->lifecycleConfiguration->rules[0]->transitions[0]->days);
|
||||
$this->assertEquals('IA', $result->lifecycleConfiguration->rules[0]->transitions[0]->storageClass);
|
||||
$this->assertFalse($result->lifecycleConfiguration->rules[0]->transitions[0]->returnToStdWhenVisit);
|
||||
$this->assertTrue($result->lifecycleConfiguration->rules[0]->transitions[0]->isAccessTime);
|
||||
$this->assertEquals(1631698332, $result->lifecycleConfiguration->rules[0]->atimeBase);
|
||||
|
||||
$this->assertEquals('atime transition2', $result->lifecycleConfiguration->rules[1]->id);
|
||||
$this->assertEquals('logs2/', $result->lifecycleConfiguration->rules[1]->prefix);
|
||||
$this->assertEquals('Enabled', $result->lifecycleConfiguration->rules[1]->status);
|
||||
$this->assertEquals(10, $result->lifecycleConfiguration->rules[1]->noncurrentVersionTransitions[0]->noncurrentDays);
|
||||
$this->assertEquals('IA', $result->lifecycleConfiguration->rules[1]->noncurrentVersionTransitions[0]->storageClass);
|
||||
$this->assertFalse($result->lifecycleConfiguration->rules[1]->noncurrentVersionTransitions[0]->returnToStdWhenVisit);
|
||||
$this->assertTrue($result->lifecycleConfiguration->rules[1]->noncurrentVersionTransitions[0]->isAccessTime);
|
||||
$this->assertEquals(1631698332, $result->lifecycleConfiguration->rules[1]->atimeBase);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<LifecycleConfiguration>
|
||||
<Rule>
|
||||
<Prefix></Prefix>
|
||||
<Transition>
|
||||
<Days>30</Days>
|
||||
<StorageClass>Archive</StorageClass>
|
||||
</Transition>
|
||||
<Filter>
|
||||
<Not>
|
||||
<Tag>
|
||||
<Key>key1</Key>
|
||||
<Value>value1</Value>
|
||||
</Tag>
|
||||
<Prefix>log</Prefix>
|
||||
</Not>
|
||||
</Filter>
|
||||
<ID>rule</ID>
|
||||
<Expiration>
|
||||
<ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker>
|
||||
</Expiration>
|
||||
<NoncurrentVersionExpiration>
|
||||
<NoncurrentDays>5</NoncurrentDays>
|
||||
</NoncurrentVersionExpiration>
|
||||
<Status>Enabled</Status>
|
||||
</Rule>
|
||||
</LifecycleConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketLifecycle::toGetBucketLifecycle($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals(1, count($result->lifecycleConfiguration->rules));
|
||||
$this->assertEquals('rule', $result->lifecycleConfiguration->rules[0]->id);
|
||||
$this->assertEquals('', $result->lifecycleConfiguration->rules[0]->prefix);
|
||||
$this->assertEquals('Enabled', $result->lifecycleConfiguration->rules[0]->status);
|
||||
$this->assertEquals(1, count($result->lifecycleConfiguration->rules[0]->transitions));
|
||||
$this->assertEquals(30, $result->lifecycleConfiguration->rules[0]->transitions[0]->days);
|
||||
$this->assertEquals('Archive', $result->lifecycleConfiguration->rules[0]->transitions[0]->storageClass);
|
||||
$this->assertEquals(1, count($result->lifecycleConfiguration->rules[0]->filter->nots));
|
||||
$this->assertEquals('log', $result->lifecycleConfiguration->rules[0]->filter->nots[0]->prefix);
|
||||
$this->assertEquals('key1', $result->lifecycleConfiguration->rules[0]->filter->nots[0]->tag->key);
|
||||
$this->assertEquals('value1', $result->lifecycleConfiguration->rules[0]->filter->nots[0]->tag->value);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<LifecycleConfiguration>
|
||||
<Rule>
|
||||
<Prefix></Prefix>
|
||||
<Transition>
|
||||
<Days>30</Days>
|
||||
<StorageClass>Archive</StorageClass>
|
||||
</Transition>
|
||||
<Filter>
|
||||
<Not>
|
||||
<Tag>
|
||||
<Key>key1</Key>
|
||||
<Value>value1</Value>
|
||||
</Tag>
|
||||
<Prefix>log</Prefix>
|
||||
</Not>
|
||||
<Not>
|
||||
<Tag>
|
||||
<Key>key2</Key>
|
||||
<Value>value2</Value>
|
||||
</Tag>
|
||||
<Prefix>pre</Prefix>
|
||||
</Not>
|
||||
</Filter>
|
||||
<ID>rule</ID>
|
||||
<Expiration>
|
||||
<ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker>
|
||||
</Expiration>
|
||||
<NoncurrentVersionExpiration>
|
||||
<NoncurrentDays>5</NoncurrentDays>
|
||||
</NoncurrentVersionExpiration>
|
||||
<Status>Enabled</Status>
|
||||
</Rule>
|
||||
</LifecycleConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketLifecycle::toGetBucketLifecycle($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals(1, count($result->lifecycleConfiguration->rules));
|
||||
$this->assertEquals('rule', $result->lifecycleConfiguration->rules[0]->id);
|
||||
$this->assertEquals('', $result->lifecycleConfiguration->rules[0]->prefix);
|
||||
$this->assertEquals('Enabled', $result->lifecycleConfiguration->rules[0]->status);
|
||||
$this->assertEquals(1, count($result->lifecycleConfiguration->rules[0]->transitions));
|
||||
$this->assertEquals(30, $result->lifecycleConfiguration->rules[0]->transitions[0]->days);
|
||||
$this->assertEquals('Archive', $result->lifecycleConfiguration->rules[0]->transitions[0]->storageClass);
|
||||
$this->assertEquals(2, count($result->lifecycleConfiguration->rules[0]->filter->nots));
|
||||
$this->assertEquals('log', $result->lifecycleConfiguration->rules[0]->filter->nots[0]->prefix);
|
||||
$this->assertEquals('key1', $result->lifecycleConfiguration->rules[0]->filter->nots[0]->tag->key);
|
||||
$this->assertEquals('value1', $result->lifecycleConfiguration->rules[0]->filter->nots[0]->tag->value);
|
||||
$this->assertEquals('pre', $result->lifecycleConfiguration->rules[0]->filter->nots[1]->prefix);
|
||||
$this->assertEquals('key2', $result->lifecycleConfiguration->rules[0]->filter->nots[1]->tag->key);
|
||||
$this->assertEquals('value2', $result->lifecycleConfiguration->rules[0]->filter->nots[1]->tag->value);
|
||||
}
|
||||
|
||||
public function testFromDeleteBucketLifecycle()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteBucketLifecycleRequest();
|
||||
$input = BucketLifecycle::fromDeleteBucketLifecycle($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteBucketLifecycleRequest('bucket-123');
|
||||
$input = BucketLifecycle::fromDeleteBucketLifecycle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToDeleteBucketLifecycle()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketLifecycle::toDeleteBucketLifecycle($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketLifecycle::toDeleteBucketLifecycle($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
354
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketLoggingTest.php
vendored
Normal file
354
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketLoggingTest.php
vendored
Normal file
@@ -0,0 +1,354 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketLogging;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketLoggingTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketLogging()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketLoggingRequest();
|
||||
$input = BucketLogging::fromPutBucketLogging($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketLoggingRequest('bucket-123');
|
||||
$input = BucketLogging::fromPutBucketLogging($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucketLoggingStatus", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\PutBucketLoggingRequest('bucket-123', new Models\BucketLoggingStatus(new Models\LoggingEnabled(
|
||||
targetBucket: 'TargetBucket', targetPrefix: 'TargetPrefix'
|
||||
)));
|
||||
$input = BucketLogging::fromPutBucketLogging($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><BucketLoggingStatus><LoggingEnabled><TargetBucket>TargetBucket</TargetBucket><TargetPrefix>TargetPrefix</TargetPrefix></LoggingEnabled></BucketLoggingStatus>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
$request = new Models\PutBucketLoggingRequest('bucket-123', new Models\BucketLoggingStatus(new Models\LoggingEnabled(
|
||||
targetBucket: 'TargetBucket', targetPrefix: 'TargetPrefix', loggingRole: 'AliyunOSSLoggingDefaultRole'
|
||||
)));
|
||||
$input = BucketLogging::fromPutBucketLogging($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><BucketLoggingStatus><LoggingEnabled><TargetBucket>TargetBucket</TargetBucket><TargetPrefix>TargetPrefix</TargetPrefix><LoggingRole>AliyunOSSLoggingDefaultRole</LoggingRole></LoggingEnabled></BucketLoggingStatus>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketLogging()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketLogging::toPutBucketLogging($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketLogging::toPutBucketLogging($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketLogging()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketLoggingRequest();
|
||||
$input = BucketLogging::fromGetBucketLogging($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketLoggingRequest('bucket-123');
|
||||
$input = BucketLogging::fromGetBucketLogging($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketLogging()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketLogging::toGetBucketLogging($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<BucketLoggingStatus>
|
||||
<LoggingEnabled>
|
||||
<TargetBucket>bucket-log</TargetBucket>
|
||||
<TargetPrefix>prefix-access_log</TargetPrefix>
|
||||
</LoggingEnabled>
|
||||
</BucketLoggingStatus>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketLogging::toGetBucketLogging($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('bucket-log', $result->bucketLoggingStatus->loggingEnabled->targetBucket);
|
||||
$this->assertEquals('prefix-access_log', $result->bucketLoggingStatus->loggingEnabled->targetPrefix);
|
||||
|
||||
|
||||
$output = new OperationOutput();
|
||||
$result = BucketLogging::toGetBucketLogging($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<BucketLoggingStatus>
|
||||
<LoggingEnabled>
|
||||
<TargetBucket>bucket-log</TargetBucket>
|
||||
<TargetPrefix>prefix-access_log</TargetPrefix>
|
||||
<LoggingRole>AliyunOSSLoggingDefaultRole</LoggingRole>
|
||||
</LoggingEnabled>
|
||||
</BucketLoggingStatus>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketLogging::toGetBucketLogging($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('bucket-log', $result->bucketLoggingStatus->loggingEnabled->targetBucket);
|
||||
$this->assertEquals('prefix-access_log', $result->bucketLoggingStatus->loggingEnabled->targetPrefix);
|
||||
$this->assertEquals('AliyunOSSLoggingDefaultRole', $result->bucketLoggingStatus->loggingEnabled->loggingRole);
|
||||
}
|
||||
|
||||
public function testFromDeleteBucketLogging()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteBucketLoggingRequest();
|
||||
$input = BucketLogging::fromDeleteBucketLogging($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteBucketLoggingRequest('bucket-123');
|
||||
$input = BucketLogging::fromDeleteBucketLogging($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToDeleteBucketLogging()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketLogging::toDeleteBucketLogging($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketLogging::toDeleteBucketLogging($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromPutUserDefinedLogFieldsConfig()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutUserDefinedLogFieldsConfigRequest();
|
||||
$input = BucketLogging::fromPutUserDefinedLogFieldsConfig($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutUserDefinedLogFieldsConfigRequest('bucket-123');
|
||||
$input = BucketLogging::fromPutUserDefinedLogFieldsConfig($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, userDefinedLogFieldsConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\PutUserDefinedLogFieldsConfigRequest('bucket-123', new Models\UserDefinedLogFieldsConfiguration(
|
||||
new Models\LoggingParamSet(array("param1", "param2")),
|
||||
new Models\LoggingHeaderSet(array("header1", "header2", "header3"))
|
||||
));
|
||||
$input = BucketLogging::fromPutUserDefinedLogFieldsConfig($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><UserDefinedLogFieldsConfiguration><ParamSet><parameter>param1</parameter><parameter>param2</parameter></ParamSet><HeaderSet><header>header1</header><header>header2</header><header>header3</header></HeaderSet></UserDefinedLogFieldsConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutUserDefinedLogFieldsConfig()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketLogging::toPutUserDefinedLogFieldsConfig($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketLogging::toPutUserDefinedLogFieldsConfig($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetUserDefinedLogFieldsConfig()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetUserDefinedLogFieldsConfigRequest();
|
||||
$input = BucketLogging::fromGetUserDefinedLogFieldsConfig($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetUserDefinedLogFieldsConfigRequest('bucket-123');
|
||||
$input = BucketLogging::fromGetUserDefinedLogFieldsConfig($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetUserDefinedLogFieldsConfig()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketLogging::toGetUserDefinedLogFieldsConfig($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<UserDefinedLogFieldsConfiguration>
|
||||
<HeaderSet>
|
||||
<header>header1</header>
|
||||
<header>header2</header>
|
||||
<header>header3</header>
|
||||
</HeaderSet>
|
||||
<ParamSet>
|
||||
<parameter>param1</parameter>
|
||||
<parameter>param2</parameter>
|
||||
</ParamSet>
|
||||
</UserDefinedLogFieldsConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketLogging::toGetUserDefinedLogFieldsConfig($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('header1', $result->userDefinedLogFieldsConfiguration->headerSet->headers[0]);
|
||||
$this->assertEquals('header3', $result->userDefinedLogFieldsConfiguration->headerSet->headers[2]);
|
||||
$this->assertEquals('param2', $result->userDefinedLogFieldsConfiguration->paramSet->parameters[1]);
|
||||
}
|
||||
|
||||
public function testFromUserDefinedLogFieldsConfig()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteUserDefinedLogFieldsConfigRequest();
|
||||
$input = BucketLogging::fromDeleteUserDefinedLogFieldsConfig($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteUserDefinedLogFieldsConfigRequest('bucket-123');
|
||||
$input = BucketLogging::fromDeleteUserDefinedLogFieldsConfig($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToUserDefinedLogFieldsConfig()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketLogging::toDeleteUserDefinedLogFieldsConfig($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketLogging::toDeleteUserDefinedLogFieldsConfig($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
639
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketMetaQueryTest.php
vendored
Normal file
639
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketMetaQueryTest.php
vendored
Normal file
@@ -0,0 +1,639 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketMetaQuery;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketMetaQueryTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromOpenMetaQuery()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\OpenMetaQueryRequest();
|
||||
$input = BucketMetaQuery::fromOpenMetaQuery($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\OpenMetaQueryRequest('bucket-123');
|
||||
$input = BucketMetaQuery::fromOpenMetaQuery($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('add', $input->getParameters()['comp']);
|
||||
$this->assertEquals('', $input->getParameters()['metaQuery']);
|
||||
|
||||
$request = new Models\OpenMetaQueryRequest('bucket-123', 'basic');
|
||||
$input = BucketMetaQuery::fromOpenMetaQuery($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('add', $input->getParameters()['comp']);
|
||||
$this->assertEquals('', $input->getParameters()['metaQuery']);
|
||||
$this->assertEquals('basic', $input->getParameters()['mode']);
|
||||
|
||||
$request = new Models\OpenMetaQueryRequest('bucket-123', 'semantic');
|
||||
$input = BucketMetaQuery::fromOpenMetaQuery($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('add', $input->getParameters()['comp']);
|
||||
$this->assertEquals('', $input->getParameters()['metaQuery']);
|
||||
$this->assertEquals('semantic', $input->getParameters()['mode']);
|
||||
}
|
||||
|
||||
public function testToOpenMetaQuery()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketMetaQuery::toOpenMetaQuery($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketMetaQuery::toOpenMetaQuery($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetMetaQueryStatus()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetMetaQueryStatusRequest();
|
||||
$input = BucketMetaQuery::fromGetMetaQueryStatus($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetMetaQueryStatusRequest('bucket-123');
|
||||
$input = BucketMetaQuery::fromGetMetaQueryStatus($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('', $input->getParameters()['metaQuery']);
|
||||
}
|
||||
|
||||
public function testToGetMetaQueryStatus()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketMetaQuery::toGetMetaQueryStatus($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaQueryStatus>
|
||||
<State>Running</State>
|
||||
<Phase>FullScanning</Phase>
|
||||
<CreateTime>2021-08-02T10:49:17.289372919+08:00</CreateTime>
|
||||
<UpdateTime>2021-08-02T10:49:17.289372919+08:00</UpdateTime>
|
||||
</MetaQueryStatus>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
body: Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketMetaQuery::toGetMetaQueryStatus($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('Running', $result->metaQueryStatus->state);
|
||||
$this->assertEquals('FullScanning', $result->metaQueryStatus->phase);
|
||||
$this->assertEquals('2021-08-02T10:49:17.289372919+08:00', $result->metaQueryStatus->createTime);
|
||||
$this->assertEquals('2021-08-02T10:49:17.289372919+08:00', $result->metaQueryStatus->updateTime);
|
||||
}
|
||||
|
||||
public function testFromDoMetaQuery()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DoMetaQueryRequest();
|
||||
$input = BucketMetaQuery::fromDoMetaQuery($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\DoMetaQueryRequest('bucket-123');
|
||||
$input = BucketMetaQuery::fromDoMetaQuery($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, metaQuery", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DoMetaQueryRequest('bucket-123', new Models\MetaQuery(
|
||||
maxResults: 5,
|
||||
query: "{'Field': 'Size','Value': '1048576','Operation': 'gt'}",
|
||||
sort: 'Size',
|
||||
order: Models\MetaQueryOrderType::ASC,
|
||||
aggregations: new Models\MetaQueryAggregations(
|
||||
[
|
||||
new Models\MetaQueryAggregation(
|
||||
field: 'Size',
|
||||
operation: 'sum'
|
||||
),
|
||||
new Models\MetaQueryAggregation(
|
||||
field: 'Size',
|
||||
operation: 'max'
|
||||
),
|
||||
]
|
||||
),
|
||||
nextToken: 'MTIzNDU2Nzg6aW1tdGVzdDpleGFtcGxlYnVja2V0OmRhdGFzZXQwMDE6b3NzOi8vZXhhbXBsZWJ1Y2tldC9zYW1wbGVvYmplY3QxLmpw****'
|
||||
));
|
||||
$input = BucketMetaQuery::fromDoMetaQuery($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><MetaQuery><MaxResults>5</MaxResults><Query>{'Field': 'Size','Value': '1048576','Operation': 'gt'}</Query><Sort>Size</Sort><Order>asc</Order><Aggregations><Aggregation><Field>Size</Field><Operation>sum</Operation></Aggregation><Aggregation><Field>Size</Field><Operation>max</Operation></Aggregation></Aggregations><NextToken>MTIzNDU2Nzg6aW1tdGVzdDpleGFtcGxlYnVja2V0OmRhdGFzZXQwMDE6b3NzOi8vZXhhbXBsZWJ1Y2tldC9zYW1wbGVvYmplY3QxLmpw****</NextToken></MetaQuery>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
$request = new Models\DoMetaQueryRequest('bucket-123', new Models\MetaQuery(
|
||||
maxResults: 99,
|
||||
query: "Overlook the snow-covered forest",
|
||||
nextToken: 'MTIzNDU2Nzg6aW1tdGVzdDpleGFtcGxlYnVja2V0OmRhdGFzZXQwMDE6b3NzOi8vZXhhbXBsZWJ1Y2tldC9zYW1wbGVvYmplY3QxLmpw****',
|
||||
mediaTypes: new Models\MetaQueryMediaTypes('image'),
|
||||
simpleQuery: "{'Operation':'gt', 'Field': 'Size', 'Value': '30'}"
|
||||
), mode: 'semantic');
|
||||
$input = BucketMetaQuery::fromDoMetaQuery($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><MetaQuery><MaxResults>99</MaxResults><Query>Overlook the snow-covered forest</Query><NextToken>MTIzNDU2Nzg6aW1tdGVzdDpleGFtcGxlYnVja2V0OmRhdGFzZXQwMDE6b3NzOi8vZXhhbXBsZWJ1Y2tldC9zYW1wbGVvYmplY3QxLmpw****</NextToken><MediaTypes><MediaType>image</MediaType></MediaTypes><SimpleQuery>{'Operation':'gt', 'Field': 'Size', 'Value': '30'}</SimpleQuery></MetaQuery>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToDoMetaQuery()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketMetaQuery::toDoMetaQuery($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaQuery>
|
||||
<NextToken>MTIzNDU2Nzg6aW1tdGVzdDpleGFtcGxlYnVja2V0OmRhdGFzZXQwMDE6b3NzOi8vZXhhbXBsZWJ1Y2tldC9zYW1wbGVvYmplY3QxLmpw****</NextToken>
|
||||
<Files>
|
||||
<File>
|
||||
<Filename>exampleobject.txt</Filename>
|
||||
<Size>120</Size>
|
||||
<FileModifiedTime>2021-06-29T15:04:05.000000000Z07:00</FileModifiedTime>
|
||||
<OSSObjectType>Normal</OSSObjectType>
|
||||
<OSSStorageClass>Standard</OSSStorageClass>
|
||||
<ObjectACL>default</ObjectACL>
|
||||
<ETag>"fba9dede5f27731c9771645a3986****"</ETag>
|
||||
<OSSCRC64>4858A48BD1466884</OSSCRC64>
|
||||
<OSSTaggingCount>2</OSSTaggingCount>
|
||||
<OSSTagging>
|
||||
<Tagging>
|
||||
<Key>owner</Key>
|
||||
<Value>John</Value>
|
||||
</Tagging>
|
||||
<Tagging>
|
||||
<Key>type</Key>
|
||||
<Value>document</Value>
|
||||
</Tagging>
|
||||
</OSSTagging>
|
||||
<OSSUserMeta>
|
||||
<UserMeta>
|
||||
<Key>x-oss-meta-location</Key>
|
||||
<Value>hangzhou</Value>
|
||||
</UserMeta>
|
||||
</OSSUserMeta>
|
||||
</File>
|
||||
</Files>
|
||||
<Aggregations>
|
||||
<Aggregation>
|
||||
<Field>Size</Field>
|
||||
<Operation>sum</Operation>
|
||||
<Value>4859250309</Value>
|
||||
</Aggregation>
|
||||
<Aggregation>
|
||||
<Field>Size</Field>
|
||||
<Operation>max</Operation>
|
||||
<Value>2235483240</Value>
|
||||
</Aggregation>
|
||||
</Aggregations>
|
||||
</MetaQuery>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
body: Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketMetaQuery::toDoMetaQuery($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('MTIzNDU2Nzg6aW1tdGVzdDpleGFtcGxlYnVja2V0OmRhdGFzZXQwMDE6b3NzOi8vZXhhbXBsZWJ1Y2tldC9zYW1wbGVvYmplY3QxLmpw****', $result->nextToken);
|
||||
|
||||
$this->assertEquals(1, count($result->files->file));
|
||||
$this->assertEquals('exampleobject.txt', $result->files->file[0]->filename);
|
||||
$this->assertEquals(120, $result->files->file[0]->size);
|
||||
$this->assertEquals('2021-06-29T15:04:05.000000000Z07:00', $result->files->file[0]->fileModifiedTime);
|
||||
$this->assertEquals('Normal', $result->files->file[0]->ossObjectType);
|
||||
$this->assertEquals('Standard', $result->files->file[0]->ossStorageClass);
|
||||
$this->assertEquals('default', $result->files->file[0]->objectACL);
|
||||
$this->assertEquals('"fba9dede5f27731c9771645a3986****"', $result->files->file[0]->etag);
|
||||
$this->assertEquals(2, $result->files->file[0]->ossTaggingCount);
|
||||
$this->assertEquals('owner', $result->files->file[0]->ossTagging->taggings[0]->key);
|
||||
$this->assertEquals('John', $result->files->file[0]->ossTagging->taggings[0]->value);
|
||||
$this->assertEquals('type', $result->files->file[0]->ossTagging->taggings[1]->key);
|
||||
$this->assertEquals('document', $result->files->file[0]->ossTagging->taggings[1]->value);
|
||||
$this->assertEquals(1, count($result->files->file[0]->ossUserMeta->userMetas));
|
||||
$this->assertEquals('x-oss-meta-location', $result->files->file[0]->ossUserMeta->userMetas[0]->key);
|
||||
$this->assertEquals('hangzhou', $result->files->file[0]->ossUserMeta->userMetas[0]->value);
|
||||
$this->assertEquals('Size', $result->aggregations->aggregations[0]->field);
|
||||
$this->assertEquals('sum', $result->aggregations->aggregations[0]->operation);
|
||||
$this->assertEquals(4859250309, $result->aggregations->aggregations[0]->value);
|
||||
$this->assertEquals('Size', $result->aggregations->aggregations[1]->field);
|
||||
$this->assertEquals('max', $result->aggregations->aggregations[1]->operation);
|
||||
$this->assertEquals(2235483240, $result->aggregations->aggregations[1]->value);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaQuery>
|
||||
<NextToken></NextToken>
|
||||
<Aggregations>
|
||||
<Aggregation>
|
||||
<Field>Size</Field>
|
||||
<Operation>sum</Operation>
|
||||
<Value>30930054</Value>
|
||||
</Aggregation>
|
||||
<Aggregation>
|
||||
<Field>Size</Field>
|
||||
<Operation>group</Operation>
|
||||
<Groups>
|
||||
<Group>
|
||||
<Value>1536000</Value>
|
||||
<Count>1</Count>
|
||||
</Group>
|
||||
<Group>
|
||||
<Value>5472362</Value>
|
||||
<Count>1</Count>
|
||||
</Group>
|
||||
<Group>
|
||||
<Value>10354204</Value>
|
||||
<Count>1</Count>
|
||||
</Group>
|
||||
<Group>
|
||||
<Value>1890304</Value>
|
||||
<Count>3</Count>
|
||||
</Group>
|
||||
<Group>
|
||||
<Value>2632192</Value>
|
||||
<Count>3</Count>
|
||||
</Group>
|
||||
</Groups>
|
||||
</Aggregation>
|
||||
</Aggregations>
|
||||
</MetaQuery>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
body: Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketMetaQuery::toDoMetaQuery($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals(2, count($result->aggregations->aggregations));
|
||||
$this->assertEquals('Size', $result->aggregations->aggregations[0]->field);
|
||||
$this->assertEquals('sum', $result->aggregations->aggregations[0]->operation);
|
||||
$this->assertEquals(30930054, $result->aggregations->aggregations[0]->value);
|
||||
$this->assertEquals('Size', $result->aggregations->aggregations[1]->field);
|
||||
$this->assertEquals('group', $result->aggregations->aggregations[1]->operation);
|
||||
$this->assertEquals(5, count($result->aggregations->aggregations[1]->groups->groups));
|
||||
$this->assertEquals(1, $result->aggregations->aggregations[1]->groups->groups[0]->count);
|
||||
$this->assertEquals('1536000', $result->aggregations->aggregations[1]->groups->groups[0]->value);
|
||||
$this->assertEquals(1, $result->aggregations->aggregations[1]->groups->groups[1]->count);
|
||||
$this->assertEquals('5472362', $result->aggregations->aggregations[1]->groups->groups[1]->value);
|
||||
$this->assertEquals(1, $result->aggregations->aggregations[1]->groups->groups[2]->count);
|
||||
$this->assertEquals('10354204', $result->aggregations->aggregations[1]->groups->groups[2]->value);
|
||||
$this->assertEquals(3, $result->aggregations->aggregations[1]->groups->groups[3]->count);
|
||||
$this->assertEquals('1890304', $result->aggregations->aggregations[1]->groups->groups[3]->value);
|
||||
$this->assertEquals(3, $result->aggregations->aggregations[1]->groups->groups[4]->count);
|
||||
$this->assertEquals('2632192', $result->aggregations->aggregations[1]->groups->groups[4]->value);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaQuery>
|
||||
<Files>
|
||||
<File>
|
||||
<URI>oss://bucket/sample-object.jpg</URI>
|
||||
<Filename>sample-object.jpg</Filename>
|
||||
<Size>1000</Size>
|
||||
<ObjectACL>default</ObjectACL>
|
||||
<FileModifiedTime>2021-06-29T14:50:14.011643661+08:00</FileModifiedTime>
|
||||
<ServerSideEncryption>AES256</ServerSideEncryption>
|
||||
<ServerSideEncryptionCustomerAlgorithm>SM4</ServerSideEncryptionCustomerAlgorithm>
|
||||
<ETag>"1D9C280A7C4F67F7EF873E28449****"</ETag>
|
||||
<OSSCRC64>559890638950338001</OSSCRC64>
|
||||
<ProduceTime>2021-06-29T14:50:15.011643661+08:00</ProduceTime>
|
||||
<ContentType>image/jpeg</ContentType>
|
||||
<MediaType>image</MediaType>
|
||||
<LatLong>30.134390,120.074997</LatLong>
|
||||
<Title>test</Title>
|
||||
<OSSExpiration>2024-12-01T12:00:00.000Z</OSSExpiration>
|
||||
<AccessControlAllowOrigin>https://aliyundoc.com</AccessControlAllowOrigin>
|
||||
<AccessControlRequestMethod>PUT</AccessControlRequestMethod>
|
||||
<ServerSideDataEncryption>SM4</ServerSideDataEncryption>
|
||||
<ServerSideEncryptionKeyId>9468da86-3509-4f8d-a61e-6eab1eac****</ServerSideEncryptionKeyId>
|
||||
<CacheControl>no-cache</CacheControl>
|
||||
<ContentDisposition>attachment; filename=test.jpg</ContentDisposition>
|
||||
<ContentEncoding>UTF-8</ContentEncoding>
|
||||
<ContentLanguage>zh-CN</ContentLanguage>
|
||||
<ImageHeight>500</ImageHeight>
|
||||
<ImageWidth>270</ImageWidth>
|
||||
<VideoWidth>1080</VideoWidth>
|
||||
<VideoHeight>1920</VideoHeight>
|
||||
<VideoStreams>
|
||||
<VideoStream>
|
||||
<CodecName>h264</CodecName>
|
||||
<Language>en</Language>
|
||||
<Bitrate>5407765</Bitrate>
|
||||
<FrameRate>25/1</FrameRate>
|
||||
<StartTime>0</StartTime>
|
||||
<Duration>22.88</Duration>
|
||||
<FrameCount>572</FrameCount>
|
||||
<BitDepth>8</BitDepth>
|
||||
<PixelFormat>yuv420p</PixelFormat>
|
||||
<ColorSpace>bt709</ColorSpace>
|
||||
<Height>720</Height>
|
||||
<Width>1280</Width>
|
||||
</VideoStream>
|
||||
<VideoStream>
|
||||
<CodecName>h264</CodecName>
|
||||
<Language>en</Language>
|
||||
<Bitrate>5407765</Bitrate>
|
||||
<FrameRate>25/1</FrameRate>
|
||||
<StartTime>0</StartTime>
|
||||
<Duration>22.88</Duration>
|
||||
<FrameCount>572</FrameCount>
|
||||
<BitDepth>8</BitDepth>
|
||||
<PixelFormat>yuv420p</PixelFormat>
|
||||
<ColorSpace>bt709</ColorSpace>
|
||||
<Height>720</Height>
|
||||
<Width>1280</Width>
|
||||
</VideoStream>
|
||||
</VideoStreams>
|
||||
<AudioStreams>
|
||||
<AudioStream>
|
||||
<CodecName>aac</CodecName>
|
||||
<Bitrate>1048576</Bitrate>
|
||||
<SampleRate>48000</SampleRate>
|
||||
<StartTime>0.0235</StartTime>
|
||||
<Duration>3.690667</Duration>
|
||||
<Channels>2</Channels>
|
||||
<Language>en</Language>
|
||||
</AudioStream>
|
||||
</AudioStreams>
|
||||
<Subtitles>
|
||||
<Subtitle>
|
||||
<CodecName>mov_text</CodecName>
|
||||
<Language>en</Language>
|
||||
<StartTime>0</StartTime>
|
||||
<Duration>71.378</Duration>
|
||||
</Subtitle>
|
||||
<Subtitle>
|
||||
<CodecName>mov_text</CodecName>
|
||||
<Language>en</Language>
|
||||
<StartTime>72</StartTime>
|
||||
<Duration>71.378</Duration>
|
||||
</Subtitle>
|
||||
</Subtitles>
|
||||
<Bitrate>5407765</Bitrate>
|
||||
<Artist>Jane</Artist>
|
||||
<AlbumArtist>Jenny</AlbumArtist>
|
||||
<Composer>Jane</Composer>
|
||||
<Performer>Jane</Performer>
|
||||
<Album>FirstAlbum</Album>
|
||||
<Duration>71.378</Duration>
|
||||
<Addresses>
|
||||
<Address>
|
||||
<AddressLine>中国浙江省杭州市余杭区文一西路969号</AddressLine>
|
||||
<City>杭州市</City>
|
||||
<Country>中国</Country>
|
||||
<District>余杭区</District>
|
||||
<Language>zh-Hans</Language>
|
||||
<Province>浙江省</Province>
|
||||
<Township>文一西路</Township>
|
||||
</Address>
|
||||
<Address>
|
||||
<AddressLine>中国浙江省杭州市余杭区文一西路970号</AddressLine>
|
||||
<City>杭州市</City>
|
||||
<Country>中国</Country>
|
||||
<District>余杭区</District>
|
||||
<Language>zh-Hans</Language>
|
||||
<Province>浙江省</Province>
|
||||
<Township>文一西路</Township>
|
||||
</Address>
|
||||
</Addresses>
|
||||
<OSSObjectType>Normal</OSSObjectType>
|
||||
<OSSStorageClass>Standard</OSSStorageClass>
|
||||
<OSSTaggingCount>2</OSSTaggingCount>
|
||||
<OSSTagging>
|
||||
<Tagging>
|
||||
<Key>key</Key>
|
||||
<Value>val</Value>
|
||||
</Tagging>
|
||||
<Tagging>
|
||||
<Key>key2</Key>
|
||||
<Value>val2</Value>
|
||||
</Tagging>
|
||||
</OSSTagging>
|
||||
<OSSUserMeta>
|
||||
<UserMeta>
|
||||
<Key>key</Key>
|
||||
<Value>val</Value>
|
||||
</UserMeta>
|
||||
</OSSUserMeta>
|
||||
</File>
|
||||
</Files>
|
||||
</MetaQuery>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
body: Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketMetaQuery::toDoMetaQuery($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals(1, count($result->files->file));
|
||||
$this->assertEquals('oss://bucket/sample-object.jpg', $result->files->file[0]->uri);
|
||||
$this->assertEquals('sample-object.jpg', $result->files->file[0]->filename);
|
||||
$this->assertEquals(1000, $result->files->file[0]->size);
|
||||
$this->assertEquals('2021-06-29T14:50:14.011643661+08:00', $result->files->file[0]->fileModifiedTime);
|
||||
$this->assertEquals('AES256', $result->files->file[0]->serverSideEncryption);
|
||||
$this->assertEquals('SM4', $result->files->file[0]->serverSideEncryptionCustomerAlgorithm);
|
||||
$this->assertEquals('"1D9C280A7C4F67F7EF873E28449****"', $result->files->file[0]->etag);
|
||||
$this->assertEquals('559890638950338001', $result->files->file[0]->ossCrc64);
|
||||
$this->assertEquals('2021-06-29T14:50:15.011643661+08:00', $result->files->file[0]->produceTime);
|
||||
$this->assertEquals('image/jpeg', $result->files->file[0]->contentType);
|
||||
$this->assertEquals('image', $result->files->file[0]->mediaType);
|
||||
$this->assertEquals('30.134390,120.074997', $result->files->file[0]->latLong);
|
||||
$this->assertEquals('test', $result->files->file[0]->title);
|
||||
$this->assertEquals('2024-12-01T12:00:00.000Z', $result->files->file[0]->ossExpiration);
|
||||
$this->assertEquals('https://aliyundoc.com', $result->files->file[0]->accessControlAllowOrigin);
|
||||
$this->assertEquals('PUT', $result->files->file[0]->accessControlRequestMethod);
|
||||
$this->assertEquals('SM4', $result->files->file[0]->serverSideDataEncryption);
|
||||
$this->assertEquals('9468da86-3509-4f8d-a61e-6eab1eac****', $result->files->file[0]->serverSideEncryptionKeyId);
|
||||
$this->assertEquals('no-cache', $result->files->file[0]->cacheControl);
|
||||
$this->assertEquals('attachment; filename=test.jpg', $result->files->file[0]->contentDisposition);
|
||||
$this->assertEquals('UTF-8', $result->files->file[0]->contentEncoding);
|
||||
$this->assertEquals('zh-CN', $result->files->file[0]->contentLanguage);
|
||||
$this->assertEquals(500, $result->files->file[0]->imageHeight);
|
||||
$this->assertEquals(270, $result->files->file[0]->imageWidth);
|
||||
$this->assertEquals(1920, $result->files->file[0]->videoHeight);
|
||||
$this->assertEquals(1080, $result->files->file[0]->videoWidth);
|
||||
$this->assertEquals(2, count($result->files->file[0]->videoStreams->videoStream));
|
||||
$this->assertEquals('h264', $result->files->file[0]->videoStreams->videoStream[0]->codecName);
|
||||
$this->assertEquals('en', $result->files->file[0]->videoStreams->videoStream[0]->language);
|
||||
$this->assertEquals(5407765, $result->files->file[0]->videoStreams->videoStream[0]->bitrate);
|
||||
$this->assertEquals(8, $result->files->file[0]->videoStreams->videoStream[0]->bitDepth);
|
||||
$this->assertEquals('25/1', $result->files->file[0]->videoStreams->videoStream[0]->frameRate);
|
||||
$this->assertEquals(0, $result->files->file[0]->videoStreams->videoStream[0]->startTime);
|
||||
$this->assertEquals(22.88, $result->files->file[0]->videoStreams->videoStream[0]->duration);
|
||||
$this->assertEquals(572, $result->files->file[0]->videoStreams->videoStream[0]->frameCount);
|
||||
$this->assertEquals('yuv420p', $result->files->file[0]->videoStreams->videoStream[0]->pixelFormat);
|
||||
$this->assertEquals('bt709', $result->files->file[0]->videoStreams->videoStream[0]->colorSpace);
|
||||
$this->assertEquals(720, $result->files->file[0]->videoStreams->videoStream[0]->height);
|
||||
$this->assertEquals(1280, $result->files->file[0]->videoStreams->videoStream[0]->width);
|
||||
$this->assertEquals('h264', $result->files->file[0]->videoStreams->videoStream[1]->codecName);
|
||||
$this->assertEquals('en', $result->files->file[0]->videoStreams->videoStream[1]->language);
|
||||
$this->assertEquals(5407765, $result->files->file[0]->videoStreams->videoStream[1]->bitrate);
|
||||
$this->assertEquals('25/1', $result->files->file[0]->videoStreams->videoStream[1]->frameRate);
|
||||
$this->assertEquals(0, $result->files->file[0]->videoStreams->videoStream[1]->startTime);
|
||||
$this->assertEquals(22.88, $result->files->file[0]->videoStreams->videoStream[1]->duration);
|
||||
$this->assertEquals(572, $result->files->file[0]->videoStreams->videoStream[1]->frameCount);
|
||||
$this->assertEquals(8, $result->files->file[0]->videoStreams->videoStream[1]->bitDepth);
|
||||
$this->assertEquals('yuv420p', $result->files->file[0]->videoStreams->videoStream[1]->pixelFormat);
|
||||
$this->assertEquals('bt709', $result->files->file[0]->videoStreams->videoStream[1]->colorSpace);
|
||||
$this->assertEquals(720, $result->files->file[0]->videoStreams->videoStream[1]->height);
|
||||
$this->assertEquals(1280, $result->files->file[0]->videoStreams->videoStream[1]->width);
|
||||
|
||||
$this->assertEquals(1, count($result->files->file[0]->audioStreams->audioStream));
|
||||
$this->assertEquals('aac', $result->files->file[0]->audioStreams->audioStream[0]->codecName);
|
||||
$this->assertEquals(1048576, $result->files->file[0]->audioStreams->audioStream[0]->bitrate);
|
||||
$this->assertEquals(48000, $result->files->file[0]->audioStreams->audioStream[0]->sampleRate);
|
||||
$this->assertEquals(0.0235, $result->files->file[0]->audioStreams->audioStream[0]->startTime);
|
||||
$this->assertEquals(3.690667, $result->files->file[0]->audioStreams->audioStream[0]->duration);
|
||||
$this->assertEquals(2, $result->files->file[0]->audioStreams->audioStream[0]->channels);
|
||||
$this->assertEquals('en', $result->files->file[0]->audioStreams->audioStream[0]->language);
|
||||
|
||||
$this->assertEquals(2, count($result->files->file[0]->subtitles->subtitle));
|
||||
$this->assertEquals('mov_text', $result->files->file[0]->subtitles->subtitle[0]->codecName);
|
||||
$this->assertEquals('en', $result->files->file[0]->subtitles->subtitle[0]->language);
|
||||
$this->assertEquals(0, $result->files->file[0]->subtitles->subtitle[0]->startTime);
|
||||
$this->assertEquals(71.378, $result->files->file[0]->subtitles->subtitle[0]->duration);
|
||||
$this->assertEquals('mov_text', $result->files->file[0]->subtitles->subtitle[1]->codecName);
|
||||
$this->assertEquals('en', $result->files->file[0]->subtitles->subtitle[1]->language);
|
||||
$this->assertEquals(72, $result->files->file[0]->subtitles->subtitle[1]->startTime);
|
||||
$this->assertEquals(71.378, $result->files->file[0]->subtitles->subtitle[1]->duration);
|
||||
|
||||
$this->assertEquals(5407765, $result->files->file[0]->bitrate);
|
||||
$this->assertEquals('Jane', $result->files->file[0]->artist);
|
||||
$this->assertEquals('Jenny', $result->files->file[0]->albumArtist);
|
||||
$this->assertEquals('Jane', $result->files->file[0]->composer);
|
||||
$this->assertEquals('Jane', $result->files->file[0]->performer);
|
||||
$this->assertEquals('FirstAlbum', $result->files->file[0]->album);
|
||||
$this->assertEquals(71.378, $result->files->file[0]->duration);
|
||||
|
||||
$this->assertEquals(2, count($result->files->file[0]->addresses->address));
|
||||
$this->assertEquals('中国浙江省杭州市余杭区文一西路969号', $result->files->file[0]->addresses->address[0]->addressLine);
|
||||
$this->assertEquals('杭州市', $result->files->file[0]->addresses->address[0]->city);
|
||||
$this->assertEquals('中国', $result->files->file[0]->addresses->address[0]->country);
|
||||
$this->assertEquals('余杭区', $result->files->file[0]->addresses->address[0]->district);
|
||||
$this->assertEquals('zh-Hans', $result->files->file[0]->addresses->address[0]->language);
|
||||
$this->assertEquals('浙江省', $result->files->file[0]->addresses->address[0]->province);
|
||||
$this->assertEquals('文一西路', $result->files->file[0]->addresses->address[0]->township);
|
||||
|
||||
$this->assertEquals('中国浙江省杭州市余杭区文一西路970号', $result->files->file[0]->addresses->address[1]->addressLine);
|
||||
$this->assertEquals('杭州市', $result->files->file[0]->addresses->address[1]->city);
|
||||
$this->assertEquals('中国', $result->files->file[0]->addresses->address[1]->country);
|
||||
$this->assertEquals('余杭区', $result->files->file[0]->addresses->address[1]->district);
|
||||
$this->assertEquals('zh-Hans', $result->files->file[0]->addresses->address[1]->language);
|
||||
$this->assertEquals('浙江省', $result->files->file[0]->addresses->address[1]->province);
|
||||
$this->assertEquals('文一西路', $result->files->file[0]->addresses->address[1]->township);
|
||||
|
||||
$this->assertEquals('Normal', $result->files->file[0]->ossObjectType);
|
||||
$this->assertEquals('Standard', $result->files->file[0]->ossStorageClass);
|
||||
$this->assertEquals(2, $result->files->file[0]->ossTaggingCount);
|
||||
$this->assertEquals('key', $result->files->file[0]->ossTagging->taggings[0]->key);
|
||||
$this->assertEquals('val', $result->files->file[0]->ossTagging->taggings[0]->value);
|
||||
$this->assertEquals('key2', $result->files->file[0]->ossTagging->taggings[1]->key);
|
||||
$this->assertEquals('val2', $result->files->file[0]->ossTagging->taggings[1]->value);
|
||||
$this->assertEquals(1, count($result->files->file[0]->ossUserMeta->userMetas));
|
||||
$this->assertEquals('key', $result->files->file[0]->ossUserMeta->userMetas[0]->key);
|
||||
$this->assertEquals('val', $result->files->file[0]->ossUserMeta->userMetas[0]->value);
|
||||
}
|
||||
|
||||
public function testFromCloseMetaQuery()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\CloseMetaQueryRequest();
|
||||
$input = BucketMetaQuery::fromCloseMetaQuery($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\CloseMetaQueryRequest('bucket-123');
|
||||
$input = BucketMetaQuery::fromCloseMetaQuery($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketMetaQuery()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketMetaQuery::toCloseMetaQuery($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
);
|
||||
$result = BucketMetaQuery::toCloseMetaQuery($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
200
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketOverwriteConfigTest.php
vendored
Normal file
200
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketOverwriteConfigTest.php
vendored
Normal file
@@ -0,0 +1,200 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketOverwriteConfig;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketOverwriteConfigTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketOverwriteConfig()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketOverwriteConfigRequest();
|
||||
$input = BucketOverwriteConfig::fromPutBucketOverwriteConfig($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketOverwriteConfigRequest('bucket-123');
|
||||
$input = BucketOverwriteConfig::fromPutBucketOverwriteConfig($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, overwriteConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
// demo1
|
||||
$request = new Models\PutBucketOverwriteConfigRequest('bucket-123', new Models\OverwriteConfiguration(
|
||||
rules: array(
|
||||
new Models\OverwriteRule(action: 'forbid', id: 'rule-001')
|
||||
)
|
||||
));
|
||||
$input = BucketOverwriteConfig::fromPutBucketOverwriteConfig($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><OverwriteConfiguration><Rule><Action>forbid</Action><ID>rule-001</ID></Rule></OverwriteConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo2
|
||||
$request = new Models\PutBucketOverwriteConfigRequest('bucket-123', new Models\OverwriteConfiguration(
|
||||
rules: array(
|
||||
new Models\OverwriteRule(action: 'forbid', id: 'rule-001'),
|
||||
new Models\OverwriteRule(action: 'forbid', prefix: 'pre', suffix: '.txt', principals: new Models\OverwritePrincipals(array('1234567890')), id: 'rule-002')
|
||||
)
|
||||
));
|
||||
$input = BucketOverwriteConfig::fromPutBucketOverwriteConfig($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><OverwriteConfiguration><Rule><Action>forbid</Action><ID>rule-001</ID></Rule><Rule><Action>forbid</Action><Prefix>pre</Prefix><Suffix>.txt</Suffix><Principals><Principal>1234567890</Principal></Principals><ID>rule-002</ID></Rule></OverwriteConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketOverwriteConfig()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketOverwriteConfig::toPutBucketOverwriteConfig($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketOverwriteConfig::toPutBucketOverwriteConfig($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketOverwriteConfig()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketOverwriteConfigRequest();
|
||||
$input = BucketOverwriteConfig::fromGetBucketOverwriteConfig($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketOverwriteConfigRequest('bucket-123');
|
||||
$input = BucketOverwriteConfig::fromGetBucketOverwriteConfig($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketOverwriteConfig()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketOverwriteConfig::toGetBucketOverwriteConfig($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<OverwriteConfiguration>
|
||||
<Rule>
|
||||
<ID>1</ID>
|
||||
<Action>forbid</Action>
|
||||
<Prefix></Prefix>
|
||||
<Suffix></Suffix>
|
||||
<Principals />
|
||||
</Rule>
|
||||
<Rule>
|
||||
<ID>2</ID>
|
||||
<Action>forbid</Action>
|
||||
<Prefix>pre</Prefix>
|
||||
<Suffix>.txt</Suffix>
|
||||
<Principals>
|
||||
<Principal>1234567890</Principal>
|
||||
</Principals>
|
||||
</Rule>
|
||||
</OverwriteConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketOverwriteConfig::toGetBucketOverwriteConfig($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals(2, count($result->overwriteConfiguration->rules));
|
||||
$this->assertEquals("1", $result->overwriteConfiguration->rules[0]->id);
|
||||
$this->assertEquals("forbid", $result->overwriteConfiguration->rules[0]->action);
|
||||
$this->assertEquals("", $result->overwriteConfiguration->rules[0]->prefix);
|
||||
$this->assertEquals("", $result->overwriteConfiguration->rules[0]->suffix);
|
||||
$this->assertEquals(new Models\OverwritePrincipals(), $result->overwriteConfiguration->rules[0]->principals);
|
||||
$this->assertEquals("2", $result->overwriteConfiguration->rules[1]->id);
|
||||
$this->assertEquals("forbid", $result->overwriteConfiguration->rules[1]->action);
|
||||
$this->assertEquals("pre", $result->overwriteConfiguration->rules[1]->prefix);
|
||||
$this->assertEquals(".txt", $result->overwriteConfiguration->rules[1]->suffix);
|
||||
$this->assertEquals(1, count($result->overwriteConfiguration->rules[1]->principals->principals));
|
||||
$this->assertEquals("1234567890", $result->overwriteConfiguration->rules[1]->principals->principals[0]);
|
||||
}
|
||||
|
||||
public function testFromDeleteBucketOverwriteConfig()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteBucketOverwriteConfigRequest();
|
||||
$input = BucketOverwriteConfig::fromDeleteBucketOverwriteConfig($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteBucketOverwriteConfigRequest('bucket-123');
|
||||
$input = BucketOverwriteConfig::fromDeleteBucketOverwriteConfig($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToDeleteBucketOverwriteConfig()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketOverwriteConfig::toDeleteBucketOverwriteConfig($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketOverwriteConfig::toDeleteBucketOverwriteConfig($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
197
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketPolicyTest.php
vendored
Normal file
197
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketPolicyTest.php
vendored
Normal file
@@ -0,0 +1,197 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketPolicy;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketPolicyTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketPolicy()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketPolicyRequest();
|
||||
$input = BucketPolicy::fromPutBucketPolicy($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketPolicyRequest('bucket-123');
|
||||
$input = BucketPolicy::fromPutBucketPolicy($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, body.", (string)$e);
|
||||
}
|
||||
|
||||
// all settings
|
||||
$body = '{"Version":"1","Statement":[{"Action":["oss:PutObject","oss:GetObject"],"Effect":"Deny","Principal":["1234567890"],"Resource":["acs:oss:*:1234567890:*/*"]}]}';
|
||||
$request = new Models\PutBucketPolicyRequest(
|
||||
bucket: 'bucket-123',
|
||||
body: $body
|
||||
);
|
||||
$json = <<<BBB
|
||||
{"Version":"1","Statement":[{"Action":["oss:PutObject","oss:GetObject"],"Effect":"Deny","Principal":["1234567890"],"Resource":["acs:oss:*:1234567890:*/*"]}]}
|
||||
BBB;
|
||||
$input = BucketPolicy::fromPutBucketPolicy($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals($json, $input->getBody()->getContents());
|
||||
$this->assertEquals(base64_encode(md5($input->getBody(), true)), $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToPutBucketPolicy()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketPolicy::toPutBucketPolicy($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketPolicy::toPutBucketPolicy($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketPolicy()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketPolicyRequest();
|
||||
$input = BucketPolicy::fromGetBucketPolicy($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketPolicyRequest('bucket-123');
|
||||
$input = BucketPolicy::fromGetBucketPolicy($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketPolicy()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketPolicy::toGetBucketPolicy($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor('{"Version":"1","Statement":[{"Action":["oss:PutObject","oss:GetObject"],"Effect":"Deny","Principal":["1234567890"],"Resource":["acs:oss:*:1234567890:*/*"]}]}')
|
||||
);
|
||||
$result = BucketPolicy::toGetBucketPolicy($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertCount(2, $result->headers);
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('{"Version":"1","Statement":[{"Action":["oss:PutObject","oss:GetObject"],"Effect":"Deny","Principal":["1234567890"],"Resource":["acs:oss:*:1234567890:*/*"]}]}', $result->body);
|
||||
}
|
||||
|
||||
public function testFromGetBucketPolicyStatus()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketPolicyStatusRequest();
|
||||
$input = BucketPolicy::fromGetBucketPolicyStatus($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketPolicyStatusRequest('bucket-123');
|
||||
$input = BucketPolicy::fromGetBucketPolicyStatus($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketPolicyStatus()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketPolicy::toGetBucketPolicyStatus($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor('<?xml version="1.0" encoding="UTF-8"?>
|
||||
<PolicyStatus>
|
||||
<IsPublic>true</IsPublic>
|
||||
</PolicyStatus>')
|
||||
);
|
||||
$result = BucketPolicy::toGetBucketPolicyStatus($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertCount(2, $result->headers);
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertTrue($result->policyStatus->isPublic);
|
||||
}
|
||||
|
||||
public function testFromDeleteBucketPolicy()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteBucketPolicyRequest();
|
||||
$input = BucketPolicy::fromDeleteBucketPolicy($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteBucketPolicyRequest('bucket-123');
|
||||
$input = BucketPolicy::fromDeleteBucketPolicy($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToDeleteBucketPolicy()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketPolicy::toDeleteBucketPolicy($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketPolicy::toDeleteBucketPolicy($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
}
|
||||
155
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketPublicAccessBlockTest.php
vendored
Normal file
155
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketPublicAccessBlockTest.php
vendored
Normal file
@@ -0,0 +1,155 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Models\PublicAccessBlockConfiguration;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketPublicAccessBlock;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketPublicAccessBlockTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketPublicAccessBlock()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketPublicAccessBlockRequest();
|
||||
$input = BucketPublicAccessBlock::fromPutBucketPublicAccessBlock($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketPublicAccessBlockRequest('bucket-123');
|
||||
$input = BucketPublicAccessBlock::fromPutBucketPublicAccessBlock($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, publicAccessBlockConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
// demo1
|
||||
$request = new Models\PutBucketPublicAccessBlockRequest('bucket-123', new Models\PublicAccessBlockConfiguration(
|
||||
true
|
||||
));
|
||||
$input = BucketPublicAccessBlock::fromPutBucketPublicAccessBlock($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><PublicAccessBlockConfiguration><BlockPublicAccess>true</BlockPublicAccess></PublicAccessBlockConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketPublicAccessBlock()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketPublicAccessBlock::toPutBucketPublicAccessBlock($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketPublicAccessBlock::toPutBucketPublicAccessBlock($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketPublicAccessBlock()
|
||||
{
|
||||
try {
|
||||
$request = new Models\GetBucketPublicAccessBlockRequest();
|
||||
$input = BucketPublicAccessBlock::fromGetBucketPublicAccessBlock($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketPublicAccessBlockRequest('bucket-123');
|
||||
$input = BucketPublicAccessBlock::fromGetBucketPublicAccessBlock($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketPublicAccessBlock()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketPublicAccessBlock::toGetBucketPublicAccessBlock($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<PublicAccessBlockConfiguration>
|
||||
<BlockPublicAccess>true</BlockPublicAccess>
|
||||
</PublicAccessBlockConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketPublicAccessBlock::toGetBucketPublicAccessBlock($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertTrue($result->publicAccessBlockConfiguration->blockPublicAccess);
|
||||
}
|
||||
|
||||
public function testFromDeleteBucketPublicAccessBlock()
|
||||
{
|
||||
try {
|
||||
$request = new Models\DeleteBucketPublicAccessBlockRequest();
|
||||
$input = BucketPublicAccessBlock::fromDeleteBucketPublicAccessBlock($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteBucketPublicAccessBlockRequest('bucket-123');
|
||||
$input = BucketPublicAccessBlock::fromDeleteBucketPublicAccessBlock($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToDeleteBucketPublicAccessBlock()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketPublicAccessBlock::toDeleteBucketPublicAccessBlock($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketPublicAccessBlock::toDeleteBucketPublicAccessBlock($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
467
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketRedundancyTransitionTest.php
vendored
Normal file
467
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketRedundancyTransitionTest.php
vendored
Normal file
@@ -0,0 +1,467 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketRedundancyTransition;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketRedundancyTransitionTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromCreateBucketDataRedundancyTransition()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\CreateBucketDataRedundancyTransitionRequest();
|
||||
$input = BucketRedundancyTransition::fromCreateBucketDataRedundancyTransition($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\CreateBucketDataRedundancyTransitionRequest('bucket-123');
|
||||
$input = BucketRedundancyTransition::fromCreateBucketDataRedundancyTransition($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, targetRedundancyType", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\CreateBucketDataRedundancyTransitionRequest('bucket-123', Models\DataRedundancyType::ZRS);
|
||||
$input = BucketRedundancyTransition::fromCreateBucketDataRedundancyTransition($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals(Models\DataRedundancyType::ZRS, $input->getParameters()['x-oss-target-redundancy-type']);
|
||||
}
|
||||
|
||||
public function testToCreateBucketDataRedundancyTransition()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketRedundancyTransition::toCreateBucketDataRedundancyTransition($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<BucketDataRedundancyTransition>
|
||||
<TaskId>4be5beb0f74f490186311b268bf6****</TaskId>
|
||||
</BucketDataRedundancyTransition>
|
||||
BBB;
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
body: Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketRedundancyTransition::toCreateBucketDataRedundancyTransition($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('4be5beb0f74f490186311b268bf6****', $result->bucketDataRedundancyTransition->taskId);
|
||||
}
|
||||
|
||||
public function testFromGetBucketDataRedundancyTransition()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketDataRedundancyTransitionRequest();
|
||||
$input = BucketRedundancyTransition::fromGetBucketDataRedundancyTransition($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\GetBucketDataRedundancyTransitionRequest('bucket-123');
|
||||
$input = BucketRedundancyTransition::fromGetBucketDataRedundancyTransition($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, redundancyTransitionTaskid", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketDataRedundancyTransitionRequest('bucket-123', 'task-123');
|
||||
$input = BucketRedundancyTransition::fromGetBucketDataRedundancyTransition($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
$this->assertEquals('task-123', $input->getParameters()['x-oss-redundancy-transition-taskid']);
|
||||
}
|
||||
|
||||
public function testToGetBucketDataRedundancyTransition()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketRedundancyTransition::toGetBucketDataRedundancyTransition($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<BucketDataRedundancyTransition>
|
||||
<Bucket>examplebucket</Bucket>
|
||||
<TaskId>4be5beb0f74f490186311b268bf6****</TaskId>
|
||||
<Status>Queueing</Status>
|
||||
<CreateTime>2023-11-17T09:11:58.000Z</CreateTime>
|
||||
</BucketDataRedundancyTransition>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketRedundancyTransition::toGetBucketDataRedundancyTransition($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('examplebucket', $result->bucketDataRedundancyTransition->bucket);
|
||||
$this->assertEquals('4be5beb0f74f490186311b268bf6****', $result->bucketDataRedundancyTransition->taskId);
|
||||
$this->assertEquals('Queueing', $result->bucketDataRedundancyTransition->status);
|
||||
$this->assertEquals('2023-11-17T09:11:58.000Z', $result->bucketDataRedundancyTransition->createTime);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<BucketDataRedundancyTransition>
|
||||
<Bucket>examplebucket</Bucket>
|
||||
<TaskId>909c6c818dd041d1a44e0fdc66aa****</TaskId>
|
||||
<Status>Processing</Status>
|
||||
<CreateTime>2023-11-17T09:14:39.000Z</CreateTime>
|
||||
<StartTime>2023-11-17T09:14:39.000Z</StartTime>
|
||||
<ProcessPercentage>0</ProcessPercentage>
|
||||
<EstimatedRemainingTime>100</EstimatedRemainingTime>
|
||||
</BucketDataRedundancyTransition>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketRedundancyTransition::toGetBucketDataRedundancyTransition($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('examplebucket', $result->bucketDataRedundancyTransition->bucket);
|
||||
$this->assertEquals('909c6c818dd041d1a44e0fdc66aa****', $result->bucketDataRedundancyTransition->taskId);
|
||||
$this->assertEquals('Processing', $result->bucketDataRedundancyTransition->status);
|
||||
$this->assertEquals('2023-11-17T09:14:39.000Z', $result->bucketDataRedundancyTransition->createTime);
|
||||
$this->assertEquals('2023-11-17T09:14:39.000Z', $result->bucketDataRedundancyTransition->startTime);
|
||||
$this->assertEquals(0, $result->bucketDataRedundancyTransition->processPercentage);
|
||||
$this->assertEquals(100, $result->bucketDataRedundancyTransition->estimatedRemainingTime);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<BucketDataRedundancyTransition>
|
||||
<Bucket>examplebucket</Bucket>
|
||||
<TaskId>909c6c818dd041d1a44e0fdc66aa****</TaskId>
|
||||
<Status>Finished</Status>
|
||||
<CreateTime>2023-11-17T09:14:39.000Z</CreateTime>
|
||||
<StartTime>2023-11-17T09:14:39.000Z</StartTime>
|
||||
<ProcessPercentage>100</ProcessPercentage>
|
||||
<EstimatedRemainingTime>0</EstimatedRemainingTime>
|
||||
<EndTime>2023-11-18T09:14:39.000Z</EndTime>
|
||||
</BucketDataRedundancyTransition>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketRedundancyTransition::toGetBucketDataRedundancyTransition($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('examplebucket', $result->bucketDataRedundancyTransition->bucket);
|
||||
$this->assertEquals('909c6c818dd041d1a44e0fdc66aa****', $result->bucketDataRedundancyTransition->taskId);
|
||||
$this->assertEquals('Finished', $result->bucketDataRedundancyTransition->status);
|
||||
$this->assertEquals('2023-11-17T09:14:39.000Z', $result->bucketDataRedundancyTransition->createTime);
|
||||
$this->assertEquals('2023-11-17T09:14:39.000Z', $result->bucketDataRedundancyTransition->startTime);
|
||||
$this->assertEquals(100, $result->bucketDataRedundancyTransition->processPercentage);
|
||||
$this->assertEquals(0, $result->bucketDataRedundancyTransition->estimatedRemainingTime);
|
||||
$this->assertEquals('2023-11-18T09:14:39.000Z', $result->bucketDataRedundancyTransition->endTime);
|
||||
}
|
||||
|
||||
public function testFromDeleteBucketDataRedundancyTransition()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteBucketDataRedundancyTransitionRequest();
|
||||
$input = BucketRedundancyTransition::fromDeleteBucketDataRedundancyTransition($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\DeleteBucketDataRedundancyTransitionRequest('bucket-123');
|
||||
$input = BucketRedundancyTransition::fromDeleteBucketDataRedundancyTransition($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, redundancyTransitionTaskid", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteBucketDataRedundancyTransitionRequest('bucket-123', 'task-123');
|
||||
$input = BucketRedundancyTransition::fromDeleteBucketDataRedundancyTransition($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
$this->assertEquals('task-123', $input->getParameters()['x-oss-redundancy-transition-taskid']);
|
||||
}
|
||||
|
||||
public function testToDeleteBucketDataRedundancyTransition()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketRedundancyTransition::toDeleteBucketDataRedundancyTransition($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketRedundancyTransition::toDeleteBucketDataRedundancyTransition($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromListBucketDataRedundancyTransition()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\ListBucketDataRedundancyTransitionRequest();
|
||||
$input = BucketRedundancyTransition::fromListBucketDataRedundancyTransition($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\ListBucketDataRedundancyTransitionRequest('bucket-123');
|
||||
$input = BucketRedundancyTransition::fromListBucketDataRedundancyTransition($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToListBucketDataRedundancyTransition()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketRedundancyTransition::toListBucketDataRedundancyTransition($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListBucketDataRedundancyTransition>
|
||||
<BucketDataRedundancyTransition>
|
||||
<Bucket>examplebucket</Bucket>
|
||||
<TaskId>4be5beb0f74f490186311b268bf6****</TaskId>
|
||||
<Status>Queueing</Status>
|
||||
<CreateTime>2023-11-17T09:11:58.000Z</CreateTime>
|
||||
</BucketDataRedundancyTransition>
|
||||
</ListBucketDataRedundancyTransition>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketRedundancyTransition::toListBucketDataRedundancyTransition($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('examplebucket', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->bucket);
|
||||
$this->assertEquals('4be5beb0f74f490186311b268bf6****', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->taskId);
|
||||
$this->assertEquals('Queueing', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->status);
|
||||
$this->assertEquals('2023-11-17T09:11:58.000Z', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->createTime);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListBucketDataRedundancyTransition>
|
||||
<BucketDataRedundancyTransition>
|
||||
<Bucket>examplebucket</Bucket>
|
||||
<TaskId>909c6c818dd041d1a44e0fdc66aa****</TaskId>
|
||||
<Status>Processing</Status>
|
||||
<CreateTime>2023-11-17T09:14:39.000Z</CreateTime>
|
||||
<StartTime>2023-11-17T09:14:39.000Z</StartTime>
|
||||
<ProcessPercentage>0</ProcessPercentage>
|
||||
<EstimatedRemainingTime>100</EstimatedRemainingTime>
|
||||
</BucketDataRedundancyTransition>
|
||||
</ListBucketDataRedundancyTransition>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketRedundancyTransition::toListBucketDataRedundancyTransition($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('examplebucket', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->bucket);
|
||||
$this->assertEquals('909c6c818dd041d1a44e0fdc66aa****', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->taskId);
|
||||
$this->assertEquals('Processing', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->status);
|
||||
$this->assertEquals('2023-11-17T09:14:39.000Z', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->createTime);
|
||||
$this->assertEquals('2023-11-17T09:14:39.000Z', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->startTime);
|
||||
$this->assertEquals(0, $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->processPercentage);
|
||||
$this->assertEquals(100, $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->estimatedRemainingTime);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListBucketDataRedundancyTransition>
|
||||
<BucketDataRedundancyTransition>
|
||||
<Bucket>examplebucket</Bucket>
|
||||
<TaskId>909c6c818dd041d1a44e0fdc66aa****</TaskId>
|
||||
<Status>Finished</Status>
|
||||
<CreateTime>2023-11-17T09:14:39.000Z</CreateTime>
|
||||
<StartTime>2023-11-17T09:14:39.000Z</StartTime>
|
||||
<ProcessPercentage>100</ProcessPercentage>
|
||||
<EstimatedRemainingTime>0</EstimatedRemainingTime>
|
||||
<EndTime>2023-11-18T09:14:39.000Z</EndTime>
|
||||
</BucketDataRedundancyTransition>
|
||||
</ListBucketDataRedundancyTransition>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketRedundancyTransition::toListBucketDataRedundancyTransition($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('examplebucket', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->bucket);
|
||||
$this->assertEquals('909c6c818dd041d1a44e0fdc66aa****', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->taskId);
|
||||
$this->assertEquals('Finished', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->status);
|
||||
$this->assertEquals('2023-11-17T09:14:39.000Z', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->createTime);
|
||||
$this->assertEquals('2023-11-17T09:14:39.000Z', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->startTime);
|
||||
$this->assertEquals(100, $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->processPercentage);
|
||||
$this->assertEquals(0, $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->estimatedRemainingTime);
|
||||
$this->assertEquals('2023-11-18T09:14:39.000Z', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->endTime);
|
||||
}
|
||||
|
||||
public function testFromListUserDataRedundancyTransition()
|
||||
{
|
||||
$request = new Models\ListUserDataRedundancyTransitionRequest();
|
||||
$input = BucketRedundancyTransition::fromListUserDataRedundancyTransition($request);
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
|
||||
$request = new Models\ListUserDataRedundancyTransitionRequest('token');
|
||||
$input = BucketRedundancyTransition::fromListUserDataRedundancyTransition($request);
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
$this->assertEquals('token', $input->getParameters()['continuation-token']);
|
||||
|
||||
$request = new Models\ListUserDataRedundancyTransitionRequest('token', '100');
|
||||
$input = BucketRedundancyTransition::fromListUserDataRedundancyTransition($request);
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
$this->assertEquals('token', $input->getParameters()['continuation-token']);
|
||||
$this->assertEquals(100, $input->getParameters()['max-keys']);
|
||||
}
|
||||
|
||||
public function testToListUserDataRedundancyTransition()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketRedundancyTransition::toListBucketDataRedundancyTransition($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListBucketDataRedundancyTransition>
|
||||
<BucketDataRedundancyTransition>
|
||||
<Bucket>examplebucket</Bucket>
|
||||
<TaskId>4be5beb0f74f490186311b268bf6****</TaskId>
|
||||
<Status>Queueing</Status>
|
||||
<CreateTime>2023-11-17T09:11:58.000Z</CreateTime>
|
||||
</BucketDataRedundancyTransition>
|
||||
<BucketDataRedundancyTransition>
|
||||
<Bucket>examplebucket1</Bucket>
|
||||
<TaskId>909c6c818dd041d1a44e0fdc66aa****</TaskId>
|
||||
<Status>Processing</Status>
|
||||
<CreateTime>2023-11-17T09:14:39.000Z</CreateTime>
|
||||
<StartTime>2023-11-17T09:14:39.000Z</StartTime>
|
||||
<ProcessPercentage>0</ProcessPercentage>
|
||||
<EstimatedRemainingTime>100</EstimatedRemainingTime>
|
||||
</BucketDataRedundancyTransition>
|
||||
<BucketDataRedundancyTransition>
|
||||
<Bucket>examplebucket2</Bucket>
|
||||
<TaskId>909c6c818dd041d1a44e0fdc66aa****</TaskId>
|
||||
<Status>Finished</Status>
|
||||
<CreateTime>2023-11-17T09:14:39.000Z</CreateTime>
|
||||
<StartTime>2023-11-17T09:14:39.000Z</StartTime>
|
||||
<ProcessPercentage>100</ProcessPercentage>
|
||||
<EstimatedRemainingTime>0</EstimatedRemainingTime>
|
||||
<EndTime>2023-11-18T09:14:39.000Z</EndTime>
|
||||
</BucketDataRedundancyTransition>
|
||||
<IsTruncated>false</IsTruncated>
|
||||
<NextContinuationToken></NextContinuationToken>
|
||||
</ListBucketDataRedundancyTransition>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketRedundancyTransition::toListBucketDataRedundancyTransition($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals(3, count($result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions));
|
||||
$this->assertEquals('examplebucket', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->bucket);
|
||||
$this->assertEquals('4be5beb0f74f490186311b268bf6****', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->taskId);
|
||||
$this->assertEquals('Queueing', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->status);
|
||||
$this->assertEquals('2023-11-17T09:11:58.000Z', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[0]->createTime);
|
||||
|
||||
$this->assertEquals('examplebucket1', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[1]->bucket);
|
||||
$this->assertEquals('909c6c818dd041d1a44e0fdc66aa****', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[1]->taskId);
|
||||
$this->assertEquals('Processing', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[1]->status);
|
||||
$this->assertEquals('2023-11-17T09:14:39.000Z', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[1]->createTime);
|
||||
$this->assertEquals('2023-11-17T09:14:39.000Z', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[1]->startTime);
|
||||
$this->assertEquals(0, $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[1]->processPercentage);
|
||||
$this->assertEquals(100, $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[1]->estimatedRemainingTime);
|
||||
|
||||
$this->assertEquals('examplebucket2', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[2]->bucket);
|
||||
$this->assertEquals('909c6c818dd041d1a44e0fdc66aa****', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[2]->taskId);
|
||||
$this->assertEquals('Finished', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[2]->status);
|
||||
$this->assertEquals('2023-11-17T09:14:39.000Z', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[2]->createTime);
|
||||
$this->assertEquals('2023-11-17T09:14:39.000Z', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[2]->startTime);
|
||||
$this->assertEquals(100, $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[2]->processPercentage);
|
||||
$this->assertEquals(0, $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[2]->estimatedRemainingTime);
|
||||
$this->assertEquals('2023-11-18T09:14:39.000Z', $result->listBucketDataRedundancyTransition->bucketDataRedundancyTransitions[2]->endTime);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
200
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketRefererTest.php
vendored
Normal file
200
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketRefererTest.php
vendored
Normal file
@@ -0,0 +1,200 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketReferer;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
use DateTime;
|
||||
use DateTimeZone;
|
||||
|
||||
class BucketRefererTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketReferer()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketRefererRequest();
|
||||
$input = BucketReferer::fromPutBucketReferer($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketRefererRequest('bucket-123');
|
||||
$input = BucketReferer::fromPutBucketReferer($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, refererConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
// demo1
|
||||
$request = new Models\PutBucketRefererRequest('bucket-123', new Models\RefererConfiguration(
|
||||
allowEmptyReferer: false,
|
||||
allowTruncateQueryString: true,
|
||||
truncatePath: true,
|
||||
refererList: new Models\RefererList(["http://www.aliyun.com", "https://www.aliyun.com", "http://www.*.com", "https://www.?.aliyuncs.com",]),
|
||||
refererBlacklist: new Models\RefererBlacklist(["http://www.refuse.com", "https://*.hack.com", "http://ban.*.com", "https://www.?.deny.com",])
|
||||
));
|
||||
$input = BucketReferer::fromPutBucketReferer($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><RefererConfiguration><AllowEmptyReferer>false</AllowEmptyReferer><AllowTruncateQueryString>true</AllowTruncateQueryString><TruncatePath>true</TruncatePath><RefererList><Referer>http://www.aliyun.com</Referer><Referer>https://www.aliyun.com</Referer><Referer>http://www.*.com</Referer><Referer>https://www.?.aliyuncs.com</Referer></RefererList><RefererBlacklist><Referer>http://www.refuse.com</Referer><Referer>https://*.hack.com</Referer><Referer>http://ban.*.com</Referer><Referer>https://www.?.deny.com</Referer></RefererBlacklist></RefererConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo2
|
||||
$request = new Models\PutBucketRefererRequest('bucket-123', new Models\RefererConfiguration(
|
||||
allowEmptyReferer: false,
|
||||
allowTruncateQueryString: true,
|
||||
truncatePath: true,
|
||||
refererList: new Models\RefererList(["http://www.aliyun.com", "https://www.aliyun.com", "http://www.*.com", "https://www.?.aliyuncs.com",]),
|
||||
));
|
||||
$input = BucketReferer::fromPutBucketReferer($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><RefererConfiguration><AllowEmptyReferer>false</AllowEmptyReferer><AllowTruncateQueryString>true</AllowTruncateQueryString><TruncatePath>true</TruncatePath><RefererList><Referer>http://www.aliyun.com</Referer><Referer>https://www.aliyun.com</Referer><Referer>http://www.*.com</Referer><Referer>https://www.?.aliyuncs.com</Referer></RefererList></RefererConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo3
|
||||
$request = new Models\PutBucketRefererRequest('bucket-123', new Models\RefererConfiguration(
|
||||
allowEmptyReferer: false,
|
||||
refererList: new Models\RefererList([""]),
|
||||
));
|
||||
$input = BucketReferer::fromPutBucketReferer($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><RefererConfiguration><AllowEmptyReferer>false</AllowEmptyReferer><RefererList><Referer></Referer></RefererList></RefererConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketReferer()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketReferer::toPutBucketReferer($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketReferer::toPutBucketReferer($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketReferer()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketRefererRequest();
|
||||
$input = BucketReferer::fromGetBucketReferer($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketRefererRequest('bucket-123');
|
||||
$input = BucketReferer::fromGetBucketReferer($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketReferer()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketReferer::toGetBucketReferer($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<RefererConfiguration>
|
||||
<AllowEmptyReferer>false</AllowEmptyReferer>
|
||||
<AllowTruncateQueryString>true</AllowTruncateQueryString>
|
||||
<TruncatePath>true</TruncatePath>
|
||||
<RefererList>
|
||||
<Referer>http://www.aliyun.com</Referer>
|
||||
<Referer>https://www.aliyun.com</Referer>
|
||||
<Referer>http://www.*.com</Referer>
|
||||
<Referer>https://www.?.aliyuncs.com</Referer>
|
||||
</RefererList>
|
||||
</RefererConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketReferer::toGetBucketReferer($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertFalse($result->refererConfiguration->allowEmptyReferer);
|
||||
$this->assertTrue($result->refererConfiguration->allowTruncateQueryString);
|
||||
$this->assertTrue($result->refererConfiguration->truncatePath);
|
||||
$this->assertEquals(4, count($result->refererConfiguration->refererList->referers));
|
||||
$this->assertEquals("https://www.?.aliyuncs.com", ($result->refererConfiguration->refererList->referers[3]));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<RefererConfiguration>
|
||||
<AllowEmptyReferer>false</AllowEmptyReferer>
|
||||
<AllowTruncateQueryString>true</AllowTruncateQueryString>
|
||||
<TruncatePath>true</TruncatePath>
|
||||
<RefererList>
|
||||
<Referer>http://www.aliyun.com</Referer>
|
||||
<Referer>https://www.aliyun.com</Referer>
|
||||
<Referer>http://www.*.com</Referer>
|
||||
<Referer>https://www.?.aliyuncs.com</Referer>
|
||||
</RefererList>
|
||||
<RefererBlacklist>
|
||||
<Referer>http://www.refuse.com</Referer>
|
||||
<Referer>https://*.hack.com</Referer>
|
||||
<Referer>http://ban.*.com</Referer>
|
||||
<Referer>https://www.?.deny.com</Referer>
|
||||
</RefererBlacklist>
|
||||
</RefererConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketReferer::toGetBucketReferer($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertFalse($result->refererConfiguration->allowEmptyReferer);
|
||||
$this->assertTrue($result->refererConfiguration->allowTruncateQueryString);
|
||||
$this->assertTrue($result->refererConfiguration->truncatePath);
|
||||
$this->assertEquals(4, count($result->refererConfiguration->refererList->referers));
|
||||
$this->assertEquals(4, count($result->refererConfiguration->refererBlacklist->referers));
|
||||
$this->assertEquals("https://www.?.aliyuncs.com", ($result->refererConfiguration->refererList->referers[3]));
|
||||
$this->assertEquals("http://ban.*.com", ($result->refererConfiguration->refererBlacklist->referers[2]));
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
428
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketReplicationTest.php
vendored
Normal file
428
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketReplicationTest.php
vendored
Normal file
@@ -0,0 +1,428 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketReplication;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketReplicationTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketRtc()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketRtcRequest();
|
||||
$input = BucketReplication::fromPutBucketRtc($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketRtcRequest('bucket-123');
|
||||
$input = BucketReplication::fromPutBucketRtc($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, rtcConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\PutBucketRtcRequest('bucket-123', new Models\RtcConfiguration(
|
||||
rtc: new Models\ReplicationTimeControl(
|
||||
status: 'enabled'
|
||||
),
|
||||
id: 'test_replication_rule_1'
|
||||
));
|
||||
$input = BucketReplication::fromPutBucketRtc($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><ReplicationRule><RTC><Status>enabled</Status></RTC><ID>test_replication_rule_1</ID></ReplicationRule>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketRtc()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketReplication::toPutBucketRtc($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketReplication::toPutBucketRtc($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromPutBucketReplication()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketReplicationRequest();
|
||||
$input = BucketReplication::fromPutBucketReplication($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketReplicationRequest('bucket-123');
|
||||
$input = BucketReplication::fromPutBucketReplication($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, replicationConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\PutBucketReplicationRequest('bucket-123', new Models\ReplicationConfiguration(
|
||||
array(new Models\ReplicationRule(
|
||||
sourceSelectionCriteria: new Models\ReplicationSourceSelectionCriteria(
|
||||
sseKmsEncryptedObjects: new Models\SseKmsEncryptedObjects(
|
||||
status: 'Enabled',
|
||||
)
|
||||
),
|
||||
destination: new Models\ReplicationDestination(
|
||||
bucket: 'destBucket',
|
||||
location: 'oss-cn-beijing',
|
||||
transferType: Models\TransferType::OSS_ACC
|
||||
),
|
||||
historicalObjectReplication: Models\HistoricalObjectReplicationType::ENABLED,
|
||||
syncRole: 'aliyunramrole',
|
||||
encryptionConfiguration: new Models\ReplicationEncryptionConfiguration(
|
||||
replicaKmsKeyID: 'c4d49f85-ee30-426b-a5ed-95e9139d****'
|
||||
),
|
||||
rtc: new Models\ReplicationTimeControl(
|
||||
status: 'enabled'
|
||||
)
|
||||
))
|
||||
));
|
||||
$input = BucketReplication::fromPutBucketReplication($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><ReplicationConfiguration><Rule><SourceSelectionCriteria><SseKmsEncryptedObjects><Status>Enabled</Status></SseKmsEncryptedObjects></SourceSelectionCriteria><Destination><Bucket>destBucket</Bucket><Location>oss-cn-beijing</Location><TransferType>oss_acc</TransferType></Destination><HistoricalObjectReplication>enabled</HistoricalObjectReplication><SyncRole>aliyunramrole</SyncRole><EncryptionConfiguration><ReplicaKmsKeyID>c4d49f85-ee30-426b-a5ed-95e9139d****</ReplicaKmsKeyID></EncryptionConfiguration><RTC><Status>enabled</Status></RTC></Rule></ReplicationConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketReplication()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketReplication::toPutBucketReplication($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'x-oss-replication-rule-id' => 'b890c26e-907e-4692-b9ac-ec4c11ec****']
|
||||
);
|
||||
$result = BucketReplication::toPutBucketReplication($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('b890c26e-907e-4692-b9ac-ec4c11ec****', $result->replicationRuleId);
|
||||
}
|
||||
|
||||
public function testFromGetBucketReplication()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketReplicationRequest();
|
||||
$input = BucketReplication::fromGetBucketReplication($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketReplicationRequest('bucket-123');
|
||||
$input = BucketReplication::fromGetBucketReplication($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketReplication()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketReplication::toGetBucketReplication($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ReplicationConfiguration>
|
||||
<Rule>
|
||||
<ID>test_replication_1</ID>
|
||||
<PrefixSet>
|
||||
<Prefix>source1</Prefix>
|
||||
<Prefix>video</Prefix>
|
||||
</PrefixSet>
|
||||
<Action>PUT</Action>
|
||||
<Destination>
|
||||
<Bucket>destbucket</Bucket>
|
||||
<Location>oss-cn-beijing</Location>
|
||||
<TransferType>oss_acc</TransferType>
|
||||
</Destination>
|
||||
<Status>doing</Status>
|
||||
<HistoricalObjectReplication>enabled</HistoricalObjectReplication>
|
||||
<SyncRole>aliyunramrole</SyncRole>
|
||||
<RTC>
|
||||
<Status>enabled</Status>
|
||||
</RTC>
|
||||
</Rule>
|
||||
</ReplicationConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketReplication::toGetBucketReplication($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals(1, count($result->replicationConfiguration->rules));
|
||||
$this->assertEquals('enabled', $result->replicationConfiguration->rules[0]->rtc->status);
|
||||
$this->assertEquals('test_replication_1', $result->replicationConfiguration->rules[0]->id);
|
||||
$this->assertEquals('source1', $result->replicationConfiguration->rules[0]->prefixSet->prefixs[0]);
|
||||
$this->assertEquals('video', $result->replicationConfiguration->rules[0]->prefixSet->prefixs[1]);
|
||||
$this->assertEquals('PUT', $result->replicationConfiguration->rules[0]->action);
|
||||
$this->assertEquals(Models\TransferType::OSS_ACC, $result->replicationConfiguration->rules[0]->destination->transferType);
|
||||
$this->assertEquals('oss-cn-beijing', $result->replicationConfiguration->rules[0]->destination->location);
|
||||
$this->assertEquals('doing', $result->replicationConfiguration->rules[0]->status);
|
||||
$this->assertEquals(Models\HistoricalObjectReplicationType::ENABLED, $result->replicationConfiguration->rules[0]->historicalObjectReplication);
|
||||
$this->assertEquals('aliyunramrole', $result->replicationConfiguration->rules[0]->syncRole);
|
||||
}
|
||||
|
||||
public function testFromGetBucketReplicationLocation()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketReplicationLocationRequest();
|
||||
$input = BucketReplication::fromGetBucketReplicationLocation($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketReplicationLocationRequest('bucket-123');
|
||||
$input = BucketReplication::fromGetBucketReplicationLocation($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketReplicationLocation()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketReplication::toGetBucketReplicationLocation($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ReplicationLocation>
|
||||
<Location>oss-cn-beijing</Location>
|
||||
<Location>oss-cn-qingdao</Location>
|
||||
<Location>oss-cn-shenzhen</Location>
|
||||
<Location>oss-cn-hongkong</Location>
|
||||
<Location>oss-us-west-1</Location>
|
||||
<LocationTransferTypeConstraint>
|
||||
<LocationTransferType>
|
||||
<Location>oss-cn-hongkong</Location>
|
||||
<TransferTypes>
|
||||
<Type>oss_acc</Type>
|
||||
</TransferTypes>
|
||||
</LocationTransferType>
|
||||
<LocationTransferType>
|
||||
<Location>oss-us-west-1</Location>
|
||||
<TransferTypes>
|
||||
<Type>oss_acc</Type>
|
||||
</TransferTypes>
|
||||
</LocationTransferType>
|
||||
</LocationTransferTypeConstraint>
|
||||
</ReplicationLocation>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketReplication::toGetBucketReplicationLocation($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals(5, count($result->replicationLocation->locations));
|
||||
$this->assertEquals('oss-cn-beijing', $result->replicationLocation->locations[0]);
|
||||
$this->assertEquals('oss-cn-qingdao', $result->replicationLocation->locations[1]);
|
||||
$this->assertEquals('oss-cn-shenzhen', $result->replicationLocation->locations[2]);
|
||||
$this->assertEquals('oss-cn-hongkong', $result->replicationLocation->locations[3]);
|
||||
$this->assertEquals('oss-us-west-1', $result->replicationLocation->locations[4]);
|
||||
$this->assertEquals(2, count($result->replicationLocation->locationTransferTypeConstraint->locationTransferTypes));
|
||||
$this->assertEquals('oss-cn-hongkong', $result->replicationLocation->locationTransferTypeConstraint->locationTransferTypes[0]->location);
|
||||
$this->assertEquals('oss_acc', $result->replicationLocation->locationTransferTypeConstraint->locationTransferTypes[0]->transferTypes->types[0]);
|
||||
$this->assertEquals('oss-us-west-1', $result->replicationLocation->locationTransferTypeConstraint->locationTransferTypes[1]->location);
|
||||
$this->assertEquals('oss_acc', $result->replicationLocation->locationTransferTypeConstraint->locationTransferTypes[1]->transferTypes->types[0]);
|
||||
}
|
||||
|
||||
public function testFromGetBucketReplicationProgress()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketReplicationProgressRequest();
|
||||
$input = BucketReplication::fromGetBucketReplicationProgress($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\GetBucketReplicationProgressRequest('bucket-123');
|
||||
$input = BucketReplication::fromGetBucketReplicationProgress($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, ruleId", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketReplicationProgressRequest('bucket-123', 'rule-1');
|
||||
$input = BucketReplication::fromGetBucketReplicationProgress($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketReplicationProgress()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketReplication::toGetBucketReplicationProgress($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ReplicationProgress>
|
||||
<Rule>
|
||||
<ID>test_replication_1</ID>
|
||||
<PrefixSet>
|
||||
<Prefix>source_image</Prefix>
|
||||
<Prefix>video</Prefix>
|
||||
</PrefixSet>
|
||||
<Action>PUT</Action>
|
||||
<Destination>
|
||||
<Bucket>target-bucket</Bucket>
|
||||
<Location>oss-cn-beijing</Location>
|
||||
<TransferType>oss_acc</TransferType>
|
||||
</Destination>
|
||||
<Status>doing</Status>
|
||||
<HistoricalObjectReplication>enabled</HistoricalObjectReplication>
|
||||
<Progress>
|
||||
<HistoricalObject>0.85</HistoricalObject>
|
||||
<NewObject>2015-09-24T15:28:14.000Z</NewObject>
|
||||
</Progress>
|
||||
</Rule>
|
||||
</ReplicationProgress>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketReplication::toGetBucketReplicationProgress($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals(1, count($result->replicationProgress->rules));
|
||||
$this->assertEquals('test_replication_1', $result->replicationProgress->rules[0]->id);
|
||||
$this->assertEquals('source_image', $result->replicationProgress->rules[0]->prefixSet->prefixs[0]);
|
||||
$this->assertEquals('video', $result->replicationProgress->rules[0]->prefixSet->prefixs[1]);
|
||||
$this->assertEquals('PUT', $result->replicationProgress->rules[0]->action);
|
||||
$this->assertEquals(Models\TransferType::OSS_ACC, $result->replicationProgress->rules[0]->destination->transferType);
|
||||
$this->assertEquals('target-bucket', $result->replicationProgress->rules[0]->destination->bucket);
|
||||
$this->assertEquals('oss-cn-beijing', $result->replicationProgress->rules[0]->destination->location);
|
||||
$this->assertEquals('doing', $result->replicationProgress->rules[0]->status);
|
||||
$this->assertEquals('0.85', $result->replicationProgress->rules[0]->progress->historicalObject);
|
||||
$this->assertEquals('2015-09-24T15:28:14.000Z', $result->replicationProgress->rules[0]->progress->newObject);
|
||||
}
|
||||
|
||||
public function testFromDeleteBucketReplication()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteBucketReplicationRequest();
|
||||
$input = BucketReplication::fromDeleteBucketReplication($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\DeleteBucketReplicationRequest('bucket-123');
|
||||
$input = BucketReplication::fromDeleteBucketReplication($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, replicationRules", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteBucketReplicationRequest('bucket-123', new Models\ReplicationRules(
|
||||
ids: ['test_replication_1']
|
||||
));
|
||||
$input = BucketReplication::fromDeleteBucketReplication($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><ReplicationRules><ID>test_replication_1</ID></ReplicationRules>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToDeleteBucketReplication()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketReplication::toGetBucketReplicationProgress($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
);
|
||||
$result = BucketReplication::toGetBucketReplicationProgress($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
143
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketRequestPaymentTest.php
vendored
Normal file
143
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketRequestPaymentTest.php
vendored
Normal file
@@ -0,0 +1,143 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketRequestPayment;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketRequestPaymentTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketRequestPayment()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketRequestPaymentRequest();
|
||||
$input = BucketRequestPayment::fromPutBucketRequestPayment($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketRequestPaymentRequest('bucket-123');
|
||||
$input = BucketRequestPayment::fromPutBucketRequestPayment($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, requestPaymentConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\PutBucketRequestPaymentRequest('bucket-123', new Models\RequestPaymentConfiguration(
|
||||
'Requester'
|
||||
));
|
||||
$input = BucketRequestPayment::fromPutBucketRequestPayment($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><RequestPaymentConfiguration><Payer>Requester</Payer></RequestPaymentConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
$request = new Models\PutBucketRequestPaymentRequest('bucket-123', new Models\RequestPaymentConfiguration(
|
||||
'BucketOwner'
|
||||
));
|
||||
$input = BucketRequestPayment::fromPutBucketRequestPayment($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><RequestPaymentConfiguration><Payer>BucketOwner</Payer></RequestPaymentConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketRequestPayment()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketRequestPayment::toPutBucketRequestPayment($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketRequestPayment::toPutBucketRequestPayment($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketRequestPayment()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketRequestPaymentRequest();
|
||||
$input = BucketRequestPayment::fromGetBucketRequestPayment($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketRequestPaymentRequest('bucket-123');
|
||||
$input = BucketRequestPayment::fromGetBucketRequestPayment($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketRequestPayment()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketRequestPayment::toGetBucketRequestPayment($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<RequestPaymentConfiguration>
|
||||
<Payer>Requester</Payer>
|
||||
</RequestPaymentConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketRequestPayment::toGetBucketRequestPayment($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('Requester', $result->requestPaymentConfiguration->payer);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<RequestPaymentConfiguration>
|
||||
<Payer>BucketOwner</Payer>
|
||||
</RequestPaymentConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketRequestPayment::toGetBucketRequestPayment($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('BucketOwner', $result->requestPaymentConfiguration->payer);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
115
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketResourceGroupTest.php
vendored
Normal file
115
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketResourceGroupTest.php
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketResourceGroup;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketResourceGroupTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketResourceGroup()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketResourceGroupRequest();
|
||||
$input = BucketResourceGroup::fromPutBucketResourceGroup($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketResourceGroupRequest('bucket-123');
|
||||
$input = BucketResourceGroup::fromPutBucketResourceGroup($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucketResourceGroupConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\PutBucketResourceGroupRequest('bucket-123', new Models\BucketResourceGroupConfiguration(
|
||||
'rg-aekz****'
|
||||
));
|
||||
$input = BucketResourceGroup::fromPutBucketResourceGroup($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><BucketResourceGroupConfiguration><ResourceGroupId>rg-aekz****</ResourceGroupId></BucketResourceGroupConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketResourceGroup()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketResourceGroup::toPutBucketResourceGroup($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketResourceGroup::toPutBucketResourceGroup($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketResourceGroup()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketResourceGroupRequest();
|
||||
$input = BucketResourceGroup::fromGetBucketResourceGroup($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketResourceGroupRequest('bucket-123');
|
||||
$input = BucketResourceGroup::fromGetBucketResourceGroup($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketResourceGroup()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketResourceGroup::toGetBucketResourceGroup($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<BucketResourceGroupConfiguration>
|
||||
<ResourceGroupId>rg-aekz****</ResourceGroupId>
|
||||
</BucketResourceGroupConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketResourceGroup::toGetBucketResourceGroup($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('rg-aekz****', $result->bucketResourceGroupConfiguration->resourceGroupId);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
274
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketStyleTest.php
vendored
Normal file
274
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketStyleTest.php
vendored
Normal file
@@ -0,0 +1,274 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketStyle;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketStyleTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutStyle()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutStyleRequest();
|
||||
$input = BucketStyle::fromPutStyle($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutStyleRequest('bucket-123');
|
||||
$input = BucketStyle::fromPutStyle($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, styleName", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutStyleRequest('bucket-123', 'test');
|
||||
$input = BucketStyle::fromPutStyle($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, style", (string)$e);
|
||||
}
|
||||
|
||||
// demo1
|
||||
$request = new Models\PutStyleRequest('bucket-123',
|
||||
styleName: 'test',
|
||||
style: new Models\StyleContent(
|
||||
'image/resize,p_50'
|
||||
)
|
||||
);
|
||||
$input = BucketStyle::fromPutStyle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><Style><Content>image/resize,p_50</Content></Style>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutStyle()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketStyle::toPutStyle($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketStyle::toPutStyle($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetStyle()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetStyleRequest();
|
||||
$input = BucketStyle::fromGetStyle($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\GetStyleRequest('bucket-123');
|
||||
$input = BucketStyle::fromGetStyle($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, styleName", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetStyleRequest('bucket-123', 'style-123');
|
||||
$input = BucketStyle::fromGetStyle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetStyle()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketStyle::toGetStyle($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Style>
|
||||
<Name>imagestyle</Name>
|
||||
<Content>image/resize,p_50</Content>
|
||||
<Category>image</Category>
|
||||
<CreateTime>Wed, 20 May 2020 12:07:15 GMT</CreateTime>
|
||||
<LastModifyTime>Wed, 21 May 2020 12:07:15 GMT</LastModifyTime>
|
||||
</Style>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketStyle::toGetStyle($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('imagestyle', $result->style->name);
|
||||
$this->assertEquals('image/resize,p_50', $result->style->content);
|
||||
$this->assertEquals('image', $result->style->category);
|
||||
$this->assertEquals('Wed, 20 May 2020 12:07:15 GMT', $result->style->createTime);
|
||||
$this->assertEquals('Wed, 21 May 2020 12:07:15 GMT', $result->style->lastModifyTime);
|
||||
}
|
||||
|
||||
public function testFromListStyle()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\ListStyleRequest();
|
||||
$input = BucketStyle::fromListStyle($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\ListStyleRequest('bucket-123');
|
||||
$input = BucketStyle::fromListStyle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToListStyle()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketStyle::toListStyle($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<StyleList>
|
||||
<Style>
|
||||
<Name>imagestyle</Name>
|
||||
<Content>image/resize,p_50</Content>
|
||||
<Category>image</Category>
|
||||
<CreateTime>Wed, 20 May 2020 12:07:15 GMT</CreateTime>
|
||||
<LastModifyTime>Wed, 21 May 2020 12:07:15 GMT</LastModifyTime>
|
||||
</Style>
|
||||
<Style>
|
||||
<Name>imagestyle1</Name>
|
||||
<Content>image/resize,w_200</Content>
|
||||
<Category>image</Category>
|
||||
<CreateTime>Wed, 20 May 2020 12:08:04 GMT</CreateTime>
|
||||
<LastModifyTime>Wed, 21 May 2020 12:08:04 GMT</LastModifyTime>
|
||||
</Style>
|
||||
<Style>
|
||||
<Name>imagestyle2</Name>
|
||||
<Content>image/resize,w_300</Content>
|
||||
<Category>image</Category>
|
||||
<CreateTime>Fri, 12 Mar 2021 06:19:13 GMT</CreateTime>
|
||||
<LastModifyTime>Fri, 13 Mar 2021 06:27:21 GMT</LastModifyTime>
|
||||
</Style>
|
||||
</StyleList>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketStyle::toListStyle($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('imagestyle', $result->styleList->styles[0]->name);
|
||||
$this->assertEquals('image/resize,p_50', $result->styleList->styles[0]->content);
|
||||
$this->assertEquals('image', $result->styleList->styles[0]->category);
|
||||
$this->assertEquals('Wed, 20 May 2020 12:07:15 GMT', $result->styleList->styles[0]->createTime);
|
||||
$this->assertEquals('Wed, 21 May 2020 12:07:15 GMT', $result->styleList->styles[0]->lastModifyTime);
|
||||
$this->assertEquals('imagestyle1', $result->styleList->styles[1]->name);
|
||||
$this->assertEquals('image/resize,w_200', $result->styleList->styles[1]->content);
|
||||
$this->assertEquals('image', $result->styleList->styles[1]->category);
|
||||
$this->assertEquals('Wed, 20 May 2020 12:08:04 GMT', $result->styleList->styles[1]->createTime);
|
||||
$this->assertEquals('Wed, 21 May 2020 12:08:04 GMT', $result->styleList->styles[1]->lastModifyTime);
|
||||
|
||||
$this->assertEquals('imagestyle2', $result->styleList->styles[2]->name);
|
||||
$this->assertEquals('image/resize,w_300', $result->styleList->styles[2]->content);
|
||||
$this->assertEquals('image', $result->styleList->styles[2]->category);
|
||||
$this->assertEquals('Fri, 12 Mar 2021 06:19:13 GMT', $result->styleList->styles[2]->createTime);
|
||||
$this->assertEquals('Fri, 13 Mar 2021 06:27:21 GMT', $result->styleList->styles[2]->lastModifyTime);
|
||||
}
|
||||
|
||||
public function testFromDeleteStyle()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteStyleRequest();
|
||||
$input = BucketStyle::fromDeleteStyle($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\DeleteStyleRequest('bucket-123');
|
||||
$input = BucketStyle::fromDeleteStyle($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, styleName", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteStyleRequest('bucket-123', 'style-123');
|
||||
$input = BucketStyle::fromDeleteStyle($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToDeleteStyle()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketStyle::toDeleteStyle($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketStyle::toDeleteStyle($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
177
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketTagsTest.php
vendored
Normal file
177
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketTagsTest.php
vendored
Normal file
@@ -0,0 +1,177 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketTags;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketTagsTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketTags()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketTagsRequest();
|
||||
$input = BucketTags::fromPutBucketTags($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketTagsRequest('bucket-123');
|
||||
$input = BucketTags::fromPutBucketTags($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, tagging", (string)$e);
|
||||
}
|
||||
|
||||
// demo1
|
||||
$request = new Models\PutBucketTagsRequest('bucket-123',
|
||||
tagging: new Models\Tagging(
|
||||
tagSet: new Models\TagSet(
|
||||
[new Models\Tag(key: 'key1', value: 'value1'), new Models\Tag(key: 'key2', value: 'value2')])
|
||||
)
|
||||
);
|
||||
$input = BucketTags::fromPutBucketTags($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><Tagging><TagSet><Tag><Key>key1</Key><Value>value1</Value></Tag><Tag><Key>key2</Key><Value>value2</Value></Tag></TagSet></Tagging>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketTags()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketTags::toPutBucketTags($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketTags::toPutBucketTags($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketTags()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketTagsRequest();
|
||||
$input = BucketTags::fromGetBucketTags($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketTagsRequest('bucket-123');
|
||||
$input = BucketTags::fromGetBucketTags($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketTags()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketTags::toGetBucketTags($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Tagging>
|
||||
<TagSet>
|
||||
<Tag>
|
||||
<Key>testa</Key>
|
||||
<Value>testv1</Value>
|
||||
</Tag>
|
||||
<Tag>
|
||||
<Key>testb</Key>
|
||||
<Value>testv2</Value>
|
||||
</Tag>
|
||||
</TagSet>
|
||||
</Tagging>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketTags::toGetBucketTags($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals(2, count($result->tagging->tagSet->tags));
|
||||
$this->assertEquals('testa', $result->tagging->tagSet->tags[0]->key);
|
||||
$this->assertEquals('testv2', $result->tagging->tagSet->tags[1]->value);
|
||||
}
|
||||
|
||||
public function testFromDeleteBucketTags()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteBucketTagsRequest();
|
||||
$input = BucketTags::fromDeleteBucketTags($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteBucketTagsRequest('bucket-123');
|
||||
$input = BucketTags::fromDeleteBucketTags($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
|
||||
$request = new Models\DeleteBucketTagsRequest('bucket-123', tagging: 'k1,k2');
|
||||
$input = BucketTags::fromDeleteBucketTags($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('k1,k2', $input->getParameters()['tagging']);
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToDeleteBucketTags()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketTags::toDeleteBucketTags($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketTags::toDeleteBucketTags($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
133
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketTransferAccelerationTest.php
vendored
Normal file
133
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketTransferAccelerationTest.php
vendored
Normal file
@@ -0,0 +1,133 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketTransferAcceleration;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketTransferAccelerationTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketTransferAcceleration()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketTransferAccelerationRequest();
|
||||
$input = BucketTransferAcceleration::fromPutBucketTransferAcceleration($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketTransferAccelerationRequest('bucket-123');
|
||||
$input = BucketTransferAcceleration::fromPutBucketTransferAcceleration($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, transferAccelerationConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\PutBucketTransferAccelerationRequest('bucket-123', new Models\TransferAccelerationConfiguration(
|
||||
true
|
||||
));
|
||||
$input = BucketTransferAcceleration::fromPutBucketTransferAcceleration($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><TransferAccelerationConfiguration><Enabled>true</Enabled></TransferAccelerationConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketTransferAcceleration()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketTransferAcceleration::toPutBucketTransferAcceleration($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketTransferAcceleration::toPutBucketTransferAcceleration($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketTransferAcceleration()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketTransferAccelerationRequest();
|
||||
$input = BucketTransferAcceleration::fromGetBucketTransferAcceleration($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketTransferAccelerationRequest('bucket-123');
|
||||
$input = BucketTransferAcceleration::fromGetBucketTransferAcceleration($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketTransferAcceleration()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketTransferAcceleration::toGetBucketTransferAcceleration($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<TransferAccelerationConfiguration>
|
||||
<Enabled>true</Enabled>
|
||||
</TransferAccelerationConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketTransferAcceleration::toGetBucketTransferAcceleration($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertTrue($result->transferAccelerationConfiguration->enabled);
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<TransferAccelerationConfiguration>
|
||||
<Enabled>false</Enabled>
|
||||
</TransferAccelerationConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketTransferAcceleration::toGetBucketTransferAcceleration($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertFalse($result->transferAccelerationConfiguration->enabled);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
590
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketWebsiteTest.php
vendored
Normal file
590
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketWebsiteTest.php
vendored
Normal file
@@ -0,0 +1,590 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketWebsite;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketWebsiteTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromPutBucketWebsite()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\PutBucketWebsiteRequest();
|
||||
$input = BucketWebsite::fromPutBucketWebsite($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\PutBucketWebsiteRequest('bucket-123');
|
||||
$input = BucketWebsite::fromPutBucketWebsite($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, websiteConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
// demo1
|
||||
$request = new Models\PutBucketWebsiteRequest('bucket-123');
|
||||
$request->websiteConfiguration = new Models\WebsiteConfiguration(
|
||||
new Models\IndexDocument(
|
||||
suffix: 'index.html', supportSubDir: true, type: 0
|
||||
),
|
||||
new Models\ErrorDocument(
|
||||
key: 'error.html', httpStatus: 404
|
||||
),
|
||||
new Models\RoutingRules([
|
||||
new Models\RoutingRule(
|
||||
redirect: new Models\RoutingRuleRedirect(
|
||||
redirectType: 'Mirror',
|
||||
mirrorURL: 'http://example.com/',
|
||||
mirrorPassQueryString: true,
|
||||
mirrorCheckMd5: true,
|
||||
mirrorFollowRedirect: true,
|
||||
mirrorHeaders: new Models\MirrorHeaders(
|
||||
passs: ["myheader-key1", "myheader-key2"],
|
||||
sets: array(
|
||||
new Models\MirrorHeaderSet(key: 'myheader-key5', value: 'myheader-value5'),
|
||||
),
|
||||
passAll: true,
|
||||
),
|
||||
passQueryString: true,
|
||||
),
|
||||
ruleNumber: 1,
|
||||
condition: new Models\RoutingRuleCondition(
|
||||
keyPrefixEquals: 'abc/',
|
||||
httpErrorCodeReturnedEquals: 404,
|
||||
)
|
||||
),
|
||||
new Models\RoutingRule(
|
||||
redirect: new Models\RoutingRuleRedirect(
|
||||
redirectType: 'AliCDN',
|
||||
protocol: 'http',
|
||||
replaceKeyPrefixWith: 'prefix/${key}.suffix',
|
||||
hostName: 'example.com',
|
||||
passQueryString: false,
|
||||
httpRedirectCode: 301
|
||||
),
|
||||
ruleNumber: 2,
|
||||
condition: new Models\RoutingRuleCondition(
|
||||
keyPrefixEquals: 'abc/',
|
||||
httpErrorCodeReturnedEquals: 404,
|
||||
includeHeaders: [
|
||||
new Models\RoutingRuleIncludeHeader(
|
||||
key: 'host',
|
||||
equals: 'test.oss-cn-beijing-internal.aliyuncs.com',
|
||||
)
|
||||
]
|
||||
)
|
||||
),
|
||||
new Models\RoutingRule(
|
||||
redirect: new Models\RoutingRuleRedirect(
|
||||
redirectType: 'External',
|
||||
protocol: 'http',
|
||||
replaceKeyPrefixWith: 'prefix/${key}',
|
||||
hostName: 'example.com',
|
||||
passQueryString: false,
|
||||
enableReplacePrefix: false,
|
||||
httpRedirectCode: 302,
|
||||
),
|
||||
ruleNumber: 3,
|
||||
condition: new Models\RoutingRuleCondition(
|
||||
httpErrorCodeReturnedEquals: 404,
|
||||
)
|
||||
)
|
||||
])
|
||||
);
|
||||
$input = BucketWebsite::fromPutBucketWebsite($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = '<?xml version="1.0" encoding="UTF-8"?><WebsiteConfiguration><IndexDocument><Suffix>index.html</Suffix><SupportSubDir>true</SupportSubDir><Type>0</Type></IndexDocument><ErrorDocument><Key>error.html</Key><HttpStatus>404</HttpStatus></ErrorDocument><RoutingRules><RoutingRule><Redirect><RedirectType>Mirror</RedirectType><MirrorURL>http://example.com/</MirrorURL><MirrorPassQueryString>true</MirrorPassQueryString><MirrorCheckMd5>true</MirrorCheckMd5><MirrorFollowRedirect>true</MirrorFollowRedirect><MirrorHeaders><Pass>myheader-key1</Pass><Pass>myheader-key2</Pass><Set><Key>myheader-key5</Key><Value>myheader-value5</Value></Set><PassAll>true</PassAll></MirrorHeaders><PassQueryString>true</PassQueryString></Redirect><RuleNumber>1</RuleNumber><Condition><KeyPrefixEquals>abc/</KeyPrefixEquals><HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals></Condition></RoutingRule><RoutingRule><Redirect><RedirectType>AliCDN</RedirectType><Protocol>http</Protocol><ReplaceKeyPrefixWith>prefix/${key}.suffix</ReplaceKeyPrefixWith><HostName>example.com</HostName><PassQueryString>false</PassQueryString><HttpRedirectCode>301</HttpRedirectCode></Redirect><RuleNumber>2</RuleNumber><Condition><KeyPrefixEquals>abc/</KeyPrefixEquals><HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals><IncludeHeader><Key>host</Key><Equals>test.oss-cn-beijing-internal.aliyuncs.com</Equals></IncludeHeader></Condition></RoutingRule><RoutingRule><Redirect><RedirectType>External</RedirectType><Protocol>http</Protocol><ReplaceKeyPrefixWith>prefix/${key}</ReplaceKeyPrefixWith><HostName>example.com</HostName><PassQueryString>false</PassQueryString><EnableReplacePrefix>false</EnableReplacePrefix><HttpRedirectCode>302</HttpRedirectCode></Redirect><RuleNumber>3</RuleNumber><Condition><HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals></Condition></RoutingRule></RoutingRules></WebsiteConfiguration>';
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
// demo2
|
||||
$request = new Models\PutBucketWebsiteRequest('bucket-123');
|
||||
$request->websiteConfiguration = new Models\WebsiteConfiguration(
|
||||
new Models\IndexDocument(
|
||||
suffix: 'index.html', supportSubDir: true, type: 0
|
||||
),
|
||||
new Models\ErrorDocument(
|
||||
key: 'error.html', httpStatus: 404
|
||||
),
|
||||
new Models\RoutingRules([
|
||||
new Models\RoutingRule(
|
||||
redirect: new Models\RoutingRuleRedirect(
|
||||
mirrorPassOriginalSlashes: false,
|
||||
redirectType: 'Mirror',
|
||||
mirrorURL: 'http://example.com/',
|
||||
mirrorPassQueryString: true,
|
||||
mirrorCheckMd5: true,
|
||||
mirrorSNI: true,
|
||||
replaceKeyPrefixWith: "def/",
|
||||
mirrorFollowRedirect: true,
|
||||
hostName: "example.com",
|
||||
mirrorHeaders: new Models\MirrorHeaders(
|
||||
passs: ["myheader-key1", "myheader-key2"],
|
||||
sets: array(
|
||||
new Models\MirrorHeaderSet(key: 'myheader-key5', value: 'myheader-value5'),
|
||||
),
|
||||
passAll: true,
|
||||
),
|
||||
passQueryString: true,
|
||||
enableReplacePrefix: true,
|
||||
httpRedirectCode: 301,
|
||||
mirrorURLSlave: 'http://example.com/',
|
||||
mirrorSaveOssMeta: true,
|
||||
mirrorProxyPass: false,
|
||||
mirrorAllowGetImageInfo: true,
|
||||
mirrorAllowVideoSnapshot: false,
|
||||
mirrorIsExpressTunnel: true,
|
||||
mirrorDstRegion: 'cn-hangzhou',
|
||||
mirrorDstVpcId: 'vpc-test-id',
|
||||
mirrorDstSlaveVpcId: 'vpc-test-id',
|
||||
mirrorUserLastModified: false,
|
||||
mirrorSwitchAllErrors: true,
|
||||
mirrorTunnelId: 'test-tunnel-id',
|
||||
mirrorUsingRole: false,
|
||||
mirrorRole: 'aliyun-test-role',
|
||||
mirrorAllowHeadObject: true,
|
||||
transparentMirrorResponseCodes: '400',
|
||||
mirrorAsyncStatus: 303,
|
||||
mirrorTaggings: new Models\MirrorTaggings(
|
||||
taggings: [new Models\MirrorTagging(
|
||||
value: 'v',
|
||||
key: 'k'
|
||||
)]
|
||||
),
|
||||
mirrorReturnHeaders: new Models\MirrorReturnHeaders(
|
||||
returnHeaders: [
|
||||
new Models\ReturnHeader(
|
||||
key: 'k',
|
||||
value: 'v'
|
||||
)
|
||||
]
|
||||
),
|
||||
mirrorAuth: new Models\MirrorAuth(
|
||||
'S3V4', 'ap-southeast-1', 'TESTAK', 'TESTSK'
|
||||
),
|
||||
mirrorMultiAlternates: new Models\MirrorMultiAlternates(
|
||||
[
|
||||
new Models\MirrorMultiAlternate(
|
||||
mirrorMultiAlternateNumber: 32, mirrorMultiAlternateURL: 'https://test-multi-alter.example.com', mirrorMultiAlternateVpcId: 'vpc-test-id', mirrorMultiAlternateDstRegion: 'ap-southeast-1'
|
||||
)
|
||||
]
|
||||
)
|
||||
),
|
||||
ruleNumber: 1,
|
||||
condition: new Models\RoutingRuleCondition(
|
||||
keyPrefixEquals: 'abc/',
|
||||
keySuffixEquals: ".txt",
|
||||
httpErrorCodeReturnedEquals: 404,
|
||||
),
|
||||
luaConfig: new Models\RoutingRuleLuaConfig(
|
||||
script: "test.lua",
|
||||
)
|
||||
),
|
||||
new Models\RoutingRule(
|
||||
redirect: new Models\RoutingRuleRedirect(
|
||||
redirectType: 'AliCDN',
|
||||
mirrorURL: 'http://example.com/',
|
||||
mirrorPassQueryString: true,
|
||||
mirrorCheckMd5: true,
|
||||
mirrorSNI: true,
|
||||
protocol: 'http',
|
||||
mirrorFollowRedirect: true,
|
||||
mirrorHeaders: new Models\MirrorHeaders(
|
||||
passs: ["myheader-key1", "myheader-key2"],
|
||||
sets: array(
|
||||
new Models\MirrorHeaderSet(key: 'myheader-key5', value: 'myheader-value5'),
|
||||
),
|
||||
passAll: true,
|
||||
),
|
||||
passQueryString: true,
|
||||
replaceKeyWith: "abc",
|
||||
),
|
||||
ruleNumber: 2,
|
||||
condition: new Models\RoutingRuleCondition(
|
||||
keyPrefixEquals: 'abc/',
|
||||
keySuffixEquals: ".txt",
|
||||
httpErrorCodeReturnedEquals: 404,
|
||||
),
|
||||
luaConfig: new Models\RoutingRuleLuaConfig(
|
||||
script: "test.lua",
|
||||
)
|
||||
),
|
||||
]),
|
||||
);
|
||||
$input = BucketWebsite::fromPutBucketWebsite($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><WebsiteConfiguration><IndexDocument><Suffix>index.html</Suffix><SupportSubDir>true</SupportSubDir><Type>0</Type></IndexDocument><ErrorDocument><Key>error.html</Key><HttpStatus>404</HttpStatus></ErrorDocument><RoutingRules><RoutingRule><Redirect><MirrorPassOriginalSlashes>false</MirrorPassOriginalSlashes><RedirectType>Mirror</RedirectType><MirrorURL>http://example.com/</MirrorURL><MirrorPassQueryString>true</MirrorPassQueryString><MirrorCheckMd5>true</MirrorCheckMd5><MirrorSNI>true</MirrorSNI><ReplaceKeyPrefixWith>def/</ReplaceKeyPrefixWith><MirrorFollowRedirect>true</MirrorFollowRedirect><HostName>example.com</HostName><MirrorHeaders><Pass>myheader-key1</Pass><Pass>myheader-key2</Pass><Set><Key>myheader-key5</Key><Value>myheader-value5</Value></Set><PassAll>true</PassAll></MirrorHeaders><PassQueryString>true</PassQueryString><EnableReplacePrefix>true</EnableReplacePrefix><HttpRedirectCode>301</HttpRedirectCode><MirrorURLSlave>http://example.com/</MirrorURLSlave><MirrorSaveOssMeta>true</MirrorSaveOssMeta><MirrorProxyPass>false</MirrorProxyPass><MirrorAllowGetImageInfo>true</MirrorAllowGetImageInfo><MirrorAllowVideoSnapshot>false</MirrorAllowVideoSnapshot><MirrorIsExpressTunnel>true</MirrorIsExpressTunnel><MirrorDstRegion>cn-hangzhou</MirrorDstRegion><MirrorDstVpcId>vpc-test-id</MirrorDstVpcId><MirrorDstSlaveVpcId>vpc-test-id</MirrorDstSlaveVpcId><MirrorUserLastModified>false</MirrorUserLastModified><MirrorSwitchAllErrors>true</MirrorSwitchAllErrors><MirrorTunnelId>test-tunnel-id</MirrorTunnelId><MirrorUsingRole>false</MirrorUsingRole><MirrorRole>aliyun-test-role</MirrorRole><MirrorAllowHeadObject>true</MirrorAllowHeadObject><TransparentMirrorResponseCodes>400</TransparentMirrorResponseCodes><MirrorAsyncStatus>303</MirrorAsyncStatus><MirrorTaggings><Taggings><Value>v</Value><Key>k</Key></Taggings></MirrorTaggings><MirrorReturnHeaders><ReturnHeader><Key>k</Key><Value>v</Value></ReturnHeader></MirrorReturnHeaders><MirrorAuth><AuthType>S3V4</AuthType><Region>ap-southeast-1</Region><AccessKeyId>TESTAK</AccessKeyId><AccessKeySecret>TESTSK</AccessKeySecret></MirrorAuth><MirrorMultiAlternates><MirrorMultiAlternate><MirrorMultiAlternateNumber>32</MirrorMultiAlternateNumber><MirrorMultiAlternateURL>https://test-multi-alter.example.com</MirrorMultiAlternateURL><MirrorMultiAlternateVpcId>vpc-test-id</MirrorMultiAlternateVpcId><MirrorMultiAlternateDstRegion>ap-southeast-1</MirrorMultiAlternateDstRegion></MirrorMultiAlternate></MirrorMultiAlternates></Redirect><RuleNumber>1</RuleNumber><Condition><KeyPrefixEquals>abc/</KeyPrefixEquals><KeySuffixEquals>.txt</KeySuffixEquals><HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals></Condition><LuaConfig><Script>test.lua</Script></LuaConfig></RoutingRule><RoutingRule><Redirect><RedirectType>AliCDN</RedirectType><MirrorURL>http://example.com/</MirrorURL><MirrorPassQueryString>true</MirrorPassQueryString><MirrorCheckMd5>true</MirrorCheckMd5><MirrorSNI>true</MirrorSNI><Protocol>http</Protocol><MirrorFollowRedirect>true</MirrorFollowRedirect><MirrorHeaders><Pass>myheader-key1</Pass><Pass>myheader-key2</Pass><Set><Key>myheader-key5</Key><Value>myheader-value5</Value></Set><PassAll>true</PassAll></MirrorHeaders><PassQueryString>true</PassQueryString><ReplaceKeyWith>abc</ReplaceKeyWith></Redirect><RuleNumber>2</RuleNumber><Condition><KeyPrefixEquals>abc/</KeyPrefixEquals><KeySuffixEquals>.txt</KeySuffixEquals><HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals></Condition><LuaConfig><Script>test.lua</Script></LuaConfig></RoutingRule></RoutingRules></WebsiteConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
|
||||
$request = new Models\PutBucketWebsiteRequest('bucket-123');
|
||||
$request->websiteConfiguration = new Models\WebsiteConfiguration(
|
||||
new Models\IndexDocument(
|
||||
suffix: 'index.html', supportSubDir: true, type: 0
|
||||
),
|
||||
new Models\ErrorDocument(
|
||||
key: 'error.html', httpStatus: 404
|
||||
)
|
||||
);
|
||||
$input = BucketWebsite::fromPutBucketWebsite($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><WebsiteConfiguration><IndexDocument><Suffix>index.html</Suffix><SupportSubDir>true</SupportSubDir><Type>0</Type></IndexDocument><ErrorDocument><Key>error.html</Key><HttpStatus>404</HttpStatus></ErrorDocument></WebsiteConfiguration>
|
||||
BBB;
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
}
|
||||
|
||||
public function testToPutBucketWebsite()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketWebsite::toPutBucketWebsite($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketWebsite::toPutBucketWebsite($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketWebsite()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketWebsiteRequest();
|
||||
$input = BucketWebsite::fromGetBucketWebsite($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketWebsiteRequest('bucket-123');
|
||||
$input = BucketWebsite::fromGetBucketWebsite($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketWebsite()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketWebsite::toGetBucketWebsite($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<WebsiteConfiguration>
|
||||
<IndexDocument>
|
||||
<Suffix>index.html</Suffix>
|
||||
</IndexDocument>
|
||||
<ErrorDocument>
|
||||
<Key>error.html</Key>
|
||||
<HttpStatus>404</HttpStatus>
|
||||
</ErrorDocument>
|
||||
</WebsiteConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketWebsite::toGetBucketWebsite($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('index.html', $result->websiteConfiguration->indexDocument->suffix);
|
||||
$this->assertNull($result->websiteConfiguration->indexDocument->supportSubDir);
|
||||
$this->assertNull($result->websiteConfiguration->indexDocument->type);
|
||||
$this->assertEquals('error.html', $result->websiteConfiguration->errorDocument->key);
|
||||
$this->assertEquals('404', $result->websiteConfiguration->errorDocument->httpStatus);
|
||||
|
||||
$body = '<WebsiteConfiguration>
|
||||
<IndexDocument>
|
||||
<Suffix>index.html</Suffix>
|
||||
<SupportSubDir>true</SupportSubDir>
|
||||
<Type>0</Type>
|
||||
</IndexDocument>
|
||||
<ErrorDocument>
|
||||
<Key>error.html</Key>
|
||||
<HttpStatus>404</HttpStatus>
|
||||
</ErrorDocument>
|
||||
<RoutingRules>
|
||||
<RoutingRule>
|
||||
<RuleNumber>1</RuleNumber>
|
||||
<Condition>
|
||||
<KeyPrefixEquals>abc/</KeyPrefixEquals>
|
||||
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
|
||||
</Condition>
|
||||
<Redirect>
|
||||
<RedirectType>Mirror</RedirectType>
|
||||
<PassQueryString>true</PassQueryString>
|
||||
<MirrorURL>http://example.com/</MirrorURL>
|
||||
<MirrorPassQueryString>true</MirrorPassQueryString>
|
||||
<MirrorFollowRedirect>true</MirrorFollowRedirect>
|
||||
<MirrorCheckMd5>false</MirrorCheckMd5>
|
||||
<MirrorHeaders>
|
||||
<PassAll>true</PassAll>
|
||||
<Pass>myheader-key1</Pass>
|
||||
<Pass>myheader-key2</Pass>
|
||||
<Remove>myheader-key3</Remove>
|
||||
<Remove>myheader-key4</Remove>
|
||||
<Set>
|
||||
<Key>myheader-key5</Key>
|
||||
<Value>myheader-value5</Value>
|
||||
</Set>
|
||||
</MirrorHeaders>
|
||||
</Redirect>
|
||||
</RoutingRule>
|
||||
<RoutingRule>
|
||||
<RuleNumber>2</RuleNumber>
|
||||
<Condition>
|
||||
<KeyPrefixEquals>abc/</KeyPrefixEquals>
|
||||
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
|
||||
<IncludeHeader>
|
||||
<Key>host</Key>
|
||||
<Equals>test.oss-cn-beijing-internal.aliyuncs.com</Equals>
|
||||
</IncludeHeader>
|
||||
</Condition>
|
||||
<Redirect>
|
||||
<RedirectType>AliCDN</RedirectType>
|
||||
<Protocol>http</Protocol>
|
||||
<HostName>example.com</HostName>
|
||||
<PassQueryString>false</PassQueryString>
|
||||
<ReplaceKeyWith>prefix/${key}.suffix</ReplaceKeyWith>
|
||||
<HttpRedirectCode>301</HttpRedirectCode>
|
||||
</Redirect>
|
||||
</RoutingRule>
|
||||
<RoutingRule>
|
||||
<Condition>
|
||||
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
|
||||
</Condition>
|
||||
<RuleNumber>3</RuleNumber>
|
||||
<Redirect>
|
||||
<ReplaceKeyWith>prefix/${key}</ReplaceKeyWith>
|
||||
<HttpRedirectCode>302</HttpRedirectCode>
|
||||
<EnableReplacePrefix>false</EnableReplacePrefix>
|
||||
<PassQueryString>false</PassQueryString>
|
||||
<Protocol>http</Protocol>
|
||||
<HostName>example.com</HostName>
|
||||
<RedirectType>External</RedirectType>
|
||||
</Redirect>
|
||||
</RoutingRule>
|
||||
</RoutingRules>
|
||||
</WebsiteConfiguration>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketWebsite::toGetBucketWebsite($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('index.html', $result->websiteConfiguration->indexDocument->suffix);
|
||||
$this->assertTrue($result->websiteConfiguration->indexDocument->supportSubDir);
|
||||
$this->assertEquals(0, $result->websiteConfiguration->indexDocument->type);
|
||||
$this->assertEquals('error.html', $result->websiteConfiguration->errorDocument->key);
|
||||
$this->assertEquals('404', $result->websiteConfiguration->errorDocument->httpStatus);
|
||||
$this->assertEquals(3, count($result->websiteConfiguration->routingRules->routingRules));
|
||||
$this->assertEquals(1, $result->websiteConfiguration->routingRules->routingRules[0]->ruleNumber);
|
||||
$this->assertEquals('abc/', $result->websiteConfiguration->routingRules->routingRules[0]->condition->keyPrefixEquals);
|
||||
$this->assertEquals(404, $result->websiteConfiguration->routingRules->routingRules[0]->condition->httpErrorCodeReturnedEquals);
|
||||
$this->assertEquals('Mirror', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->redirectType);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->passQueryString);
|
||||
$this->assertEquals('http://example.com/', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorURL);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorPassQueryString);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorFollowRedirect);
|
||||
$this->assertFalse($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorCheckMd5);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorHeaders->passAll);
|
||||
$this->assertEquals('myheader-key1', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorHeaders->passs[0]);
|
||||
$this->assertEquals('myheader-key2', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorHeaders->passs[1]);
|
||||
$this->assertEquals('myheader-key3', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorHeaders->removes[0]);
|
||||
$this->assertEquals('myheader-key4', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorHeaders->removes[1]);
|
||||
$this->assertEquals('myheader-key5', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorHeaders->sets[0]->key);
|
||||
$this->assertEquals('myheader-value5', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorHeaders->sets[0]->value);
|
||||
|
||||
$this->assertEquals(2, $result->websiteConfiguration->routingRules->routingRules[1]->ruleNumber);
|
||||
$this->assertEquals('abc/', $result->websiteConfiguration->routingRules->routingRules[1]->condition->keyPrefixEquals);
|
||||
$this->assertEquals(404, $result->websiteConfiguration->routingRules->routingRules[1]->condition->httpErrorCodeReturnedEquals);
|
||||
$this->assertEquals('host', $result->websiteConfiguration->routingRules->routingRules[1]->condition->includeHeaders[0]->key);
|
||||
$this->assertEquals('test.oss-cn-beijing-internal.aliyuncs.com', $result->websiteConfiguration->routingRules->routingRules[1]->condition->includeHeaders[0]->equals);
|
||||
$this->assertEquals('AliCDN', $result->websiteConfiguration->routingRules->routingRules[1]->redirect->redirectType);
|
||||
$this->assertEquals('http', $result->websiteConfiguration->routingRules->routingRules[1]->redirect->protocol);
|
||||
$this->assertFalse($result->websiteConfiguration->routingRules->routingRules[1]->redirect->passQueryString);
|
||||
$this->assertEquals('prefix/${key}.suffix', $result->websiteConfiguration->routingRules->routingRules[1]->redirect->replaceKeyWith);
|
||||
$this->assertEquals(301, $result->websiteConfiguration->routingRules->routingRules[1]->redirect->httpRedirectCode);
|
||||
|
||||
$this->assertEquals(3, $result->websiteConfiguration->routingRules->routingRules[2]->ruleNumber);
|
||||
$this->assertEquals('External', $result->websiteConfiguration->routingRules->routingRules[2]->redirect->redirectType);
|
||||
$this->assertFalse($result->websiteConfiguration->routingRules->routingRules[2]->redirect->passQueryString);
|
||||
$this->assertEquals('prefix/${key}', $result->websiteConfiguration->routingRules->routingRules[2]->redirect->replaceKeyWith);
|
||||
$this->assertEquals(302, $result->websiteConfiguration->routingRules->routingRules[2]->redirect->httpRedirectCode);
|
||||
$this->assertFalse($result->websiteConfiguration->routingRules->routingRules[2]->redirect->enableReplacePrefix);
|
||||
$this->assertEquals('http', $result->websiteConfiguration->routingRules->routingRules[2]->redirect->protocol);
|
||||
$this->assertEquals('example.com', $result->websiteConfiguration->routingRules->routingRules[2]->redirect->hostName);
|
||||
|
||||
$body = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><WebsiteConfiguration><IndexDocument><Suffix>index.html</Suffix><SupportSubDir>true</SupportSubDir><Type>0</Type></IndexDocument><ErrorDocument><Key>error.html</Key><HttpStatus>404</HttpStatus></ErrorDocument><RoutingRules><RoutingRule><Redirect><MirrorPassOriginalSlashes>false</MirrorPassOriginalSlashes><RedirectType>Mirror</RedirectType><MirrorURL>http://example.com/</MirrorURL><MirrorPassQueryString>true</MirrorPassQueryString><MirrorCheckMd5>true</MirrorCheckMd5><MirrorSNI>true</MirrorSNI><ReplaceKeyPrefixWith>def/</ReplaceKeyPrefixWith><MirrorFollowRedirect>true</MirrorFollowRedirect><HostName>example.com</HostName><MirrorHeaders><Pass>myheader-key1</Pass><Pass>myheader-key2</Pass><Set><Key>myheader-key5</Key><Value>myheader-value5</Value></Set><PassAll>true</PassAll></MirrorHeaders><PassQueryString>true</PassQueryString><EnableReplacePrefix>true</EnableReplacePrefix><HttpRedirectCode>301</HttpRedirectCode><MirrorURLSlave>http://example.com/</MirrorURLSlave><MirrorSaveOssMeta>true</MirrorSaveOssMeta><MirrorProxyPass>false</MirrorProxyPass><MirrorAllowGetImageInfo>true</MirrorAllowGetImageInfo><MirrorAllowVideoSnapshot>false</MirrorAllowVideoSnapshot><MirrorIsExpressTunnel>true</MirrorIsExpressTunnel><MirrorDstRegion>cn-hangzhou</MirrorDstRegion><MirrorDstVpcId>vpc-test-id</MirrorDstVpcId><MirrorDstSlaveVpcId>vpc-test-id</MirrorDstSlaveVpcId><MirrorUserLastModified>false</MirrorUserLastModified><MirrorSwitchAllErrors>true</MirrorSwitchAllErrors><MirrorTunnelId>test-tunnel-id</MirrorTunnelId><MirrorUsingRole>false</MirrorUsingRole><MirrorRole>aliyun-test-role</MirrorRole><MirrorAllowHeadObject>true</MirrorAllowHeadObject><TransparentMirrorResponseCodes>400</TransparentMirrorResponseCodes><MirrorAsyncStatus>303</MirrorAsyncStatus><MirrorTaggings><Taggings><Value>v</Value><Key>k</Key></Taggings></MirrorTaggings><MirrorReturnHeaders><ReturnHeader><Key>k</Key><Value>v</Value></ReturnHeader></MirrorReturnHeaders><MirrorAuth><AuthType>S3V4</AuthType><Region>ap-southeast-1</Region><AccessKeyId>TESTAK</AccessKeyId><AccessKeySecret>TESTSK</AccessKeySecret></MirrorAuth><MirrorMultiAlternates><MirrorMultiAlternate><MirrorMultiAlternateNumber>32</MirrorMultiAlternateNumber><MirrorMultiAlternateURL>https://test-multi-alter.example.com</MirrorMultiAlternateURL><MirrorMultiAlternateVpcId>vpc-test-id</MirrorMultiAlternateVpcId><MirrorMultiAlternateDstRegion>ap-southeast-1</MirrorMultiAlternateDstRegion></MirrorMultiAlternate></MirrorMultiAlternates></Redirect><RuleNumber>1</RuleNumber><Condition><KeyPrefixEquals>abc/</KeyPrefixEquals><KeySuffixEquals>.txt</KeySuffixEquals><HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals></Condition><LuaConfig><Script>test.lua</Script></LuaConfig></RoutingRule><RoutingRule><Redirect><RedirectType>AliCDN</RedirectType><MirrorURL>http://example.com/</MirrorURL><MirrorPassQueryString>true</MirrorPassQueryString><MirrorCheckMd5>true</MirrorCheckMd5><MirrorSNI>true</MirrorSNI><Protocol>http</Protocol><MirrorFollowRedirect>true</MirrorFollowRedirect><MirrorHeaders><Pass>myheader-key1</Pass><Pass>myheader-key2</Pass><Set><Key>myheader-key5</Key><Value>myheader-value5</Value></Set><PassAll>true</PassAll></MirrorHeaders><PassQueryString>true</PassQueryString><ReplaceKeyWith>abc</ReplaceKeyWith></Redirect><RuleNumber>2</RuleNumber><Condition><KeyPrefixEquals>abc/</KeyPrefixEquals><KeySuffixEquals>.txt</KeySuffixEquals><HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals></Condition><LuaConfig><Script>test.lua</Script></LuaConfig></RoutingRule></RoutingRules></WebsiteConfiguration>
|
||||
BBB;
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123'],
|
||||
Utils::streamFor($body)
|
||||
);
|
||||
$result = BucketWebsite::toGetBucketWebsite($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('index.html', $result->websiteConfiguration->indexDocument->suffix);
|
||||
$this->assertTrue($result->websiteConfiguration->indexDocument->supportSubDir);
|
||||
$this->assertEquals(0, $result->websiteConfiguration->indexDocument->type);
|
||||
$this->assertEquals('error.html', $result->websiteConfiguration->errorDocument->key);
|
||||
$this->assertEquals('404', $result->websiteConfiguration->errorDocument->httpStatus);
|
||||
$this->assertEquals(2, count($result->websiteConfiguration->routingRules->routingRules));
|
||||
$this->assertEquals(1, $result->websiteConfiguration->routingRules->routingRules[0]->ruleNumber);
|
||||
$this->assertEquals('abc/', $result->websiteConfiguration->routingRules->routingRules[0]->condition->keyPrefixEquals);
|
||||
$this->assertEquals('.txt', $result->websiteConfiguration->routingRules->routingRules[0]->condition->keySuffixEquals);
|
||||
$this->assertEquals(404, $result->websiteConfiguration->routingRules->routingRules[0]->condition->httpErrorCodeReturnedEquals);
|
||||
|
||||
$this->assertEquals('Mirror', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->redirectType);
|
||||
$this->assertFalse($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorPassOriginalSlashes);
|
||||
$this->assertEquals('http://example.com/', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorURL);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorPassQueryString);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorCheckMd5);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorSNI);
|
||||
$this->assertEquals('def/', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->replaceKeyPrefixWith);
|
||||
$this->assertEquals('example.com', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->hostName);
|
||||
$this->assertEquals('myheader-key1', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorHeaders->passs[0]);
|
||||
$this->assertEquals('myheader-key2', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorHeaders->passs[1]);
|
||||
$this->assertEquals('myheader-key5', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorHeaders->sets[0]->key);
|
||||
$this->assertEquals('myheader-value5', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorHeaders->sets[0]->value);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorHeaders->passAll);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->passQueryString);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->enableReplacePrefix);
|
||||
$this->assertEquals(301, $result->websiteConfiguration->routingRules->routingRules[0]->redirect->httpRedirectCode);
|
||||
$this->assertEquals('http://example.com/', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorURLSlave);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorSaveOssMeta);
|
||||
$this->assertFalse($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorProxyPass);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorAllowGetImageInfo);
|
||||
$this->assertFalse($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorAllowVideoSnapshot);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorIsExpressTunnel);
|
||||
$this->assertEquals('cn-hangzhou', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorDstRegion);
|
||||
$this->assertEquals('vpc-test-id', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorDstVpcId);
|
||||
$this->assertEquals('vpc-test-id', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorDstSlaveVpcId);
|
||||
$this->assertFalse($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorUserLastModified);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorSwitchAllErrors);
|
||||
$this->assertEquals('test-tunnel-id', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorTunnelId);
|
||||
$this->assertFalse($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorUsingRole);
|
||||
$this->assertEquals('aliyun-test-role', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorRole);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorAllowHeadObject);
|
||||
$this->assertEquals("400", $result->websiteConfiguration->routingRules->routingRules[0]->redirect->transparentMirrorResponseCodes);
|
||||
$this->assertEquals(303, $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorAsyncStatus);
|
||||
$this->assertEquals('k', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorTaggings->taggings[0]->key);
|
||||
$this->assertEquals('v', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorTaggings->taggings[0]->value);
|
||||
$this->assertEquals('k', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorReturnHeaders->returnHeaders[0]->key);
|
||||
$this->assertEquals('v', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorReturnHeaders->returnHeaders[0]->value);
|
||||
$this->assertEquals('S3V4', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorAuth->authType);
|
||||
$this->assertEquals('ap-southeast-1', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorAuth->region);
|
||||
$this->assertEquals('TESTAK', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorAuth->accessKeyId);
|
||||
$this->assertEquals('TESTSK', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorAuth->accessKeySecret);
|
||||
$this->assertEquals(32, $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorMultiAlternates->mirrorMultiAlternates[0]->mirrorMultiAlternateNumber);
|
||||
$this->assertEquals('https://test-multi-alter.example.com', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorMultiAlternates->mirrorMultiAlternates[0]->mirrorMultiAlternateURL);
|
||||
$this->assertEquals('vpc-test-id', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorMultiAlternates->mirrorMultiAlternates[0]->mirrorMultiAlternateVpcId);
|
||||
$this->assertEquals('ap-southeast-1', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorMultiAlternates->mirrorMultiAlternates[0]->mirrorMultiAlternateDstRegion);
|
||||
$this->assertEquals('test.lua', $result->websiteConfiguration->routingRules->routingRules[0]->luaConfig->script);
|
||||
|
||||
|
||||
$this->assertEquals(2, $result->websiteConfiguration->routingRules->routingRules[1]->ruleNumber);
|
||||
|
||||
$this->assertEquals('abc/', $result->websiteConfiguration->routingRules->routingRules[1]->condition->keyPrefixEquals);
|
||||
$this->assertEquals('.txt', $result->websiteConfiguration->routingRules->routingRules[1]->condition->keySuffixEquals);
|
||||
$this->assertEquals(404, $result->websiteConfiguration->routingRules->routingRules[1]->condition->httpErrorCodeReturnedEquals);
|
||||
|
||||
$this->assertEquals('AliCDN', $result->websiteConfiguration->routingRules->routingRules[1]->redirect->redirectType);
|
||||
$this->assertEquals('http', $result->websiteConfiguration->routingRules->routingRules[1]->redirect->protocol);
|
||||
$this->assertEquals('test.lua', $result->websiteConfiguration->routingRules->routingRules[0]->luaConfig->script);
|
||||
$this->assertEquals('http://example.com/', $result->websiteConfiguration->routingRules->routingRules[0]->redirect->mirrorURL);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[1]->redirect->mirrorPassQueryString);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[1]->redirect->mirrorCheckMd5);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[1]->redirect->mirrorSNI);
|
||||
$this->assertEquals('myheader-key1', $result->websiteConfiguration->routingRules->routingRules[1]->redirect->mirrorHeaders->passs[0]);
|
||||
$this->assertEquals('myheader-key2', $result->websiteConfiguration->routingRules->routingRules[1]->redirect->mirrorHeaders->passs[1]);
|
||||
$this->assertEquals('myheader-key5', $result->websiteConfiguration->routingRules->routingRules[1]->redirect->mirrorHeaders->sets[0]->key);
|
||||
$this->assertEquals('myheader-value5', $result->websiteConfiguration->routingRules->routingRules[1]->redirect->mirrorHeaders->sets[0]->value);
|
||||
$this->assertTrue($result->websiteConfiguration->routingRules->routingRules[1]->redirect->mirrorHeaders->passAll);
|
||||
}
|
||||
|
||||
public function testFromDeleteBucketWebsite()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\DeleteBucketWebsiteRequest();
|
||||
$input = BucketWebsite::fromDeleteBucketWebsite($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\DeleteBucketWebsiteRequest('bucket-123');
|
||||
$input = BucketWebsite::fromDeleteBucketWebsite($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToDeleteBucketWebsite()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketWebsite::toDeleteBucketWebsite($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketWebsite::toDeleteBucketWebsite($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
276
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketWormTest.php
vendored
Normal file
276
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/BucketWormTest.php
vendored
Normal file
@@ -0,0 +1,276 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\BucketWorm;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class BucketWormTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromInitiateBucketWorm()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\InitiateBucketWormRequest();
|
||||
$input = BucketWorm::fromInitiateBucketWorm($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\InitiateBucketWormRequest('bucket-123');
|
||||
$input = BucketWorm::fromInitiateBucketWorm($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, initiateWormConfiguration", (string)$e);
|
||||
}
|
||||
|
||||
// all settings
|
||||
$request = new Models\InitiateBucketWormRequest(
|
||||
bucket: 'bucket-123',
|
||||
initiateWormConfiguration: new Models\InitiateWormConfiguration(retentionPeriodInDays: 3)
|
||||
);
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><InitiateWormConfiguration><RetentionPeriodInDays>3</RetentionPeriodInDays></InitiateWormConfiguration>
|
||||
BBB;
|
||||
|
||||
$input = BucketWorm::fromInitiateBucketWorm($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
$this->assertEquals('application/xml', $input->getHeaders()['content-type']);
|
||||
$this->assertEquals(base64_encode(md5($input->getBody(), true)), $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToInitiateBucketWorm()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketWorm::toInitiateBucketWorm($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'x-oss-worm-id' => '234']
|
||||
);
|
||||
$result = BucketWorm::toInitiateBucketWorm($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals('234', $result->wormId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromAbortBucketWorm()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\AbortBucketWormRequest();
|
||||
$input = BucketWorm::fromAbortBucketWorm($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\AbortBucketWormRequest('bucket-123');
|
||||
$input = BucketWorm::fromAbortBucketWorm($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToAbortBucketWorm()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketWorm::toAbortBucketWorm($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'No Content',
|
||||
204,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketWorm::toAbortBucketWorm($output);
|
||||
$this->assertEquals('No Content', $result->status);
|
||||
$this->assertEquals(204, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromCompleteBucketWorm()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\CompleteBucketWormRequest();
|
||||
$input = BucketWorm::fromCompleteBucketWorm($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\CompleteBucketWormRequest('bucket-123');
|
||||
$input = BucketWorm::fromCompleteBucketWorm($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, wormId", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\CompleteBucketWormRequest('bucket-123', 'wormId-123');
|
||||
$input = BucketWorm::fromCompleteBucketWorm($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('wormId-123', $input->getParameters()['wormId']);
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToCompleteBucketWorm()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketWorm::toCompleteBucketWorm($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketWorm::toCompleteBucketWorm($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromExtendBucketWorm()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\ExtendBucketWormRequest();
|
||||
$input = BucketWorm::fromExtendBucketWorm($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\ExtendBucketWormRequest('bucket-123');
|
||||
$input = BucketWorm::fromExtendBucketWorm($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, wormId", (string)$e);
|
||||
}
|
||||
|
||||
try {
|
||||
$request = new Models\ExtendBucketWormRequest('bucket-123', 'wormId-123');
|
||||
$input = BucketWorm::fromExtendBucketWorm($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString($e->getMessage(), "missing required field, extendWormConfiguration.", (string)$e);
|
||||
}
|
||||
|
||||
$xml = <<<BBB
|
||||
<?xml version="1.0" encoding="UTF-8"?><ExtendWormConfiguration><RetentionPeriodInDays>3</RetentionPeriodInDays></ExtendWormConfiguration>
|
||||
BBB;
|
||||
$request = new Models\ExtendBucketWormRequest('bucket-123', 'wormId-123', new Models\ExtendWormConfiguration(3));
|
||||
$input = BucketWorm::fromExtendBucketWorm($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('wormId-123', $input->getParameters()['wormId']);
|
||||
$this->assertEquals($xml, $this->cleanXml($input->getBody()->getContents()));
|
||||
$this->assertEquals(base64_encode(md5($input->getBody(), true)), $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToExtendBucketWorm()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketWorm::toExtendBucketWorm($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123']
|
||||
);
|
||||
$result = BucketWorm::toCompleteBucketWorm($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(1, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
}
|
||||
|
||||
public function testFromGetBucketWorm()
|
||||
{
|
||||
// miss required field
|
||||
try {
|
||||
$request = new Models\GetBucketWormRequest();
|
||||
$input = BucketWorm::fromGetBucketWorm($request);
|
||||
$this->assertTrue(false, "should not here");
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString("missing required field, bucket", (string)$e);
|
||||
}
|
||||
|
||||
$request = new Models\GetBucketWormRequest('bucket-123');
|
||||
$input = BucketWorm::fromGetBucketWorm($request);
|
||||
$this->assertEquals('bucket-123', $input->getBucket());
|
||||
$this->assertEquals('1B2M2Y8AsgTpgAmY7PhCfg==', $input->getHeaders()['content-md5']);
|
||||
}
|
||||
|
||||
public function testToGetBucketWorm()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = BucketWorm::toGetBucketWorm($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
Utils::streamFor('<WormConfiguration>
|
||||
<WormId>1666E2CFB2B3418****</WormId>
|
||||
<State>Locked</State>
|
||||
<RetentionPeriodInDays>1</RetentionPeriodInDays>
|
||||
<CreationDate>2020-10-15T15:50:32</CreationDate>
|
||||
</WormConfiguration>')
|
||||
);
|
||||
$result = BucketWorm::toGetBucketWorm($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertCount(2, $result->headers);
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('1666E2CFB2B3418****', $result->wormConfiguration->wormId);
|
||||
$this->assertEquals('Locked', $result->wormConfiguration->state);
|
||||
$this->assertEquals(1, $result->wormConfiguration->retentionPeriodInDays);
|
||||
$this->assertEquals("2020-10-15T15:50:32", $result->wormConfiguration->creationDate);
|
||||
}
|
||||
|
||||
private function cleanXml($xml): array|string
|
||||
{
|
||||
return str_replace("\n", "", str_replace("\r", "", $xml));
|
||||
}
|
||||
}
|
||||
85
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/CloudBoxesTest.php
vendored
Normal file
85
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/CloudBoxesTest.php
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Models;
|
||||
use AlibabaCloud\Oss\V2\Transform\CloudBoxes;
|
||||
use AlibabaCloud\Oss\V2\OperationOutput;
|
||||
use AlibabaCloud\Oss\V2\Utils;
|
||||
|
||||
class CloudBoxesTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testFromListCloudBoxes()
|
||||
{
|
||||
$request = new Models\ListCloudBoxesRequest();
|
||||
$input = CloudBoxes::fromListCloudBoxes($request);
|
||||
|
||||
$request = new Models\ListCloudBoxesRequest(marker: '', maxKeys: 10, prefix: '/');
|
||||
$input = CloudBoxes::fromListCloudBoxes($request);
|
||||
$this->assertEquals('', $input->getParameters()['cloudboxes']);
|
||||
$this->assertEquals('', $input->getParameters()['marker']);
|
||||
$this->assertEquals('10', $input->getParameters()['max-keys']);
|
||||
$this->assertEquals('/', $input->getParameters()['prefix']);
|
||||
}
|
||||
|
||||
public function testToListCloudBoxes()
|
||||
{
|
||||
// empty output
|
||||
$output = new OperationOutput();
|
||||
$result = CloudBoxes::toListCloudBoxes($output);
|
||||
$this->assertEquals('', $result->status);
|
||||
$this->assertEquals(0, $result->statusCode);
|
||||
$this->assertEquals('', $result->requestId);
|
||||
$this->assertEquals(0, count($result->headers));
|
||||
|
||||
$body = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListCloudBoxResult>
|
||||
<Owner>
|
||||
<ID>51264</ID>
|
||||
<DisplayName>51264</DisplayName>
|
||||
</Owner>
|
||||
<CloudBoxes>
|
||||
<CloudBox>
|
||||
<ID>cb-f8z7yvzgwfkl9q0h****</ID>
|
||||
<Name>bucket1</Name>
|
||||
<Region>cn-shanghai</Region>
|
||||
<ControlEndpoint>cb-f8z7yvzgwfkl9q0h****.cn-shanghai.oss-cloudbox-control.aliyuncs.com</ControlEndpoint>
|
||||
<DataEndpoint>cb-f8z7yvzgwfkl9q0h****.cn-shanghai.oss-cloudbox.aliyuncs.com</DataEndpoint>
|
||||
</CloudBox>
|
||||
<CloudBox>
|
||||
<ID>cb-f9z7yvzgwfkl9q0h****</ID>
|
||||
<Name>bucket2</Name>
|
||||
<Region>cn-hangzhou</Region>
|
||||
<ControlEndpoint>cb-f9z7yvzgwfkl9q0h****.cn-hangzhou.oss-cloudbox-control.aliyuncs.com</ControlEndpoint>
|
||||
<DataEndpoint>cb-f9z7yvzgwfkl9q0h****.cn-hangzhou.oss-cloudbox.aliyuncs.com</DataEndpoint>
|
||||
</CloudBox>
|
||||
</CloudBoxes>
|
||||
</ListCloudBoxResult>';
|
||||
$output = new OperationOutput(
|
||||
'OK',
|
||||
200,
|
||||
['x-oss-request-id' => '123', 'content-type' => 'application/xml'],
|
||||
body: Utils::streamFor($body)
|
||||
);
|
||||
$result = CloudBoxes::toListCloudBoxes($output);
|
||||
$this->assertEquals('OK', $result->status);
|
||||
$this->assertEquals(200, $result->statusCode);
|
||||
$this->assertEquals('123', $result->requestId);
|
||||
$this->assertEquals(2, count($result->headers));
|
||||
$this->assertEquals('123', $result->headers['x-oss-request-id']);
|
||||
$this->assertEquals('application/xml', $result->headers['content-type']);
|
||||
$this->assertEquals('51264', $result->listCloudBoxes->owner->id);
|
||||
$this->assertEquals('51264', $result->listCloudBoxes->owner->displayName);
|
||||
$this->assertEquals(2, count($result->listCloudBoxes->cloudBoxes->cloudBox));
|
||||
$this->assertEquals('cb-f8z7yvzgwfkl9q0h****', $result->listCloudBoxes->cloudBoxes->cloudBox[0]->id);
|
||||
$this->assertEquals('cb-f8z7yvzgwfkl9q0h****.cn-shanghai.oss-cloudbox.aliyuncs.com', $result->listCloudBoxes->cloudBoxes->cloudBox[0]->dataEndpoint);
|
||||
$this->assertEquals('cb-f8z7yvzgwfkl9q0h****.cn-shanghai.oss-cloudbox-control.aliyuncs.com', $result->listCloudBoxes->cloudBoxes->cloudBox[0]->controlEndpoint);
|
||||
$this->assertEquals('bucket1', $result->listCloudBoxes->cloudBoxes->cloudBox[0]->name);
|
||||
$this->assertEquals('cn-shanghai', $result->listCloudBoxes->cloudBoxes->cloudBox[0]->region);
|
||||
$this->assertEquals('cb-f9z7yvzgwfkl9q0h****', $result->listCloudBoxes->cloudBoxes->cloudBox[1]->id);
|
||||
$this->assertEquals('cb-f9z7yvzgwfkl9q0h****.cn-hangzhou.oss-cloudbox.aliyuncs.com', $result->listCloudBoxes->cloudBoxes->cloudBox[1]->dataEndpoint);
|
||||
$this->assertEquals('cb-f9z7yvzgwfkl9q0h****.cn-hangzhou.oss-cloudbox-control.aliyuncs.com', $result->listCloudBoxes->cloudBoxes->cloudBox[1]->controlEndpoint);
|
||||
$this->assertEquals('bucket2', $result->listCloudBoxes->cloudBoxes->cloudBox[1]->name);
|
||||
$this->assertEquals('cn-hangzhou', $result->listCloudBoxes->cloudBoxes->cloudBox[1]->region);
|
||||
}
|
||||
}
|
||||
105
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/FunctionsTest.php
vendored
Normal file
105
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/FunctionsTest.php
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
namespace UnitTests\Transform;
|
||||
|
||||
use AlibabaCloud\Oss\V2\Transform\Functions;
|
||||
use AlibabaCloud\Oss\V2\Exception;
|
||||
|
||||
class FunctionsTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testAssertFieldRequired()
|
||||
{
|
||||
try {
|
||||
Functions::assertFieldRequired('field', null);
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->assertStringContainsString('missing required field, field', $e);
|
||||
}
|
||||
|
||||
Functions::assertFieldRequired('field', 'hello world');
|
||||
}
|
||||
|
||||
public function testAssertXmlRoot()
|
||||
{
|
||||
try {
|
||||
Functions::assertXmlRoot('', '');
|
||||
} catch (Exception\DeserializationExecption $e) {
|
||||
$this->assertStringContainsString('Not found tag', $e);
|
||||
}
|
||||
|
||||
try {
|
||||
Functions::assertXmlRoot('<Root></Root>', '');
|
||||
} catch (Exception\DeserializationExecption $e) {
|
||||
$this->assertStringContainsString('Not found tag', $e);
|
||||
}
|
||||
|
||||
try {
|
||||
Functions::assertXmlRoot('<Root></Root>', '123');
|
||||
} catch (Exception\DeserializationExecption $e) {
|
||||
$this->assertStringContainsString('Not found tag', $e);
|
||||
}
|
||||
|
||||
Functions::assertXmlRoot('<Root></Root>', 'Root');
|
||||
Functions::assertXmlRoot('<Root xmlns="http://doc.oss-cn-hangzhou.aliyuncs.com"></Root>', 'Root');
|
||||
Functions::assertXmlRoot('<Root any char></Root>', 'Root');
|
||||
|
||||
$str = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<RootConfiguration>
|
||||
<Id>str1</Id>
|
||||
<Text>str2</Text>
|
||||
<SubConfiguration>
|
||||
<StrField>str-sub</StrField>
|
||||
<IntField>1234</IntField>
|
||||
</SubConfiguration>
|
||||
</RootConfiguration>';
|
||||
try {
|
||||
Functions::assertXmlRoot($str, 'Configuration');
|
||||
$this->assertTrue(false, 'should not here');
|
||||
} catch (Exception\DeserializationExecption $e) {
|
||||
$this->assertStringContainsString('Not found tag', $e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function testtryToDatetime()
|
||||
{
|
||||
$elem = new \SimpleXMLElement('<Root><Data>2023-12-17T03:30:09Z</Data><Data1>invalid value</Data1></Root>');
|
||||
$this->assertNull(Functions::tryToDatetime($elem->NoNode));
|
||||
$this->assertNull(Functions::tryToDatetime($elem->Data1));
|
||||
$datetimeUtc = new \DateTime();
|
||||
$datetimeUtc->setTimestamp(1702783809);
|
||||
$this->assertEquals($datetimeUtc, Functions::tryToDatetime($elem->Data));
|
||||
}
|
||||
|
||||
public function testtryToBool()
|
||||
{
|
||||
$elem = new \SimpleXMLElement('<Root><Data>True</Data><Data1>true</Data1><Data2>false</Data2><DataEmpty></DataEmpty></Root>');
|
||||
$this->assertNull(Functions::tryToBool($elem->NoNode));
|
||||
$this->assertEquals(true, Functions::tryToBool($elem->Data));
|
||||
$this->assertEquals(true, Functions::tryToBool($elem->Data1));
|
||||
$this->assertEquals(false, Functions::tryToBool($elem->Data2));
|
||||
$this->assertNotNull(Functions::tryToBool($elem->DataEmpty));
|
||||
$this->assertEquals(false, Functions::tryToBool($elem->DataEmpty));
|
||||
}
|
||||
|
||||
public function testtryToInt()
|
||||
{
|
||||
$elem = new \SimpleXMLElement('<Root><Data>123</Data><Data1>0</Data1><Data2>invalid value</Data2><DataEmpty></DataEmpty></Root>');
|
||||
$this->assertNull(Functions::tryToInt($elem->NoNode));
|
||||
$this->assertEquals(123, Functions::tryToInt($elem->Data));
|
||||
$this->assertEquals(0, Functions::tryToInt($elem->Data1));
|
||||
$this->assertEquals(0, Functions::tryToInt($elem->Data2));
|
||||
$this->assertNotNull(Functions::tryToInt($elem->DataEmpty));
|
||||
$this->assertEquals(0, Functions::tryToInt($elem->DataEmpty));
|
||||
}
|
||||
|
||||
public function testtryToString()
|
||||
{
|
||||
$elem = new \SimpleXMLElement('<Root><Data>123</Data><Data1>0</Data1><Data2></Data2></Root>');
|
||||
$this->assertNull(Functions::tryToString($elem->NoNode));
|
||||
$this->assertEquals('123', Functions::tryToString($elem->Data));
|
||||
$this->assertEquals('0', Functions::tryToString($elem->Data1));
|
||||
$this->assertNotNull(Functions::tryToString($elem->Data2));
|
||||
$this->assertEquals('', Functions::tryToString($elem->Data2));
|
||||
}
|
||||
}
|
||||
2903
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/ObjectBasicTest.php
vendored
Normal file
2903
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/ObjectBasicTest.php
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1121
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/ObjectMultipartTest.php
vendored
Normal file
1121
vendor/alibabacloud/oss-v2/tests/UnitTests/Transform/ObjectMultipartTest.php
vendored
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user