From cf4795fcc34026d4053dfa65ca7550731614caec Mon Sep 17 00:00:00 2001 From: Andy Coates Date: Thu, 28 Jan 2016 12:56:17 +0000 Subject: [PATCH] Make item names no longer than 100 characters --- src/Message/AbstractRequest.php | 4 ++-- tests/Message/DirectAuthorizeRequestTest.php | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Message/AbstractRequest.php b/src/Message/AbstractRequest.php index e965b3a..192cbb2 100644 --- a/src/Message/AbstractRequest.php +++ b/src/Message/AbstractRequest.php @@ -159,7 +159,7 @@ protected function filterItemName($name) $standardChars = "0-9a-zA-Z"; $allowedSpecialChars = " +'/\\&:,.-{}"; $pattern = '`[^'.$standardChars.preg_quote($allowedSpecialChars, '/').']`'; - $name = trim(preg_replace($pattern, '', $name)); + $name = trim(substr(preg_replace($pattern, '', $name), 0, 100)); return $name; } @@ -179,7 +179,7 @@ protected function filterDiscountName($name) $standardChars = "0-9a-zA-Z"; $allowedSpecialChars = " +'/\\:,.-{};_@()^\"~[]$=!#?|"; $pattern = '`[^'.$standardChars.preg_quote($allowedSpecialChars, '/').']`'; - $name = trim(preg_replace($pattern, '', $name)); + $name = trim(substr(preg_replace($pattern, '', $name), 0, 100)); return $name; } diff --git a/tests/Message/DirectAuthorizeRequestTest.php b/tests/Message/DirectAuthorizeRequestTest.php index ffdf7bb..3198a86 100644 --- a/tests/Message/DirectAuthorizeRequestTest.php +++ b/tests/Message/DirectAuthorizeRequestTest.php @@ -212,7 +212,7 @@ public function testMixedBasketWithSpecialChars() { $items = new \Omnipay\Common\ItemBag(array( new \Omnipay\Common\Item(array( - 'name' => "Denisé's Odd & Wierd £name? #", + 'name' => "Denisé's Odd & Wierd £name? #12345678901234567890123456789012345678901234567890123456789012345678901234567890", 'description' => 'Description', 'quantity' => 2, 'price' => 4.23, @@ -224,20 +224,22 @@ public function testMixedBasketWithSpecialChars() 'price' => -0.10, ), array( - 'name' => 'Second Discount', + // 101 character name + 'name' => '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901', 'description' => 'My 2nd Offer', 'quantity' => 1, 'price' => -1.60, ) )); + // Names/descriptions should be max 100 characters in length, once invalid characters have been removed. $expected = '' - . 'Denis\'s Odd & Wierd name2' + . 'Denis\'s Odd & Wierd name 1234567890123456789012345678901234567890123456789012345678901234567890123452' . '4.230.00' . '4.238.46' . '' . '0.2Denis\'s "Odd" Wierd discount? #' - . '1.6Second Discount' + . '1.61234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890' . ''; $this->request->setItems($items);