Subversion Repositories php-qbpwcf

Rev

Rev 3 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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
}