Skip to content

Commit 8fd1808

Browse files
committed
v1.0.4
* Add `isBase64Encoded()` method to check for valid base 64 encoded string.
1 parent 1373009 commit 8fd1808

File tree

3 files changed

+125
-1
lines changed

3 files changed

+125
-1
lines changed

Rundiz/Serializer/Serializer.php

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,42 @@
1414
* Works with serialization such as check if string is serialized.
1515
*
1616
* @package Serializer
17-
* @version 1.0.3
17+
* @version 1.0.4
1818
* @author Vee W.
1919
* @since 1.0
2020
*/
2121
class Serializer
2222
{
2323

2424

25+
/**
26+
* Check if the given string is valid base 64 encoded.
27+
*
28+
* @since 1.0.4
29+
* @param string $data The value to check.
30+
* @return bool Return `true` if valid base 64 encoded, `false` for not.
31+
*/
32+
public function isBase64Encoded($data)
33+
{
34+
if (!is_string($data)) {
35+
// if the value to check is NOT string
36+
// Due to base64_decode() on PHP document site require that this argument should be string, if it is not then just return false.
37+
return false;
38+
}
39+
40+
$decoded = base64_decode($data, true);
41+
if (false === $decoded) {
42+
return false;
43+
}
44+
45+
if (false === json_encode([$decoded])) {
46+
return false;
47+
}
48+
49+
return true;
50+
}// isBase64Encoded
51+
52+
2553
/**
2654
* Check if JSON encoded or valid JSON string.
2755
*

Rundiz/Serializer/SerializerStatic.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
/**
1313
* Works with serialize.
1414
*
15+
* @method bool isBase64Encoded(string $string) Check if string is valid base 64 encoded.
1516
* @method bool isSerialized(string $string) Check if string is serialized.
1617
* @method bool isJSONEncoded($data) Check if JSON encoded or valid JSON string.
1718
* @method string maybeSerialize(mixed $value) Check first that data is serialized or not, if not then serialize it otherwise return as is.
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
<?php
2+
/**
3+
* @license http://opensource.org/licenses/MIT MIT
4+
*/
5+
6+
7+
namespace Rundiz\Serializer\Tests;
8+
9+
class IsBase64EncodedTest extends \PHPUnit\Framework\TestCase
10+
{
11+
12+
13+
public function testBase64EncodedBoolean()
14+
{
15+
$Serializer = new \Rundiz\Serializer\Serializer();
16+
$this->assertFalse($Serializer->isBase64Encoded(true));
17+
$this->assertFalse($Serializer->isBase64Encoded(false));
18+
$this->assertFalse(\Rundiz\Serializer\SerializerStatic::isBase64Encoded(true));
19+
$this->assertFalse(\Rundiz\Serializer\SerializerStatic::isBase64Encoded(false));
20+
}// testBase64EncodedBoolean
21+
22+
23+
public function testBase64EncodedInteger()
24+
{
25+
$Serializer = new \Rundiz\Serializer\Serializer();
26+
$this->assertFalse($Serializer->isBase64Encoded(12345));
27+
$this->assertFalse($Serializer->isBase64Encoded(012345));
28+
$this->assertFalse($Serializer->isBase64Encoded(555));
29+
$this->assertFalse($Serializer->isBase64Encoded(5555));
30+
$this->assertFalse($Serializer->isBase64Encoded('12345'));
31+
$this->assertTrue($Serializer->isBase64Encoded('NTU1NQ=='));// it is base 64 encoded for '5555'
32+
$this->assertFalse(\Rundiz\Serializer\SerializerStatic::isBase64Encoded('12345'));
33+
$this->assertTrue(\Rundiz\Serializer\SerializerStatic::isBase64Encoded('NTU1NQ=='));
34+
}// testBase64EncodedInteger
35+
36+
37+
public function testBase64EncodedDouble()
38+
{
39+
$Serializer = new \Rundiz\Serializer\Serializer();
40+
$this->assertFalse($Serializer->isBase64Encoded('2345.67'));
41+
$this->assertFalse($Serializer->isBase64Encoded('-2345.67'));
42+
$this->assertFalse($Serializer->isBase64Encoded(2345.67));
43+
$this->assertFalse($Serializer->isBase64Encoded(-2345.67));
44+
$this->assertTrue($Serializer->isBase64Encoded('MjM0NS42Nw=='));// it is base 64 encoded for 2345.67
45+
$this->assertTrue(\Rundiz\Serializer\SerializerStatic::isBase64Encoded('MjM0NS42Nw=='));
46+
$this->assertFalse(\Rundiz\Serializer\SerializerStatic::isBase64Encoded('23456.78'));
47+
$this->assertFalse(\Rundiz\Serializer\SerializerStatic::isBase64Encoded('-23456.78'));
48+
$this->assertFalse(\Rundiz\Serializer\SerializerStatic::isBase64Encoded(23456.78));
49+
}// testBase64EncodedDouble
50+
51+
52+
public function testBase64EncodedString()
53+
{
54+
$Serializer = new \Rundiz\Serializer\Serializer();
55+
$this->assertFalse($Serializer->isBase64Encoded('test'));
56+
$this->assertFalse($Serializer->isBase64Encoded('สวัสดี'));
57+
$this->assertFalse($Serializer->isBase64Encoded('hello'));
58+
$this->assertFalse($Serializer->isBase64Encoded('"hello"'));
59+
$this->assertTrue($Serializer->isBase64Encoded('aGVsbG8='));// valid base 64 encoded for 'hello'
60+
$this->assertTrue($Serializer->isBase64Encoded('4Liq4Lin4Lix4Liq4LiU4Li1'));// valid base 64 encoded for 'สวัสดี'
61+
$this->assertTrue(\Rundiz\Serializer\SerializerStatic::isBase64Encoded('dGVzdA=='));// valid base 64 encoded for 'test'
62+
$this->assertTrue($Serializer->isBase64Encoded(''));
63+
$this->assertTrue(\Rundiz\Serializer\SerializerStatic::isBase64Encoded(''));
64+
}// testBase64EncodedString
65+
66+
67+
public function testBase64EncodedArray()
68+
{
69+
$Serializer = new \Rundiz\Serializer\Serializer();
70+
$this->assertFalse($Serializer->isBase64Encoded(['a' => 'b']));
71+
$this->assertFalse(\Rundiz\Serializer\SerializerStatic::isBase64Encoded(['a' => 'b']));
72+
}// testBase64EncodedArray
73+
74+
75+
public function testBase64EncodedObject()
76+
{
77+
$Serializer = new \Rundiz\Serializer\Serializer();
78+
$std = new \stdClass();
79+
$std->name = 'My Name';
80+
$this->assertFalse($Serializer->isBase64Encoded($std));
81+
$this->assertFalse(\Rundiz\Serializer\SerializerStatic::isBase64Encoded($std));
82+
}// testBase64EncodedObject
83+
84+
85+
public function testBase64EncodedNull()
86+
{
87+
$Serializer = new \Rundiz\Serializer\Serializer();
88+
$this->assertFalse($Serializer->isBase64Encoded('null'));
89+
$this->assertFalse($Serializer->isBase64Encoded(null));
90+
$this->assertFalse(\Rundiz\Serializer\SerializerStatic::isBase64Encoded('null'));
91+
$this->assertFalse(\Rundiz\Serializer\SerializerStatic::isBase64Encoded(null));
92+
}// testBase64EncodedNull
93+
94+
95+
}

0 commit comments

Comments
 (0)