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 = 'index.htmltrue0error.html404Mirrorhttp://example.com/truetruetruemyheader-key1myheader-key2myheader-key5myheader-value5truetrue1abc/404AliCDNhttpprefix/${key}.suffixexample.comfalse3012abc/404hosttest.oss-cn-beijing-internal.aliyuncs.comExternalhttpprefix/${key}example.comfalsefalse3023404';
$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 = <<index.htmltrue0error.html404falseMirrorhttp://example.com/truetruetruedef/trueexample.commyheader-key1myheader-key2myheader-key5myheader-value5truetruetrue301http://example.com/truefalsetruefalsetruecn-hangzhouvpc-test-idvpc-test-idfalsetruetest-tunnel-idfalsealiyun-test-roletrue400303vkkvS3V4ap-southeast-1TESTAKTESTSK32https://test-multi-alter.example.comvpc-test-idap-southeast-11abc/.txt404AliCDNhttp://example.com/truetruetruehttptruemyheader-key1myheader-key2myheader-key5myheader-value5truetrueabc2abc/.txt404
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 = <<index.htmltrue0error.html404
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 = '
index.html
error.html
404
';
$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 = '
index.html
true
0
error.html
404
1
abc/
404
Mirror
true
http://example.com/
true
true
false
true
myheader-key1
myheader-key2
myheader-key3
myheader-key4
myheader-key5
myheader-value5
2
abc/
404
host
test.oss-cn-beijing-internal.aliyuncs.com
AliCDN
http
example.com
false
prefix/${key}.suffix
301
404
3
prefix/${key}
302
false
false
http
example.com
External
';
$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 = <<index.htmltrue0error.html404falseMirrorhttp://example.com/truetruetruedef/trueexample.commyheader-key1myheader-key2myheader-key5myheader-value5truetruetrue301http://example.com/truefalsetruefalsetruecn-hangzhouvpc-test-idvpc-test-idfalsetruetest-tunnel-idfalsealiyun-test-roletrue400303vkkvS3V4ap-southeast-1TESTAKTESTSK32https://test-multi-alter.example.comvpc-test-idap-southeast-11abc/.txt404AliCDNhttp://example.com/truetruetruehttptruemyheader-key1myheader-key2myheader-key5myheader-value5truetrueabc2abc/.txt404
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));
}
}