123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <?php
- namespace OSS\Tests;
- use OSS\Model\CorsConfig;
- use OSS\Model\CorsRule;
- use OSS\Core\OssException;
- class CorsConfigTest extends \PHPUnit\Framework\TestCase
- {
- private $validXml = <<<BBBB
- <?xml version="1.0" encoding="utf-8"?>
- <CORSConfiguration>
- <CORSRule>
- <AllowedOrigin>http://www.b.com</AllowedOrigin>
- <AllowedOrigin>http://www.a.com</AllowedOrigin>
- <AllowedOrigin>http://www.a.com</AllowedOrigin>
- <AllowedMethod>GET</AllowedMethod>
- <AllowedMethod>PUT</AllowedMethod>
- <AllowedMethod>POST</AllowedMethod>
- <AllowedHeader>x-oss-test</AllowedHeader>
- <AllowedHeader>x-oss-test2</AllowedHeader>
- <AllowedHeader>x-oss-test2</AllowedHeader>
- <AllowedHeader>x-oss-test3</AllowedHeader>
- <ExposeHeader>x-oss-test1</ExposeHeader>
- <ExposeHeader>x-oss-test1</ExposeHeader>
- <ExposeHeader>x-oss-test2</ExposeHeader>
- <MaxAgeSeconds>10</MaxAgeSeconds>
- </CORSRule>
- <CORSRule>
- <AllowedOrigin>http://www.b.com</AllowedOrigin>
- <AllowedMethod>GET</AllowedMethod>
- <AllowedHeader>x-oss-test</AllowedHeader>
- <ExposeHeader>x-oss-test1</ExposeHeader>
- <MaxAgeSeconds>110</MaxAgeSeconds>
- </CORSRule>
- </CORSConfiguration>
- BBBB;
- private $validXml2 = <<<BBBB
- <?xml version="1.0" encoding="utf-8"?>
- <CORSConfiguration>
- <CORSRule>
- <AllowedOrigin>http://www.b.com</AllowedOrigin>
- <AllowedOrigin>http://www.a.com</AllowedOrigin>
- <AllowedOrigin>http://www.a.com</AllowedOrigin>
- <AllowedMethod>GET</AllowedMethod>
- <AllowedMethod>PUT</AllowedMethod>
- <AllowedMethod>POST</AllowedMethod>
- <AllowedHeader>x-oss-test</AllowedHeader>
- <AllowedHeader>x-oss-test2</AllowedHeader>
- <AllowedHeader>x-oss-test2</AllowedHeader>
- <AllowedHeader>x-oss-test3</AllowedHeader>
- <ExposeHeader>x-oss-test1</ExposeHeader>
- <ExposeHeader>x-oss-test1</ExposeHeader>
- <ExposeHeader>x-oss-test2</ExposeHeader>
- <MaxAgeSeconds>10</MaxAgeSeconds>
- </CORSRule>
- </CORSConfiguration>
- BBBB;
- public function testParseValidXml()
- {
- $corsConfig = new CorsConfig();
- $corsConfig->parseFromXml($this->validXml);
- $this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml($corsConfig->serializeToXml()));
- $this->assertNotNull($corsConfig->getRules());
- $rules = $corsConfig->getRules();
- $this->assertNotNull($rules[0]->getAllowedHeaders());
- $this->assertNotNull($rules[0]->getAllowedMethods());
- $this->assertNotNull($rules[0]->getAllowedOrigins());
- $this->assertNotNull($rules[0]->getExposeHeaders());
- $this->assertNotNull($rules[0]->getMaxAgeSeconds());
- }
- public function testParseValidXml2()
- {
- $corsConfig = new CorsConfig();
- $corsConfig->parseFromXml($this->validXml2);
- $this->assertEquals($this->cleanXml($this->validXml2), $this->cleanXml($corsConfig->serializeToXml()));
- }
- public function testCreateCorsConfigFromMoreThan10Rules()
- {
- $corsConfig = new CorsConfig();
- $rule = new CorsRule();
- for ($i = 0; $i < CorsConfig::OSS_MAX_RULES; $i += 1) {
- $corsConfig->addRule($rule);
- }
- try {
- $corsConfig->addRule($rule);
- $this->assertFalse(true);
- } catch (OssException $e) {
- $this->assertEquals($e->getMessage(), "num of rules in the config exceeds self::OSS_MAX_RULES: " . strval(CorsConfig::OSS_MAX_RULES));
- }
- }
- public function testCreateCorsConfigParamAbsent()
- {
- $corsConfig = new CorsConfig();
- $rule = new CorsRule();
- $corsConfig->addRule($rule);
- try {
- $xml = $corsConfig->serializeToXml();
- $this->assertFalse(true);
- } catch (OssException $e) {
- $this->assertEquals($e->getMessage(), "maxAgeSeconds is not set in the Rule");
- }
- }
- public function testCreateCorsConfigFromScratch()
- {
- $corsConfig = new CorsConfig();
- $rule = new CorsRule();
- $rule->addAllowedHeader("x-oss-test");
- $rule->addAllowedHeader("x-oss-test2");
- $rule->addAllowedHeader("x-oss-test2");
- $rule->addAllowedHeader("x-oss-test3");
- $rule->addAllowedOrigin("http://www.b.com");
- $rule->addAllowedOrigin("http://www.a.com");
- $rule->addAllowedOrigin("http://www.a.com");
- $rule->addAllowedMethod("GET");
- $rule->addAllowedMethod("PUT");
- $rule->addAllowedMethod("POST");
- $rule->addExposeHeader("x-oss-test1");
- $rule->addExposeHeader("x-oss-test1");
- $rule->addExposeHeader("x-oss-test2");
- $rule->setMaxAgeSeconds(10);
- $corsConfig->addRule($rule);
- $this->assertEquals($this->cleanXml($this->validXml2), $this->cleanXml($corsConfig->serializeToXml()));
- $this->assertEquals($this->cleanXml($this->validXml2), $this->cleanXml(strval($corsConfig)));
- }
- private function cleanXml($xml)
- {
- return str_replace("\n", "", str_replace("\r", "", $xml));
- }
- }
|