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)); } }