Skip to content

Commit 7b0fd82

Browse files
committed
improve json-encoded string unit test
1 parent 857a2a9 commit 7b0fd82

3 files changed

Lines changed: 29 additions & 15 deletions

File tree

.github/workflows/phpunit.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
name: PHPUnit
22
on: [push, pull_request]
3+
permissions: read-all
34
jobs:
45
run:
56
runs-on: ${{ matrix.operating-system }}

src/Debug/Utility/StringUtil.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,8 @@ public static function prettyJson($json, $encodeFlags = 0, $encodeFlagsAdd = JSO
313313
}
314314
// attempt to decode as object first
315315
$decoded = \json_decode($json);
316-
if (\defined('JSON_ERROR_INVALID_PROPERTY_NAME') && \json_last_error() === JSON_ERROR_INVALID_PROPERTY_NAME) {
316+
// JSON_ERROR_INVALID_PROPERTY_NAME is php 7.0+ just check for error
317+
if (\json_last_error() !== JSON_ERROR_NONE) {
317318
$decoded = \json_decode($json, true);
318319
}
319320
return \json_last_error() === JSON_ERROR_NONE

tests/Debug/Type/StringEncodedTest.php

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
*/
2727
class StringEncodedTest extends DebugTestFramework
2828
{
29-
3029
public static function providerTestMethod()
3130
{
3231
$base64snip = \substr(
@@ -36,9 +35,10 @@ public static function providerTestMethod()
3635
);
3736

3837
$array = array(
38+
"\x00null" => 'careful',
3939
'pоop' => '💩',
4040
'int' => 42,
41-
'string' => "strıngy\nstring",
41+
'string' => "lıne1\nline2",
4242
'password' => 'secret',
4343
);
4444
$base64snip2 = \base64_encode(
@@ -151,15 +151,17 @@ public static function providerTestMethod()
151151
'type' => Type::TYPE_STRING,
152152
'typeMore' => Type::TYPE_STRING_JSON,
153153
'value' => \str_replace('[redacted]', '█████████', \json_encode(array(
154+
"\x00null" => 'careful',
154155
'pоop' => '💩',
155156
'int' => 42,
156-
'string' => "strıngy\nstring",
157+
'string' => "lıne1\nline2",
157158
'password' => '[redacted]',
158159
), JSON_PRETTY_PRINT)),
159160
'valueDecoded' => array(
161+
"\x00null" => 'careful',
160162
'pоop' => '💩',
161163
'int' => 42,
162-
'string' => "strıngy\nstring",
164+
'string' => "lıne1\nline2",
163165
'password' => '█████████',
164166
),
165167
),
@@ -180,17 +182,19 @@ public static function providerTestMethod()
180182
<nav role="tablist"><a class="nav-link" data-target=".tab-1" data-toggle="tab" role="tab">base64</a><a class="nav-link" data-target=".tab-2" data-toggle="tab" role="tab">json</a><a class="active nav-link" data-target=".tab-3" data-toggle="tab" role="tab">parsed</a></nav>
181183
<div class="tab-1 tab-pane" role="tabpanel"><span class="no-quotes t_string">' . $base64snip2 . '</span></div>
182184
<div class="tab-2 tab-pane" role="tabpanel"><span class="value-container" data-type="string"><span class="prettified">(prettified)</span> <span class="highlight language-json no-quotes t_string">{
185+
&quot;\u0000null&quot;: &quot;careful&quot;,
183186
&quot;p\u043eop&quot;: &quot;\ud83d\udca9&quot;,
184187
&quot;int&quot;: 42,
185-
&quot;string&quot;: &quot;str\u0131ngy\nstring&quot;,
188+
&quot;string&quot;: &quot;l\u0131ne1\nline2&quot;,
186189
&quot;password&quot;: &quot;█████████&quot;
187190
}</span></span></div>
188191
<div class="active tab-3 tab-pane" role="tabpanel"><span class="t_array"><span class="t_keyword">array</span><span class="t_punct">(</span>
189192
<ul class="array-inner list-unstyled">
193+
<li><span class="t_key"><span class="char-control" data-abbr="NUL" title="\x00: NUL">␀</span>null</span><span class="t_operator">=&gt;</span><span class="t_string">careful</span></li>
190194
<li><span class="t_key">p<span class="unicode" data-code-point="043E" title="U-043E: CYRILLIC SMALL LETTER O">о</span>op</span><span class="t_operator">=&gt;</span><span class="t_string">💩</span></li>
191195
<li><span class="t_key">int</span><span class="t_operator">=&gt;</span><span class="t_int">42</span></li>
192-
<li><span class="t_key">string</span><span class="t_operator">=&gt;</span><span class="t_string">str<span class="unicode" data-code-point="0131" title="U-0131: LATIN SMALL LETTER DOTLESS I">ı</span>ngy
193-
string</span></li>
196+
<li><span class="t_key">string</span><span class="t_operator">=&gt;</span><span class="t_string">l<span class="unicode" data-code-point="0131" title="U-0131: LATIN SMALL LETTER DOTLESS I">ı</span>ne1
197+
line2</span></li>
194198
<li><span class="t_key">password</span><span class="t_operator">=&gt;</span><span class="t_string">█████████</span></li>
195199
</ul><span class="t_punct">)</span></span></div>
196200
</span></li>',
@@ -203,7 +207,12 @@ public static function providerTestMethod()
203207
'log',
204208
array(
205209
$base64snip3,
206-
Debug::meta('redact'),
210+
Debug::meta(array(
211+
'redact' => true,
212+
'cfg' => array(
213+
'stringMaxLen' => array('base64' => 200),
214+
),
215+
)),
207216
),
208217
array(
209218
'entry' => array(
@@ -220,18 +229,20 @@ public static function providerTestMethod()
220229
'debug' => Abstracter::ABSTRACTION,
221230
'type' => Type::TYPE_STRING,
222231
'typeMore' => Type::TYPE_STRING_SERIALIZED,
223-
'value' => 'a:4:{s:5:"pоop";s:4:"💩";s:3:"int";i:42;s:6:"string";s:15:"strıngy' . "\n" . 'string";s:8:"password";s:6:"█████████";}',
232+
'value' => 'a:5:{s:5:"' . "\x00" . 'null";s:7:"careful";s:5:"pоop";s:4:"💩";s:3:"int";i:42;s:6:"string";s:12:"lıne1' . "\n" . 'line2";s:8:"password";s:6:"█████████";}',
224233
'valueDecoded' => array(
234+
"\x00null" => 'careful',
225235
'pоop' => '💩',
226236
'int' => 42,
227-
'string' => "strıngy\nstring",
237+
'string' => "lıne1\nline2",
228238
'password' => '█████████',
229239
),
230240
),
231241
),
232242
),
233243
'meta' => array(
234244
'redact' => true,
245+
// 'stringMaxLen' => 200,
235246
),
236247
),
237248
'chromeLogger' => array(
@@ -244,14 +255,15 @@ public static function providerTestMethod()
244255
'html' => '<li class="m_log"><span class="string-encoded tabs-container" data-type-more="base64">
245256
<nav role="tablist"><a class="nav-link" data-target=".tab-1" data-toggle="tab" role="tab">base64</a><a class="nav-link" data-target=".tab-2" data-toggle="tab" role="tab">serialized</a><a class="active nav-link" data-target=".tab-3" data-toggle="tab" role="tab">unserialized</a></nav>
246257
<div class="tab-1 tab-pane" role="tabpanel"><span class="no-quotes t_string">' . $base64snip3 . '</span></div>
247-
<div class="tab-2 tab-pane" role="tabpanel"><span class="no-quotes t_string">a:4:{s:5:&quot;p<span class="unicode" data-code-point="043E" title="U-043E: CYRILLIC SMALL LETTER O">о</span>op&quot;;s:4:&quot;💩&quot;;s:3:&quot;int&quot;;i:42;s:6:&quot;string&quot;;s:15:&quot;str<span class="unicode" data-code-point="0131" title="U-0131: LATIN SMALL LETTER DOTLESS I">ı</span>ngy
248-
string&quot;;s:8:&quot;password&quot;;s:6:&quot;█████████&quot;;}</span></div>
258+
<div class="tab-2 tab-pane" role="tabpanel"><span class="no-quotes t_string">a:5:{s:5:&quot;<span class="char-control" data-abbr="NUL" title="\x00: NUL">␀</span>null&quot;;s:7:&quot;careful&quot;;s:5:&quot;p<span class="unicode" data-code-point="043E" title="U-043E: CYRILLIC SMALL LETTER O">о</span>op&quot;;s:4:&quot;💩&quot;;s:3:&quot;int&quot;;i:42;s:6:&quot;string&quot;;s:12:&quot;l<span class="unicode" data-code-point="0131" title="U-0131: LATIN SMALL LETTER DOTLESS I">ı</span>ne1
259+
line2&quot;;s:8:&quot;password&quot;;s:6:&quot;█████████&quot;;}</span></div>
249260
<div class="active tab-3 tab-pane" role="tabpanel"><span class="t_array"><span class="t_keyword">array</span><span class="t_punct">(</span>
250261
<ul class="array-inner list-unstyled">
262+
<li><span class="t_key"><span class="char-control" data-abbr="NUL" title="\x00: NUL">␀</span>null</span><span class="t_operator">=&gt;</span><span class="t_string">careful</span></li>
251263
<li><span class="t_key">p<span class="unicode" data-code-point="043E" title="U-043E: CYRILLIC SMALL LETTER O">о</span>op</span><span class="t_operator">=&gt;</span><span class="t_string">💩</span></li>
252264
<li><span class="t_key">int</span><span class="t_operator">=&gt;</span><span class="t_int">42</span></li>
253-
<li><span class="t_key">string</span><span class="t_operator">=&gt;</span><span class="t_string">str<span class="unicode" data-code-point="0131" title="U-0131: LATIN SMALL LETTER DOTLESS I">ı</span>ngy
254-
string</span></li>
265+
<li><span class="t_key">string</span><span class="t_operator">=&gt;</span><span class="t_string">l<span class="unicode" data-code-point="0131" title="U-0131: LATIN SMALL LETTER DOTLESS I">ı</span>ne1
266+
line2</span></li>
255267
<li><span class="t_key">password</span><span class="t_operator">=&gt;</span><span class="t_string">█████████</span></li>
256268
</ul><span class="t_punct">)</span></span></div>
257269
</span></li>',

0 commit comments

Comments
 (0)