| 3 |
liveuser |
1 |
<?php
|
|
|
2 |
namespace Ratchet\Application\Server;
|
|
|
3 |
use Ratchet\Server\FlashPolicy;
|
|
|
4 |
|
|
|
5 |
/**
|
|
|
6 |
* @covers Ratchet\Server\FlashPolicy
|
|
|
7 |
*/
|
|
|
8 |
class FlashPolicyTest extends \PHPUnit_Framework_TestCase {
|
|
|
9 |
|
|
|
10 |
protected $_policy;
|
|
|
11 |
|
|
|
12 |
public function setUp() {
|
|
|
13 |
$this->_policy = new FlashPolicy();
|
|
|
14 |
}
|
|
|
15 |
|
|
|
16 |
public function testPolicyRender() {
|
|
|
17 |
$this->_policy->setSiteControl('all');
|
|
|
18 |
$this->_policy->addAllowedAccess('example.com', '*');
|
|
|
19 |
$this->_policy->addAllowedAccess('dev.example.com', '*');
|
|
|
20 |
|
|
|
21 |
$this->assertInstanceOf('SimpleXMLElement', $this->_policy->renderPolicy());
|
|
|
22 |
}
|
|
|
23 |
|
|
|
24 |
public function testInvalidPolicyReader() {
|
|
|
25 |
$this->setExpectedException('UnexpectedValueException');
|
|
|
26 |
$this->_policy->renderPolicy();
|
|
|
27 |
}
|
|
|
28 |
|
|
|
29 |
public function testInvalidDomainPolicyReader() {
|
|
|
30 |
$this->setExpectedException('UnexpectedValueException');
|
|
|
31 |
$this->_policy->setSiteControl('all');
|
|
|
32 |
$this->_policy->addAllowedAccess('dev.example.*', '*');
|
|
|
33 |
$this->_policy->renderPolicy();
|
|
|
34 |
}
|
|
|
35 |
|
|
|
36 |
/**
|
|
|
37 |
* @dataProvider siteControl
|
|
|
38 |
*/
|
|
|
39 |
public function testSiteControlValidation($accept, $permittedCrossDomainPolicies) {
|
|
|
40 |
$this->assertEquals($accept, $this->_policy->validateSiteControl($permittedCrossDomainPolicies));
|
|
|
41 |
}
|
|
|
42 |
|
|
|
43 |
public static function siteControl() {
|
|
|
44 |
return array(
|
|
|
45 |
array(true, 'all')
|
|
|
46 |
, array(true, 'none')
|
|
|
47 |
, array(true, 'master-only')
|
|
|
48 |
, array(false, 'by-content-type')
|
|
|
49 |
, array(false, 'by-ftp-filename')
|
|
|
50 |
, array(false, '')
|
|
|
51 |
, array(false, 'all ')
|
|
|
52 |
, array(false, 'asdf')
|
|
|
53 |
, array(false, '@893830')
|
|
|
54 |
, array(false, '*')
|
|
|
55 |
);
|
|
|
56 |
}
|
|
|
57 |
|
|
|
58 |
/**
|
|
|
59 |
* @dataProvider URI
|
|
|
60 |
*/
|
|
|
61 |
public function testDomainValidation($accept, $domain) {
|
|
|
62 |
$this->assertEquals($accept, $this->_policy->validateDomain($domain));
|
|
|
63 |
}
|
|
|
64 |
|
|
|
65 |
public static function URI() {
|
|
|
66 |
return array(
|
|
|
67 |
array(true, '*')
|
|
|
68 |
, array(true, 'example.com')
|
|
|
69 |
, array(true, 'exam-ple.com')
|
|
|
70 |
, array(true, '*.example.com')
|
|
|
71 |
, array(true, 'www.example.com')
|
|
|
72 |
, array(true, 'dev.dev.example.com')
|
|
|
73 |
, array(true, 'http://example.com')
|
|
|
74 |
, array(true, 'https://example.com')
|
|
|
75 |
, array(true, 'http://*.example.com')
|
|
|
76 |
, array(false, 'exam*ple.com')
|
|
|
77 |
, array(true, '127.0.255.1')
|
|
|
78 |
, array(true, 'localhost')
|
|
|
79 |
, array(false, 'www.example.*')
|
|
|
80 |
, array(false, 'www.exa*le.com')
|
|
|
81 |
, array(false, 'www.example.*com')
|
|
|
82 |
, array(false, '*.example.*')
|
|
|
83 |
, array(false, 'gasldf*$#a0sdf0a8sdf')
|
|
|
84 |
);
|
|
|
85 |
}
|
|
|
86 |
|
|
|
87 |
/**
|
|
|
88 |
* @dataProvider ports
|
|
|
89 |
*/
|
|
|
90 |
public function testPortValidation($accept, $ports) {
|
|
|
91 |
$this->assertEquals($accept, $this->_policy->validatePorts($ports));
|
|
|
92 |
}
|
|
|
93 |
|
|
|
94 |
public static function ports() {
|
|
|
95 |
return array(
|
|
|
96 |
array(true, '*')
|
|
|
97 |
, array(true, '80')
|
|
|
98 |
, array(true, '80,443')
|
|
|
99 |
, array(true, '507,516-523')
|
|
|
100 |
, array(true, '507,516-523,333')
|
|
|
101 |
, array(true, '507,516-523,507,516-523')
|
|
|
102 |
, array(false, '516-')
|
|
|
103 |
, array(true, '516-523,11')
|
|
|
104 |
, array(false, '516,-523,11')
|
|
|
105 |
, array(false, 'example')
|
|
|
106 |
, array(false, 'asdf,123')
|
|
|
107 |
, array(false, '--')
|
|
|
108 |
, array(false, ',,,')
|
|
|
109 |
, array(false, '838*')
|
|
|
110 |
);
|
|
|
111 |
}
|
|
|
112 |
|
|
|
113 |
public function testAddAllowedAccessOnlyAcceptsValidPorts() {
|
|
|
114 |
$this->setExpectedException('UnexpectedValueException');
|
|
|
115 |
|
|
|
116 |
$this->_policy->addAllowedAccess('*', 'nope');
|
|
|
117 |
}
|
|
|
118 |
|
|
|
119 |
public function testSetSiteControlThrowsException() {
|
|
|
120 |
$this->setExpectedException('UnexpectedValueException');
|
|
|
121 |
|
|
|
122 |
$this->_policy->setSiteControl('nope');
|
|
|
123 |
}
|
|
|
124 |
|
|
|
125 |
public function testErrorClosesConnection() {
|
|
|
126 |
$conn = $this->getMock('\\Ratchet\\ConnectionInterface');
|
|
|
127 |
$conn->expects($this->once())->method('close');
|
|
|
128 |
|
|
|
129 |
$this->_policy->onError($conn, new \Exception);
|
|
|
130 |
}
|
|
|
131 |
|
|
|
132 |
public function testOnMessageSendsString() {
|
|
|
133 |
$this->_policy->addAllowedAccess('*', '*');
|
|
|
134 |
|
|
|
135 |
$conn = $this->getMock('\\Ratchet\\ConnectionInterface');
|
|
|
136 |
$conn->expects($this->once())->method('send')->with($this->isType('string'));
|
|
|
137 |
|
|
|
138 |
$this->_policy->onMessage($conn, ' ');
|
|
|
139 |
}
|
|
|
140 |
|
|
|
141 |
public function testOnOpenExists() {
|
|
|
142 |
$this->assertTrue(method_exists($this->_policy, 'onOpen'));
|
|
|
143 |
$conn = $this->getMock('\Ratchet\ConnectionInterface');
|
|
|
144 |
$this->_policy->onOpen($conn);
|
|
|
145 |
}
|
|
|
146 |
|
|
|
147 |
public function testOnCloseExists() {
|
|
|
148 |
$this->assertTrue(method_exists($this->_policy, 'onClose'));
|
|
|
149 |
$conn = $this->getMock('\Ratchet\ConnectionInterface');
|
|
|
150 |
$this->_policy->onClose($conn);
|
|
|
151 |
}
|
|
|
152 |
}
|