http://www.b.com
http://www.a.com
http://www.a.com
GET
PUT
POST
x-oss-test
x-oss-test2
x-oss-test2
x-oss-test3
x-oss-test1
x-oss-test1
x-oss-test2
10
http://www.b.com
GET
x-oss-test
x-oss-test1
110
BBBB;
private $validXml2 = <<
http://www.b.com
http://www.a.com
http://www.a.com
GET
PUT
POST
x-oss-test
x-oss-test2
x-oss-test2
x-oss-test3
x-oss-test1
x-oss-test1
x-oss-test2
10
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));
}
}