Completed
Push — master ( 95b4d9...e80bb3 )
by Tamas
02:24
created

tests/firebaseStubTest.php (1 issue)

Severity

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
namespace Firebase;
3
4
require_once __DIR__ . '/../src/firebaseStub.php';
5
6
class FirebaseStubTest extends \PHPUnit_Framework_TestCase
7
{
8
    /**
9
     * @var FirebaseStub
10
     */
11
    protected $_firebaseStub;
12
13
    const DEFAULT_URL = 'https://firebaseStub.firebaseio.com/';
14
    const DEFAULT_TOKEN = 'MqL0c8tKCtheLSYcygBrIanhU8Z2hULOFs9OKPdEp';
15
    const DEFAULT_TIMEOUT = 10;
16
    const DEFAULT_PATH = 'example/path';
17
    const DEFAULT_DATA = '{"firstName": "Howdy", "lastName": "Doody"}';
18
    const DEFAULT_PUSH_DATA = '{"firstName": "1skdSDdksdlisS"}';
19
20
    const UPDATED_URI = 'https://myfirebaseStub.firebaseio.com/';
21
    const UPDATED_TOKEN = 'MqL0c8tEmBeRLSYcygBrIanhU8Z2hULOFs9OKPdEp';
22
    const UPDATED_TIMEOUT = 30;
23
24
    const INSECURE_URL = 'http://insecure.firebaseio.com';
25
    const INVALID_DATA = '"firstName" "Howdy", "lastName": "Doody" "": ';
26
    const MISSING_DATA = '';
27
    const NULL_DATA = null;
28
29
    public function setUp()
30
    {
31
        $this->_firebaseStub = new FirebaseStub(self::DEFAULT_URL, self::DEFAULT_TOKEN);
32
    }
33
34
    public function testBaseURIInitializationOnInstantiation()
35
    {
36
        $this->assertEquals(self::DEFAULT_TOKEN, $this->_firebaseStub->_token);
37
    }
38
39
    public function testSetBaseURI()
40
    {
41
        $actualResponse = $this->_firebaseStub->setBaseURI(self::UPDATED_URI);
42
        $this->assertEquals(null, $actualResponse);
43
44
        $this->assertEquals(self::UPDATED_URI, $this->_firebaseStub->_baseURI);
45
    }
46
47
    public function testTokenInitializationOnInstantiation()
48
    {
49
        $this->assertEquals(self::DEFAULT_TOKEN, $this->_firebaseStub->_token);
50
    }
51
52
    public function testSetToken()
53
    {
54
        $actualResponse = $this->_firebaseStub->setToken(self::UPDATED_TOKEN);
55
        $this->assertEquals(null, $actualResponse);
56
57
        $this->assertEquals(self::UPDATED_TOKEN, $this->_firebaseStub->_token);
58
    }
59
60
    public function testTimeoutInitializationOnInstantiation()
61
    {
62
        $this->assertEquals(self::DEFAULT_TIMEOUT, $this->_firebaseStub->_timeout);
63
    }
64
65
    public function testSetTimeout()
66
    {
67
        $actualResponse = $this->_firebaseStub->setTimeout(self::UPDATED_TIMEOUT);
68
        $this->assertEquals(null, $actualResponse);
69
70
        $this->assertEquals(self::UPDATED_TIMEOUT, $this->_firebaseStub->_timeout);
71
    }
72
73
    public function testSet()
74
    {
75
        $this->_firebaseStub->setResponse(self::DEFAULT_DATA);
76
        $actualResponse = $this->_firebaseStub->set(self::DEFAULT_PATH, self::DEFAULT_DATA);
77
        $this->assertEquals(self::DEFAULT_DATA, $actualResponse);
78
    }
79
80
    public function testPush()
81
    {
82
        $this->_firebaseStub->setResponse(self::DEFAULT_PUSH_DATA);
83
        $actualResponse = $this->_firebaseStub->push(self::DEFAULT_PATH, self::DEFAULT_DATA);
84
        $this->assertEquals(self::DEFAULT_PUSH_DATA, $actualResponse);
85
    }
86
87
    public function testUpdate()
88
    {
89
        $this->_firebaseStub->setResponse(self::DEFAULT_DATA);
90
        $actualResponse = $this->_firebaseStub->update(self::DEFAULT_PATH, self::DEFAULT_DATA);
91
        $this->assertEquals(self::DEFAULT_DATA, $actualResponse);
92
    }
93
94
    public function testDelete()
95
    {
96
        $actualResponse = $this->_firebaseStub->delete(self::DEFAULT_PATH, self::DEFAULT_DATA);
0 ignored issues
show
self::DEFAULT_DATA is of type string, but the function expects a array.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
97
        $this->assertEquals(null, $actualResponse);
98
    }
99
100
    public function testInvalidBaseUri()
101
    {
102
        $firebase = new FirebaseStub(self::INSECURE_URL);
103
        $response = $firebase->set(self::DEFAULT_PATH, self::DEFAULT_DATA);
104
        $this->assertEquals($this->_getErrorMessages('INSECURE_URL'), $response);
105
    }
106
107
    public function testMissingData()
108
    {
109
        $response = $this->_firebaseStub->set(self::DEFAULT_PATH, self::MISSING_DATA);
110
        $this->assertEquals($this->_getErrorMessages('NO_DATA'), $response);
111
    }
112
113
    public function testNullData()
114
    {
115
        $response = $this->_firebaseStub->set(self::DEFAULT_PATH, self::NULL_DATA);
116
        $this->assertEquals($this->_getErrorMessages('NO_DATA'), $response);
117
    }
118
119
    private function _getErrorMessages($errorCode)
120
    {
121
        $errorMessages = Array(
122
            'INSECURE_URL' => 'Firebase does not support non-ssl traffic. Please try your request again over https.',
123
            'INVALID_JSON' => 'Invalid data; couldn\'t parse JSON object, array, or value. Perhaps you\'re using invalid characters in your key names.',
124
            'NO_DATA' => 'Missing data; Perhaps you forgot to send the data.'
125
        );
126
127
        return $errorMessages[$errorCode];
128
    }
129
}
130