723 lines
28 KiB
PHP
723 lines
28 KiB
PHP
<?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']);
|
|
}
|
|
}
|