78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace OSS\Tests;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use OSS\Model\CnameConfig;
							 | 
						||
| 
								 | 
							
								use OSS\Core\OssException;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class CnameConfigTest extends \PHPUnit\Framework\TestCase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    private $xml1 = <<<BBBB
							 | 
						||
| 
								 | 
							
								<?xml version="1.0" encoding="utf-8"?>
							 | 
						||
| 
								 | 
							
								<BucketCnameConfiguration>
							 | 
						||
| 
								 | 
							
								  <Cname>
							 | 
						||
| 
								 | 
							
								    <Domain>www.foo.com</Domain>
							 | 
						||
| 
								 | 
							
								    <Status>enabled</Status>
							 | 
						||
| 
								 | 
							
								    <LastModified>20150101</LastModified>
							 | 
						||
| 
								 | 
							
								  </Cname>
							 | 
						||
| 
								 | 
							
								  <Cname>
							 | 
						||
| 
								 | 
							
								    <Domain>bar.com</Domain>
							 | 
						||
| 
								 | 
							
								    <Status>disabled</Status>
							 | 
						||
| 
								 | 
							
								    <LastModified>20160101</LastModified>
							 | 
						||
| 
								 | 
							
								  </Cname>
							 | 
						||
| 
								 | 
							
								</BucketCnameConfiguration>
							 | 
						||
| 
								 | 
							
								BBBB;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testFromXml()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $cnameConfig = new CnameConfig();
							 | 
						||
| 
								 | 
							
								        $cnameConfig->parseFromXml($this->xml1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $cnames = $cnameConfig->getCnames();
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(2, count($cnames));
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('www.foo.com', $cnames[0]['Domain']);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('enabled', $cnames[0]['Status']);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('20150101', $cnames[0]['LastModified']);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('bar.com', $cnames[1]['Domain']);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('disabled', $cnames[1]['Status']);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('20160101', $cnames[1]['LastModified']);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testToXml()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $cnameConfig = new CnameConfig();
							 | 
						||
| 
								 | 
							
								        $cnameConfig->addCname('www.foo.com');
							 | 
						||
| 
								 | 
							
								        $cnameConfig->addCname('bar.com');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $xml = $cnameConfig->serializeToXml();
							 | 
						||
| 
								 | 
							
								        $comp = new CnameConfig();
							 | 
						||
| 
								 | 
							
								        $comp->parseFromXml($xml);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $cnames1 = $cnameConfig->getCnames();
							 | 
						||
| 
								 | 
							
								        $cnames2 = $comp->getCnames();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(count($cnames1), count($cnames2));
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(count($cnames1[0]), count($cnames2[0]));
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(1, count($cnames1[0]));
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($cnames1[0]['Domain'], $cnames2[0]['Domain']);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testCnameNumberLimit()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $cnameConfig = new CnameConfig();
							 | 
						||
| 
								 | 
							
								        for ($i = 0; $i < CnameConfig::OSS_MAX_RULES; $i += 1) {
							 | 
						||
| 
								 | 
							
								            $cnameConfig->addCname(strval($i) . '.foo.com');
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $cnameConfig->addCname('www.foo.com');
							 | 
						||
| 
								 | 
							
								            $this->assertFalse(true);
							 | 
						||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals(
							 | 
						||
| 
								 | 
							
								                $e->getMessage(),
							 | 
						||
| 
								 | 
							
								                "num of cname in the config exceeds self::OSS_MAX_RULES: " . strval(CnameConfig::OSS_MAX_RULES));
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |