Skip to content

Commit b41688e

Browse files
committed
Merge remote-tracking branch 'l3/ACP2E-615' into PR_L3_18_04_2022
2 parents 63d91c6 + 4ed3e21 commit b41688e

File tree

2 files changed

+73
-1
lines changed

2 files changed

+73
-1
lines changed

app/code/Magento/Elasticsearch/SearchAdapter/Query/ValueTransformer/IntegerTransformer.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,18 @@ class IntegerTransformer implements ValueTransformerInterface
1919
*/
2020
public function transform(string $value): ?int
2121
{
22-
return \is_numeric($value) ? (int) $value : null;
22+
return (\is_numeric($value) &&
23+
$this->validateIntegerTypesWithInRange((int) $value)) ? (int) $value : null;
24+
}
25+
26+
/**
27+
* Validate integer value is within the range of 32 bytes as per elasticsearch.
28+
*
29+
* @param int $value
30+
* @return bool
31+
*/
32+
public function validateIntegerTypesWithInRange(int $value): bool
33+
{
34+
return (abs($value) & 0x7FFFFFFF) === abs($value);
2335
}
2436
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Elasticsearch\Test\Unit\SearchAdapter\Query\ValueTransformer;
9+
10+
use Magento\Elasticsearch\SearchAdapter\Query\ValueTransformer\IntegerTransformer;
11+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
12+
use PHPUnit\Framework\TestCase;
13+
14+
/**
15+
* Test value transformer
16+
*/
17+
class IntegerTransformerTest extends TestCase
18+
{
19+
/**
20+
* @var IntegerTransformer
21+
*/
22+
protected $model;
23+
24+
/**
25+
* Setup method
26+
* @return void
27+
*/
28+
public function setUp(): void
29+
{
30+
$objectManagerHelper = new ObjectManagerHelper($this);
31+
$this->model = $objectManagerHelper->getObject(
32+
IntegerTransformer::class
33+
);
34+
}
35+
36+
/**
37+
* Test integer transform value
38+
* @param string $value
39+
* @param int|null $expected
40+
* @return void
41+
* @dataProvider valuesDataProvider
42+
*/
43+
public function testIntegerTransform(string $value, ?int $expected): void
44+
{
45+
$this->assertEquals($expected, $this->model->transform($value));
46+
}
47+
48+
/**
49+
* Values data provider
50+
*
51+
* @return array
52+
*/
53+
public function valuesDataProvider(): array
54+
{
55+
return [
56+
['12345', 12345],
57+
['3310042623',null]
58+
];
59+
}
60+
}

0 commit comments

Comments
 (0)