91 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace Ratchet\Tests\WebSocket;
 | 
						|
use Ratchet\WebSocket\VersionManager;
 | 
						|
use Ratchet\WebSocket\Version\RFC6455;
 | 
						|
use Ratchet\WebSocket\Version\HyBi10;
 | 
						|
use Ratchet\WebSocket\Version\Hixie76;
 | 
						|
use Guzzle\Http\Message\EntityEnclosingRequest;
 | 
						|
 | 
						|
/**
 | 
						|
 * @covers Ratchet\WebSocket\VersionManager
 | 
						|
 */
 | 
						|
class VersionManagerTest extends \PHPUnit_Framework_TestCase {
 | 
						|
    protected $vm;
 | 
						|
 | 
						|
    public function setUp() {
 | 
						|
        $this->vm = new VersionManager;
 | 
						|
    }
 | 
						|
 | 
						|
    public function testFluentInterface() {
 | 
						|
        $rfc = new RFC6455;
 | 
						|
 | 
						|
        $this->assertSame($this->vm, $this->vm->enableVersion($rfc));
 | 
						|
        $this->assertSame($this->vm, $this->vm->disableVersion(13));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testGetVersion() {
 | 
						|
        $rfc = new RFC6455;
 | 
						|
        $this->vm->enableVersion($rfc);
 | 
						|
 | 
						|
        $req = new EntityEnclosingRequest('get', '/', array(
 | 
						|
            'Host' => 'socketo.me'
 | 
						|
          , 'Sec-WebSocket-Version' => 13
 | 
						|
        ));
 | 
						|
 | 
						|
        $this->assertSame($rfc, $this->vm->getVersion($req));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testGetNopeVersionAndDisable() {
 | 
						|
        $req = new EntityEnclosingRequest('get', '/', array(
 | 
						|
            'Host' => 'socketo.me'
 | 
						|
          , 'Sec-WebSocket-Version' => 13
 | 
						|
        ));
 | 
						|
 | 
						|
        $this->setExpectedException('InvalidArgumentException');
 | 
						|
 | 
						|
        $this->vm->getVersion($req);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testYesIsVersionEnabled() {
 | 
						|
        $this->vm->enableVersion(new RFC6455);
 | 
						|
 | 
						|
        $this->assertTrue($this->vm->isVersionEnabled(new EntityEnclosingRequest('get', '/', array(
 | 
						|
            'Host' => 'socketo.me'
 | 
						|
          , 'Sec-WebSocket-Version' => 13
 | 
						|
        ))));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testNoIsVersionEnabled() {
 | 
						|
        $this->assertFalse($this->vm->isVersionEnabled(new EntityEnclosingRequest('get', '/', array(
 | 
						|
            'Host' => 'socketo.me'
 | 
						|
          , 'Sec-WebSocket-Version' => 9000
 | 
						|
        ))));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testGetSupportedVersionString() {
 | 
						|
        $v1 = new RFC6455;
 | 
						|
        $v2 = new HyBi10;
 | 
						|
 | 
						|
        $this->vm->enableVersion($v1);
 | 
						|
        $this->vm->enableVersion($v2);
 | 
						|
 | 
						|
        $string = $this->vm->getSupportedVersionString();
 | 
						|
        $values = explode(',', $string);
 | 
						|
 | 
						|
        $this->assertContains($v1->getVersionNumber(), $values);
 | 
						|
        $this->assertContains($v2->getVersionNumber(), $values);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testGetSupportedVersionAfterRemoval() {
 | 
						|
        $this->vm->enableVersion(new RFC6455);
 | 
						|
        $this->vm->enableVersion(new HyBi10);
 | 
						|
        $this->vm->enableVersion(new Hixie76);
 | 
						|
 | 
						|
        $this->vm->disableVersion(0);
 | 
						|
 | 
						|
        $values = explode(',', $this->vm->getSupportedVersionString());
 | 
						|
 | 
						|
        $this->assertEquals(2, count($values));
 | 
						|
        $this->assertFalse(array_search(0, $values));
 | 
						|
    }
 | 
						|
} |