diff --git a/Model/Api/Request/Base.php b/Model/Api/Request/Base.php index 351eefa7..f45d8988 100644 --- a/Model/Api/Request/Base.php +++ b/Model/Api/Request/Base.php @@ -235,23 +235,20 @@ protected function validateParameters() /** * Send the previously prepared request, log request and response into the database and return the response - * - * @param bool $blOnlyGetUrl + * @return array */ - protected function send($blOnlyGetUrl = false) + protected function send() { if (!$this->validateParameters()) {// all base parameters existing? return ["errormessage" => "Payone API Setup Data not complete (API-URL, MID, AID, PortalID, Key, Mode)"]; } - + $sRequestUrl = $this->apiHelper->getRequestUrl($this->getParameters(), $this->sApiUrl); - if ($blOnlyGetUrl === true) {// sometimes you only need the request url - return $sRequestUrl; - } $aResponse = $this->apiHelper->sendApiRequest($sRequestUrl); // send request to PAYONE $this->apiLog->addApiLogEntry($this, $aResponse, $aResponse['status']); // log request to db + return $aResponse; } } diff --git a/Model/Methods/PayoneMethod.php b/Model/Methods/PayoneMethod.php index 61d116cb..86ca9aa1 100644 --- a/Model/Methods/PayoneMethod.php +++ b/Model/Methods/PayoneMethod.php @@ -43,9 +43,6 @@ abstract class PayoneMethod extends BaseMethod */ public function getClearingtype() { - if ($this->sClearingtype === false) { - throw new LocalizedException(__('Clearingtype not implemented for this payment method')); - } return $this->sClearingtype; } diff --git a/Test/Unit/Model/Api/InvoiceTest.php b/Test/Unit/Model/Api/InvoiceTest.php new file mode 100644 index 00000000..e76b4766 --- /dev/null +++ b/Test/Unit/Model/Api/InvoiceTest.php @@ -0,0 +1,127 @@ +. + * + * PHP version 5 + * + * @category Payone + * @package Payone_Magento2_Plugin + * @author FATCHIP GmbH + * @copyright 2003 - 2017 Payone GmbH + * @license GNU Lesser General Public License + * @link http://www.payone.de + */ + +namespace Payone\Core\Test\Unit\Model\Api; + +use Payone\Core\Model\Api\Invoice as ClassToTest; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Payone\Core\Helper\Toolkit; +use Payone\Core\Model\Api\Request\Authorization; +use Magento\Sales\Model\Order; +use Magento\Sales\Model\Order\Item; + +class InvoiceTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ClassToTest + */ + private $classToTest; + + /** + * @var Toolkit + */ + private $toolkitHelper; + + protected function setUp() + { + $objectManager = new ObjectManager($this); + + $this->toolkitHelper = $this->getMockBuilder(Toolkit::class)->disableOriginalConstructor()->getMock(); + $this->toolkitHelper->method('getInvoiceAppendix')->willReturn('invoice appendix'); + $this->toolkitHelper->method('getConfigParam')->willReturn('sku'); + $this->toolkitHelper->expects($this->any()) + ->method('formatNumber') + ->willReturnMap([ + [100, 2, '100.00'], + [5, 2, '5.00'], + [-5, 2, '-5.00'], + [90, 2, '90.00'], + [105, 2, '105.00'], + ]); + + $this->classToTest = $objectManager->getObject(ClassToTest::class, [ + 'toolkitHelper' => $this->toolkitHelper + ]); + } + + /** + * Returns item mock object + * + * @return \PHPUnit_Framework_MockObject_MockObject + */ + private function getItemMock() + { + $item = $this->getMockBuilder(Item::class)->disableOriginalConstructor()->getMock(); + $item->method('isDummy')->willReturn(false); + $item->method('getProductId')->willReturn('12345'); + $item->method('getQtyOrdered')->willReturn('1'); + $item->method('getSku')->willReturn('test_123'); + $item->method('getPriceInclTax')->willReturn('100'); + $item->method('getName')->willReturn('Test product'); + $item->method('getTaxPercent')->willReturn('19'); + return $item; + } + + public function testAddProductInfo() + { + $authorization = $this->getMockBuilder(Authorization::class)->disableOriginalConstructor()->getMock(); + + $items = [$this->getItemMock()]; + + $expected = 90; + + $order = $this->getMockBuilder(Order::class)->disableOriginalConstructor()->getMock(); + $order->method('getAllItems')->willReturn($items); + $order->method('getBaseShippingInclTax')->willReturn(-5); + $order->method('getBaseDiscountAmount')->willReturn(-5); + $order->method('getCouponCode')->willReturn('test'); + $order->method('getGrandTotal')->willReturn($expected); + + $result = $this->classToTest->addProductInfo($authorization, $order, false); + $this->assertEquals($expected, $result); + } + + public function testAddProductInfoSurcharge() + { + $authorization = $this->getMockBuilder(Authorization::class)->disableOriginalConstructor()->getMock(); + + $items = [$this->getItemMock()]; + + $expected = 100; + + $order = $this->getMockBuilder(Order::class)->disableOriginalConstructor()->getMock(); + $order->method('getAllItems')->willReturn($items); + $order->method('getBaseShippingInclTax')->willReturn(5); + $order->method('getBaseDiscountAmount')->willReturn(-5); + $order->method('getCouponCode')->willReturn('test'); + $order->method('getGrandTotal')->willReturn($expected); + + $positions = ['12345' => ['amount' => '1']]; + + $result = $this->classToTest->addProductInfo($authorization, $order, $positions); + $this->assertEquals($expected, $result); + } +} diff --git a/Test/Unit/Model/Api/Request/AddresscheckTest.php b/Test/Unit/Model/Api/Request/AddresscheckTest.php new file mode 100644 index 00000000..fb732067 --- /dev/null +++ b/Test/Unit/Model/Api/Request/AddresscheckTest.php @@ -0,0 +1,204 @@ +. + * + * PHP version 5 + * + * @category Payone + * @package Payone_Magento2_Plugin + * @author FATCHIP GmbH + * @copyright 2003 - 2017 Payone GmbH + * @license GNU Lesser General Public License + * @link http://www.payone.de + */ + +namespace Payone\Core\Test\Unit\Model\Api\Request; + +use Magento\Quote\Model\Quote\Address; +use Payone\Core\Model\Api\Request\Addresscheck as ClassToTest; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Payone\Core\Helper\Api; +use Payone\Core\Model\ResourceModel\CheckedAddresses; +use Payone\Core\Helper\Shop; + +class AddresscheckTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ClassToTest + */ + private $classToTest; + + /** + * @var Api|\PHPUnit_Framework_MockObject_MockObject + */ + private $apiHelper; + + /** + * @var CheckedAddresses|\PHPUnit_Framework_MockObject_MockObject + */ + private $addressesChecked; + + /** + * @var Shop|\PHPUnit_Framework_MockObject_MockObject + */ + private $shopHelper; + + protected function setUp() + { + $objectManager = new ObjectManager($this); + + $this->apiHelper = $this->getMockBuilder(Api::class)->disableOriginalConstructor()->getMock(); + + $this->addressesChecked = $this->getMockBuilder(CheckedAddresses::class)->disableOriginalConstructor()->getMock(); + $this->shopHelper = $this->getMockBuilder(Shop::class)->disableOriginalConstructor()->getMock(); + + $this->classToTest = $objectManager->getObject(ClassToTest::class, [ + 'apiHelper' => $this->apiHelper, + 'shopHelper' => $this->shopHelper, + 'addressesChecked' => $this->addressesChecked + ]); + } + + public function testSendRequestTrueNotEnabled() + { + $address = $this->getMockBuilder(Address::class)->disableOriginalConstructor()->getMock(); + + $this->shopHelper->method('getConfigParam')->willReturn(false); + + $result = $this->classToTest->sendRequest($address, true); + $this->assertTrue($result); + } + + public function testSendRequestTrueNoBilling() + { + $address = $this->getMockBuilder(Address::class)->disableOriginalConstructor()->getMock(); + + $this->shopHelper->expects($this->any()) + ->method('getConfigParam') + ->willReturnMap([ + ['enabled', 'address_check', 'payone_protect', null, true], + ['check_billing', 'address_check', 'payone_protect', null, 'NO'] + ]); + + $result = $this->classToTest->sendRequest($address, true); + $this->assertTrue($result); + } + + public function testSendRequestTrueNoShipping() + { + $address = $this->getMockBuilder(Address::class)->disableOriginalConstructor()->getMock(); + + $this->shopHelper->expects($this->any()) + ->method('getConfigParam') + ->willReturnMap([ + ['enabled', 'address_check', 'payone_protect', null, true], + ['check_shipping', 'address_check', 'payone_protect', null, 'NO'] + ]); + + $result = $this->classToTest->sendRequest($address, false); + $this->assertTrue($result); + } + + public function testSendRequestInvalidTypePE() + { + $address = $this->getMockBuilder(Address::class)->disableOriginalConstructor()->getMock(); + $address->method('getCountryId')->willReturn('FR'); + + $this->shopHelper->expects($this->any()) + ->method('getConfigParam') + ->willReturnMap([ + ['enabled', 'address_check', 'payone_protect', null, true], + ['check_shipping', 'address_check', 'payone_protect', null, 'PE'] + ]); + + $result = $this->classToTest->sendRequest($address, false); + $expected = ['wrongCountry' => true]; + $this->assertEquals($expected, $result); + } + + public function testSendRequestInvalidTypeBA() + { + $address = $this->getMockBuilder(Address::class)->disableOriginalConstructor()->getMock(); + $address->method('getCountryId')->willReturn('XY'); + + $this->shopHelper->expects($this->any()) + ->method('getConfigParam') + ->willReturnMap([ + ['enabled', 'address_check', 'payone_protect', null, true], + ['check_shipping', 'address_check', 'payone_protect', null, 'BA'] + ]); + + $result = $this->classToTest->sendRequest($address, false); + $expected = ['wrongCountry' => true]; + $this->assertEquals($expected, $result); + } + + public function testSendRequestNotChecked() + { + $address = $this->getMockBuilder(Address::class)->disableOriginalConstructor()->getMock(); + $address->method('getCountryId')->willReturn('DE'); + $address->method('getFirstname')->willReturn('Paul'); + $address->method('getLastname')->willReturn('Paytest'); + $address->method('getCompany')->willReturn('Testcompany Ltd.'); + $address->method('getStreet')->willReturn(['Teststr. 5', '1st floor']); + $address->method('getPostcode')->willReturn('12345'); + $address->method('getCity')->willReturn('Berlin'); + $address->method('getRegionCode')->willReturn('Berlin'); + + $this->shopHelper->expects($this->any()) + ->method('getConfigParam') + ->willReturnMap([ + ['enabled', 'address_check', 'payone_protect', null, true], + ['check_shipping', 'address_check', 'payone_protect', null, 'PE'], + ['mode', 'address_check', 'payone_protect', null, 'test'], + ['aid', 'global', 'payone_general', null, 'PE'] + ]); + + $this->addressesChecked->method('wasAddressCheckedBefore')->willReturn(false); + + $response = ['status' => 'VALID']; + $this->apiHelper->method('sendApiRequest')->willReturn($response); + + $result = $this->classToTest->sendRequest($address, false); + $this->assertEquals($response, $result); + } + + public function testSendRequestChecked() + { + $address = $this->getMockBuilder(Address::class)->disableOriginalConstructor()->getMock(); + $address->method('getCountryId')->willReturn('DE'); + $address->method('getFirstname')->willReturn('Paul'); + $address->method('getLastname')->willReturn('Paytest'); + $address->method('getCompany')->willReturn('Testcompany Ltd.'); + $address->method('getStreet')->willReturn(['Teststr. 5', '1st floor']); + $address->method('getPostcode')->willReturn('12345'); + $address->method('getCity')->willReturn('Berlin'); + $address->method('getRegionCode')->willReturn('Berlin'); + + $this->shopHelper->expects($this->any()) + ->method('getConfigParam') + ->willReturnMap([ + ['enabled', 'address_check', 'payone_protect', null, true], + ['check_shipping', 'address_check', 'payone_protect', null, 'PE'], + ['mode', 'address_check', 'payone_protect', null, 'test'], + ['aid', 'global', 'payone_general', null, 'PE'] + ]); + + $this->addressesChecked->method('wasAddressCheckedBefore')->willReturn(true); + + $result = $this->classToTest->sendRequest($address, false); + $this->assertTrue($result); + } +} diff --git a/Test/Unit/Model/Api/Request/AuthorizationTest.php b/Test/Unit/Model/Api/Request/AuthorizationTest.php new file mode 100644 index 00000000..110e9eca --- /dev/null +++ b/Test/Unit/Model/Api/Request/AuthorizationTest.php @@ -0,0 +1,202 @@ +. + * + * PHP version 5 + * + * @category Payone + * @package Payone_Magento2_Plugin + * @author FATCHIP GmbH + * @copyright 2003 - 2017 Payone GmbH + * @license GNU Lesser General Public License + * @link http://www.payone.de + */ + +namespace Payone\Core\Test\Unit\Model\Api\Request; + +use Magento\Quote\Model\Quote\Address; +use Magento\Sales\Model\Order; +use Payone\Core\Helper\Database; +use Payone\Core\Model\Api\Request\Authorization as ClassToTest; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Payone\Core\Model\Methods\PayoneMethod; +use Payone\Core\Helper\Api; +use Payone\Core\Helper\Toolkit; +use Payone\Core\Helper\Shop; +use Payone\Core\Model\PayoneConfig; +use Magento\Checkout\Model\Session; +use Magento\Quote\Model\Quote; +use Magento\Customer\Api\Data\CustomerInterface; +use Payone\Core\Helper\Environment; + +class AuthorizationTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ClassToTest + */ + private $classToTest; + + /** + * @var Api|\PHPUnit_Framework_MockObject_MockObject + */ + private $apiHelper; + + /** + * @var Shop|\PHPUnit_Framework_MockObject_MockObject + */ + private $shopHelper; + + protected function setUp() + { + $objectManager = new ObjectManager($this); + + $databaseHelper = $this->getMockBuilder(Database::class)->disableOriginalConstructor()->getMock(); + $databaseHelper->method('getSequenceNumber')->willReturn('0'); + + $this->apiHelper = $this->getMockBuilder(Api::class)->disableOriginalConstructor()->getMock(); + $this->apiHelper->method('isInvoiceDataNeeded')->willReturn(true); + + $toolkitHelper = $this->getMockBuilder(Toolkit::class)->disableOriginalConstructor()->getMock(); + $toolkitHelper->method('handleSubstituteReplacement')->willReturn('test text'); + $toolkitHelper->method('getNarrativeText')->willReturn('narrative text'); + + $this->shopHelper = $this->getMockBuilder(Shop::class)->disableOriginalConstructor()->getMock(); + $this->shopHelper->expects($this->any()) + ->method('getConfigParam') + ->willReturnMap([ + ['aid', 'global', 'payone_general', null, '12345'], + ['transmit_ip', 'global', 'payone_general', null, '1'], + ['bill_as_del_address', PayoneConfig::METHOD_PAYPAL, 'payone_payment', null, true], + ['ref_prefix', 'global', 'payone_general', null, 'test_'] + ]); + + $customer = $this->getMockBuilder(CustomerInterface::class)->disableOriginalConstructor()->getMock(); + $customer->method('getGender')->willReturn('m'); + $customer->method('getDob')->willReturn('20000101'); + + $quote = $this->getMockBuilder(Quote::class)->disableOriginalConstructor()->getMock(); + $quote->method('getCustomer')->willReturn($customer); + + $environmentHelper = $this->getMockBuilder(Environment::class)->disableOriginalConstructor()->getMock(); + $environmentHelper->method('getRemoteIp')->willReturn('127.0.0.0.1'); + + $checkoutSession = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock(); + $checkoutSession->method('getQuote')->willReturn($quote); + + $this->classToTest = $objectManager->getObject(ClassToTest::class, [ + 'databaseHelper' => $databaseHelper, + 'apiHelper' => $this->apiHelper, + 'toolkitHelper' => $toolkitHelper, + 'shopHelper' => $this->shopHelper, + 'checkoutSession' => $checkoutSession, + 'environmentHelper' => $environmentHelper + ]); + } + + /** + * Get payment mock object + * + * @return \PHPUnit_Framework_MockObject_MockObject + */ + private function getPaymentMock() + { + $payment = $this->getMockBuilder(PayoneMethod::class)->disableOriginalConstructor()->getMock(); + $payment->method('getAuthorizationMode')->willReturn('authorization'); + $payment->method('getOperationMode')->willReturn('test'); + $payment->method('hasCustomConfig')->willReturn(true); + $payment->method('formatReferenceNumber')->willReturn('12345'); + $payment->method('getCode')->willReturn(PayoneConfig::METHOD_PAYPAL); + $payment->method('getClearingtype')->willReturn('wlt'); + $payment->method('getPaymentSpecificParameters')->willReturn([]); + $payment->method('needsRedirectUrls')->willReturn(true); + $payment->method('getSuccessUrl')->willReturn('http://testdomain.com'); + $payment->method('getErrorUrl')->willReturn('http://testdomain.com'); + $payment->method('getCancelUrl')->willReturn('http://testdomain.com'); + $payment->method('getCustomConfigParam')->willReturn('true'); + return $payment; + } + + /** + * Return address mock object + * + * @return \PHPUnit_Framework_MockObject_MockObject + */ + private function getAddressMock() + { + $address = $this->getMockBuilder(Address::class)->disableOriginalConstructor()->getMock(); + $address->method('getCountryId')->willReturn('US'); + $address->method('getFirstname')->willReturn('Paul'); + $address->method('getLastname')->willReturn('Paytest'); + $address->method('getCompany')->willReturn('Testcompany Ltd.'); + $address->method('getStreet')->willReturn(['Teststr. 5', '1st floor']); + $address->method('getPostcode')->willReturn('12345'); + $address->method('getCity')->willReturn('Berlin'); + $address->method('getRegionCode')->willReturn('CA'); + $address->method('getTelephone')->willReturn('0301234567'); + $address->method('getVatId')->willReturn('12345'); + return $address; + } + + public function testSendRequest() + { + $payment = $this->getPaymentMock(); + $address = $this->getAddressMock(); + + $expectedOrderId = '54321'; + + $order = $this->getMockBuilder(Order::class) + ->disableOriginalConstructor() + ->setMethods(['getRealOrderId', 'getOrderCurrencyCode', 'getCustomerId', 'getCustomerEmail', 'getBillingAddress', 'getShippingAddress']) + ->getMock(); + $order->method('getRealOrderId')->willReturn($expectedOrderId); + $order->method('getOrderCurrencyCode')->willReturn('EUR'); + $order->method('getCustomerId')->willReturn('12345'); + $order->method('getCustomerEmail')->willReturn('test@test.com'); + $order->method('getBillingAddress')->willReturn($address); + $order->method('getShippingAddress')->willReturn($address); + + $response = ['status' => 'VALID']; + $this->apiHelper->method('sendApiRequest')->willReturn($response); + + $result = $this->classToTest->sendRequest($payment, $order, 100); + $this->assertEquals($response, $result); + + $orderId = $this->classToTest->getOrderId(); + $this->assertEquals($expectedOrderId, $orderId); + } + + public function testSendRequestPaypal() + { + $payment = $this->getPaymentMock(); + $address = $this->getAddressMock(); + + $order = $this->getMockBuilder(Order::class) + ->disableOriginalConstructor() + ->setMethods(['getRealOrderId', 'getOrderCurrencyCode', 'getCustomerId', 'getCustomerEmail', 'getBillingAddress', 'getShippingAddress']) + ->getMock(); + $order->method('getRealOrderId')->willReturn('54321'); + $order->method('getOrderCurrencyCode')->willReturn('EUR'); + $order->method('getCustomerId')->willReturn('12345'); + $order->method('getCustomerEmail')->willReturn('test@test.com'); + $order->method('getBillingAddress')->willReturn($address); + $order->method('getShippingAddress')->willReturn(false); + + $response = ['status' => 'VALID']; + $this->apiHelper->method('sendApiRequest')->willReturn($response); + + $result = $this->classToTest->sendRequest($payment, $order, 100); + $this->assertEquals($response, $result); + } +} diff --git a/Test/Unit/Model/Api/Request/CaptureTest.php b/Test/Unit/Model/Api/Request/CaptureTest.php new file mode 100644 index 00000000..c664c50b --- /dev/null +++ b/Test/Unit/Model/Api/Request/CaptureTest.php @@ -0,0 +1,122 @@ +. + * + * PHP version 5 + * + * @category Payone + * @package Payone_Magento2_Plugin + * @author FATCHIP GmbH + * @copyright 2003 - 2017 Payone GmbH + * @license GNU Lesser General Public License + * @link http://www.payone.de + */ + +namespace Payone\Core\Test\Unit\Model\Api\Request; + +use Magento\Sales\Model\Order; +use Payone\Core\Helper\Database; +use Payone\Core\Model\Api\Request\Capture as ClassToTest; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Payone\Core\Model\Methods\PayoneMethod; +use Magento\Payment\Model\Info; +use Payone\Core\Helper\Api; + +class CaptureTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ClassToTest + */ + private $classToTest; + + /** + * @var Api|\PHPUnit_Framework_MockObject_MockObject + */ + private $apiHelper; + + protected function setUp() + { + $objectManager = new ObjectManager($this); + + $databaseHelper = $this->getMockBuilder(Database::class)->disableOriginalConstructor()->getMock(); + $databaseHelper->method('getSequenceNumber')->willReturn('0'); + + $this->apiHelper = $this->getMockBuilder(Api::class)->disableOriginalConstructor()->getMock(); + + $this->classToTest = $objectManager->getObject(ClassToTest::class, [ + 'databaseHelper' => $databaseHelper, + 'apiHelper' => $this->apiHelper + ]); + } + + public function testSendRequest() + { + $payment = $this->getMockBuilder(PayoneMethod::class)->disableOriginalConstructor()->getMock(); + $payment->method('getOperationMode')->willReturn('test'); + + $order = $this->getMockBuilder(Order::class) + ->disableOriginalConstructor() + ->setMethods(['getRealOrderId', 'getOrderCurrencyCode']) + ->getMock(); + $order->method('getRealOrderId')->willReturn('54321'); + $order->method('getOrderCurrencyCode')->willReturn('EUR'); + + $paymentInfo = $this->getMockBuilder(Info::class) + ->disableOriginalConstructor() + ->setMethods(['getOrder', 'getParentTransactionId']) + ->getMock(); + $paymentInfo->method('getOrder')->willReturn($order); + $paymentInfo->method('getParentTransactionId')->willReturn('12345'); + + $response = ['status' => 'APPROVED']; + $this->apiHelper->method('sendApiRequest')->willReturn($response); + + $result = $this->classToTest->sendRequest($payment, $paymentInfo, 100); + $this->assertArrayHasKey('status', $result); + } + + public function testSendRequestBase() + { + $payment = $this->getMockBuilder(PayoneMethod::class)->disableOriginalConstructor()->getMock(); + $payment->method('getOperationMode')->willReturn('test'); + + $order = $this->getMockBuilder(Order::class) + ->disableOriginalConstructor() + ->setMethods(['getRealOrderId', 'getOrderCurrencyCode']) + ->getMock(); + $order->method('getRealOrderId')->willReturn('54321'); + $order->method('getOrderCurrencyCode')->willReturn('EUR'); + + $paymentInfo = $this->getMockBuilder(Info::class) + ->disableOriginalConstructor() + ->setMethods(['getOrder', 'getParentTransactionId']) + ->getMock(); + $paymentInfo->method('getOrder')->willReturn($order); + $paymentInfo->method('getParentTransactionId')->willReturn('12345'); + + $response = ['status' => 'APPROVED']; + $this->apiHelper->method('sendApiRequest')->willReturn($response); + + $this->classToTest->addParameter('test', '', true); + + $resultMissing = $this->classToTest->getParameter('missing'); + $this->assertFalse($resultMissing); + + $this->classToTest->removeParameter('mid'); + + $result = $this->classToTest->sendRequest($payment, $paymentInfo, 100); + $this->assertArrayHasKey('errormessage', $result); + } +} diff --git a/Test/Unit/Model/Api/Request/ConsumerscoreTest.php b/Test/Unit/Model/Api/Request/ConsumerscoreTest.php new file mode 100644 index 00000000..81b63f37 --- /dev/null +++ b/Test/Unit/Model/Api/Request/ConsumerscoreTest.php @@ -0,0 +1,148 @@ +. + * + * PHP version 5 + * + * @category Payone + * @package Payone_Magento2_Plugin + * @author FATCHIP GmbH + * @copyright 2003 - 2017 Payone GmbH + * @license GNU Lesser General Public License + * @link http://www.payone.de + */ + +namespace Payone\Core\Test\Unit\Model\Api\Request; + +use Magento\Quote\Model\Quote\Address; +use Payone\Core\Helper\Database; +use Payone\Core\Model\Api\Request\Consumerscore as ClassToTest; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Payone\Core\Helper\Api; +use Payone\Core\Helper\Shop; +use Payone\Core\Model\ResourceModel\CheckedAddresses; + +class ConsumerscoreTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ClassToTest + */ + private $classToTest; + + /** + * @var Api|\PHPUnit_Framework_MockObject_MockObject + */ + private $apiHelper; + + /** + * @var Shop|\PHPUnit_Framework_MockObject_MockObject + */ + private $shopHelper; + + /** + * @var CheckedAddresses|\PHPUnit_Framework_MockObject_MockObject + */ + private $addressesChecked; + + protected function setUp() + { + $objectManager = new ObjectManager($this); + + $databaseHelper = $this->getMockBuilder(Database::class)->disableOriginalConstructor()->getMock(); + $databaseHelper->method('getSequenceNumber')->willReturn('0'); + + $this->apiHelper = $this->getMockBuilder(Api::class)->disableOriginalConstructor()->getMock(); + $this->shopHelper = $this->getMockBuilder(Shop::class)->disableOriginalConstructor()->getMock(); + $this->addressesChecked = $this->getMockBuilder(CheckedAddresses::class)->disableOriginalConstructor()->getMock(); + + $this->classToTest = $objectManager->getObject(ClassToTest::class, [ + 'databaseHelper' => $databaseHelper, + 'apiHelper' => $this->apiHelper, + 'shopHelper' => $this->shopHelper, + 'addressesChecked' => $this->addressesChecked + ]); + } + + public function testSendRequest() + { + $address = $this->getMockBuilder(Address::class)->disableOriginalConstructor()->getMock(); + $address->method('getCountryId')->willReturn('DE'); + + $address->method('getFirstname')->willReturn('Paul'); + $address->method('getLastname')->willReturn('Paytest'); + $address->method('getCompany')->willReturn('Testcompany Ltd.'); + $address->method('getStreet')->willReturn(['Teststr. 5', '1st floor']); + $address->method('getPostcode')->willReturn('12345'); + $address->method('getCity')->willReturn('Berlin'); + $address->method('getRegionCode')->willReturn('Berlin'); + + $this->addressesChecked->method('wasAddressCheckedBefore')->willReturn(false); + + $response = ['status' => 'VALID']; + $this->apiHelper->method('sendApiRequest')->willReturn($response); + + $this->shopHelper->expects($this->any()) + ->method('getConfigParam') + ->willReturnMap([ + ['enabled', 'creditrating', 'payone_protect', null, true], + ['mode', 'creditrating', 'payone_protect', null, 'test'], + ['aid', 'global', 'payone_general', null, '12345'], + ['addresscheck', 'creditrating', 'payone_protect', null, 'test'], + ['type', 'creditrating', 'payone_protect', null, 'test'], + ]); + + $result = $this->classToTest->sendRequest($address); + $this->assertArrayHasKey('status', $result); + } + + public function testSendRequestTrue() + { + $address = $this->getMockBuilder(Address::class)->disableOriginalConstructor()->getMock(); + $address->method('getCountryId')->willReturn('DE'); + + $address->method('getFirstname')->willReturn('Paul'); + $address->method('getLastname')->willReturn('Paytest'); + $address->method('getCompany')->willReturn('Testcompany Ltd.'); + $address->method('getStreet')->willReturn(['Teststr. 5', '1st floor']); + $address->method('getPostcode')->willReturn('12345'); + $address->method('getCity')->willReturn('Berlin'); + $address->method('getRegionCode')->willReturn('Berlin'); + + $this->addressesChecked->method('wasAddressCheckedBefore')->willReturn(true); + + $this->shopHelper->expects($this->any()) + ->method('getConfigParam') + ->willReturnMap([ + ['enabled', 'creditrating', 'payone_protect', null, true], + ['mode', 'creditrating', 'payone_protect', null, 'test'], + ['aid', 'global', 'payone_general', null, '12345'], + ['addresscheck', 'creditrating', 'payone_protect', null, 'test'], + ['type', 'creditrating', 'payone_protect', null, 'test'], + ]); + + $result = $this->classToTest->sendRequest($address); + $this->assertTrue($result); + } + + public function testSendRequestNotNeeded() + { + $address = $this->getMockBuilder(Address::class)->disableOriginalConstructor()->getMock(); + + $this->shopHelper->method('getConfigParam')->willReturn(false); + + $result = $this->classToTest->sendRequest($address); + $this->assertTrue($result); + } +} diff --git a/Test/Unit/Model/Api/Request/DebitTest.php b/Test/Unit/Model/Api/Request/DebitTest.php new file mode 100644 index 00000000..a725e89f --- /dev/null +++ b/Test/Unit/Model/Api/Request/DebitTest.php @@ -0,0 +1,116 @@ +. + * + * PHP version 5 + * + * @category Payone + * @package Payone_Magento2_Plugin + * @author FATCHIP GmbH + * @copyright 2003 - 2017 Payone GmbH + * @license GNU Lesser General Public License + * @link http://www.payone.de + */ + +namespace Payone\Core\Test\Unit\Model\Api\Request; + +use Magento\Sales\Model\Order; +use Payone\Core\Helper\Database; +use Payone\Core\Model\Api\Request\Debit as ClassToTest; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Payone\Core\Model\Methods\PayoneMethod; +use Magento\Payment\Model\Info; +use Payone\Core\Helper\Api; +use Magento\Sales\Model\Order\Creditmemo; +use Magento\Sales\Model\Order\Invoice; +use Payone\Core\Helper\Toolkit; +use Payone\Core\Helper\Shop; + +class DebitTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ClassToTest + */ + private $classToTest; + + /** + * @var Api|\PHPUnit_Framework_MockObject_MockObject + */ + private $apiHelper; + + protected function setUp() + { + $objectManager = new ObjectManager($this); + + $databaseHelper = $this->getMockBuilder(Database::class)->disableOriginalConstructor()->getMock(); + $databaseHelper->method('getSequenceNumber')->willReturn('0'); + + $this->apiHelper = $this->getMockBuilder(Api::class)->disableOriginalConstructor()->getMock(); + + $toolkitHelper = $this->getMockBuilder(Toolkit::class)->disableOriginalConstructor()->getMock(); + $toolkitHelper->method('handleSubstituteReplacement')->willReturn('test text'); + + $shopHelper = $this->getMockBuilder(Shop::class)->disableOriginalConstructor()->getMock(); + $shopHelper->method('getConfigParam')->willReturn('test'); + + $this->classToTest = $objectManager->getObject(ClassToTest::class, [ + 'databaseHelper' => $databaseHelper, + 'apiHelper' => $this->apiHelper, + 'toolkitHelper' => $toolkitHelper, + 'shopHelper' => $shopHelper + ]); + } + + public function testSendRequest() + { + $invoice = $this->getMockBuilder(Invoice::class)->disableOriginalConstructor()->getMock(); + $invoice->method('getIncrementId')->willReturn('12345'); + $invoice->method('getId')->willReturn('12345'); + + $creditmemo = $this->getMockBuilder(Creditmemo::class)->disableOriginalConstructor()->getMock(); + $creditmemo->method('getInvoice')->willReturn($invoice); + $creditmemo->method('getIncrementId')->willReturn('12345'); + + $payment = $this->getMockBuilder(PayoneMethod::class) + ->disableOriginalConstructor() + ->setMethods(['getOperationMode', 'getCreditmemo']) + ->getMock(); + $payment->method('getOperationMode')->willReturn('test'); + $payment->method('getCreditmemo')->willReturn($creditmemo); + + $order = $this->getMockBuilder(Order::class) + ->disableOriginalConstructor() + ->setMethods(['getRealOrderId', 'getOrderCurrencyCode', 'getIncrementId', 'getId', 'getCustomerId']) + ->getMock(); + $order->method('getRealOrderId')->willReturn('54321'); + $order->method('getOrderCurrencyCode')->willReturn('EUR'); + $order->method('getIncrementId')->willReturn('12345'); + $order->method('getId')->willReturn('12345'); + $order->method('getCustomerId')->willReturn('12345'); + + $paymentInfo = $this->getMockBuilder(Info::class) + ->disableOriginalConstructor() + ->setMethods(['getOrder', 'getParentTransactionId']) + ->getMock(); + $paymentInfo->method('getOrder')->willReturn($order); + $paymentInfo->method('getParentTransactionId')->willReturn('12-345'); + + $response = ['status' => 'VALID']; + $this->apiHelper->method('sendApiRequest')->willReturn($response); + + $result = $this->classToTest->sendRequest($payment, $paymentInfo, 100); + $this->assertEquals($response, $result); + } +} diff --git a/Test/Unit/Model/Api/Request/Genericpayment/PayPalExpressTest.php b/Test/Unit/Model/Api/Request/Genericpayment/PayPalExpressTest.php new file mode 100644 index 00000000..fe7c43a8 --- /dev/null +++ b/Test/Unit/Model/Api/Request/Genericpayment/PayPalExpressTest.php @@ -0,0 +1,111 @@ +. + * + * PHP version 5 + * + * @category Payone + * @package Payone_Magento2_Plugin + * @author FATCHIP GmbH + * @copyright 2003 - 2017 Payone GmbH + * @license GNU Lesser General Public License + * @link http://www.payone.de + */ + +namespace Payone\Core\Test\Unit\Model\Api\Request\Genericpayment; + +use Magento\Quote\Model\Quote; +use Magento\Sales\Model\Order; +use Payone\Core\Helper\Database; +use Payone\Core\Model\Api\Request\Genericpayment\PayPalExpress as ClassToTest; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Payone\Core\Model\Methods\PayoneMethod; +use Magento\Payment\Model\Info; +use Payone\Core\Helper\Api; +use Payone\Core\Helper\Shop; +use Payone\Core\Model\Methods\Paypal; + +class CaptureTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ClassToTest + */ + private $classToTest; + + /** + * @var Api|\PHPUnit_Framework_MockObject_MockObject + */ + private $apiHelper; + + /** + * @var Shop|\PHPUnit_Framework_MockObject_MockObject + */ + private $shopHelper; + + protected function setUp() + { + $objectManager = new ObjectManager($this); + + $this->apiHelper = $this->getMockBuilder(Api::class)->disableOriginalConstructor()->getMock(); + $this->shopHelper = $this->getMockBuilder(Shop::class)->disableOriginalConstructor()->getMock(); + + $this->classToTest = $objectManager->getObject(ClassToTest::class, [ + 'shopHelper' => $this->shopHelper, + 'apiHelper' => $this->apiHelper + ]); + } + + public function testSendRequest() + { + $quote = $this->getMockBuilder(Quote::class)->disableOriginalConstructor()->getMock(); + $quote->method('getGrandTotal')->willReturn(123); + $quote->method('getQuoteCurrencyCode')->willReturn('EUR'); + + $payment = $this->getMockBuilder(Paypal::class)->disableOriginalConstructor()->getMock(); + $payment->method('getOperationMode')->willReturn('test'); + $payment->method('getSuccessUrl')->willReturn('http://testdomain.com'); + $payment->method('errorurl')->willReturn('http://testdomain.com'); + $payment->method('backurl')->willReturn('http://testdomain.com'); + + $this->shopHelper->method('getConfigParam')->willReturn('12345'); + + $response = ['status' => 'APPROVED']; + $this->apiHelper->method('sendApiRequest')->willReturn($response); + + $result = $this->classToTest->sendRequest($quote, $payment, 100); + $this->assertEquals($response, $result); + } + + public function testSendRequestNoWorkorderId() + { + $quote = $this->getMockBuilder(Quote::class)->disableOriginalConstructor()->getMock(); + $quote->method('getGrandTotal')->willReturn(123); + $quote->method('getQuoteCurrencyCode')->willReturn('EUR'); + + $payment = $this->getMockBuilder(Paypal::class)->disableOriginalConstructor()->getMock(); + $payment->method('getOperationMode')->willReturn('test'); + $payment->method('getSuccessUrl')->willReturn('http://testdomain.com'); + $payment->method('errorurl')->willReturn('http://testdomain.com'); + $payment->method('backurl')->willReturn('http://testdomain.com'); + + $this->shopHelper->method('getConfigParam')->willReturn('12345'); + + $response = ['status' => 'APPROVED']; + $this->apiHelper->method('sendApiRequest')->willReturn($response); + + $result = $this->classToTest->sendRequest($quote, $payment); + $this->assertEquals($response, $result); + } +} diff --git a/Test/Unit/Model/Api/Request/GetfileTest.php b/Test/Unit/Model/Api/Request/GetfileTest.php new file mode 100644 index 00000000..3703d998 --- /dev/null +++ b/Test/Unit/Model/Api/Request/GetfileTest.php @@ -0,0 +1,63 @@ +. + * + * PHP version 5 + * + * @category Payone + * @package Payone_Magento2_Plugin + * @author FATCHIP GmbH + * @copyright 2003 - 2017 Payone GmbH + * @license GNU Lesser General Public License + * @link http://www.payone.de + */ + +namespace Payone\Core\Test\Unit\Model\Api\Request; + +use Magento\Sales\Model\Order; +use Payone\Core\Model\Api\Request\Getfile as ClassToTest; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; + +class GetfileTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ClassToTest + */ + private $classToTest; + + protected function setUp() + { + $objectManager = new ObjectManager($this); + + $this->classToTest = $objectManager->getObject(ClassToTest::class); + } + + public function testSendRequest() + { + $order = $this->getMockBuilder(Order::class) + ->disableOriginalConstructor() + ->setMethods(['getPayoneMandateId', 'getPayoneMode']) + ->getMock(); + $order->method('getPayoneMandateId')->willReturn('12345'); + $order->method('getPayoneMode')->willReturn('test'); + + $result = $this->classToTest->getOrderId(); + $expected = ''; + $this->assertEquals($expected, $result); + + $this->setExpectedException(\Exception::class); // script wont be able to successfully contact payone-server + $this->classToTest->sendRequest($order); + } +} diff --git a/Test/Unit/Model/Api/Request/ManagemandateTest.php b/Test/Unit/Model/Api/Request/ManagemandateTest.php new file mode 100644 index 00000000..38b808d3 --- /dev/null +++ b/Test/Unit/Model/Api/Request/ManagemandateTest.php @@ -0,0 +1,112 @@ +. + * + * PHP version 5 + * + * @category Payone + * @package Payone_Magento2_Plugin + * @author FATCHIP GmbH + * @copyright 2003 - 2017 Payone GmbH + * @license GNU Lesser General Public License + * @link http://www.payone.de + */ + +namespace Payone\Core\Test\Unit\Model\Api\Request; + +use Magento\Quote\Model\Quote; +use Payone\Core\Helper\Database; +use Payone\Core\Helper\Shop; +use Payone\Core\Model\Api\Request\Managemandate as ClassToTest; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Payone\Core\Model\Methods\PayoneMethod; +use Magento\Payment\Model\Info; +use Payone\Core\Helper\Api; +use Magento\Customer\Api\Data\CustomerInterface; +use Magento\Quote\Model\Quote\Address; + +class ManagemandateTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ClassToTest + */ + private $classToTest; + + /** + * @var Api|\PHPUnit_Framework_MockObject_MockObject + */ + private $apiHelper; + + /** + * @var Shop|\PHPUnit_Framework_MockObject_MockObject + */ + private $shopHelper; + + protected function setUp() + { + $objectManager = new ObjectManager($this); + + $databaseHelper = $this->getMockBuilder(Database::class)->disableOriginalConstructor()->getMock(); + $databaseHelper->method('getPayoneUserIdByCustNr')->willReturn('15'); + + $this->apiHelper = $this->getMockBuilder(Api::class)->disableOriginalConstructor()->getMock(); + $this->shopHelper = $this->getMockBuilder(Shop::class)->disableOriginalConstructor()->getMock(); + + $this->classToTest = $objectManager->getObject(ClassToTest::class, [ + 'databaseHelper' => $databaseHelper, + 'shopHelper' => $this->shopHelper, + 'apiHelper' => $this->apiHelper + ]); + } + + public function testSendRequest() + { + $paymentInfo = $this->getMockBuilder(Info::class)->disableOriginalConstructor()->getMock(); + $paymentInfo->method('getAdditionalInformation')->willReturn('test value'); + + $payment = $this->getMockBuilder(PayoneMethod::class)->disableOriginalConstructor()->getMock(); + $payment->method('getOperationMode')->willReturn('test'); + $payment->method('getInfoInstance')->willReturn($paymentInfo); + + $customer = $this->getMockBuilder(CustomerInterface::class)->disableOriginalConstructor()->getMock(); + $customer->method('getId')->willReturn('12345'); + $customer->method('getGender')->willReturn('m'); + $customer->method('getEmail')->willReturn('test@test.de'); + $customer->method('getDob')->willReturn('20000101'); + + $address = $this->getMockBuilder(Address::class)->disableOriginalConstructor()->getMock(); + $address->method('getCountryId')->willReturn('DE'); + $address->method('getFirstname')->willReturn('Paul'); + $address->method('getLastname')->willReturn('Paytest'); + $address->method('getCompany')->willReturn('Testcompany Ltd.'); + $address->method('getStreet')->willReturn(['Teststr. 5', '1st floor']); + $address->method('getPostcode')->willReturn('12345'); + $address->method('getCity')->willReturn('Berlin'); + $address->method('getRegionCode')->willReturn('Berlin'); + $address->method('getTelephone')->willReturn('0301234567'); + $address->method('getVatId')->willReturn('12345'); + + $quote = $this->getMockBuilder(Quote::class)->disableOriginalConstructor()->getMock(); + $quote->method('getCustomer')->willReturn($customer); + $quote->method('getQuoteCurrencyCode')->willReturn('EUR'); + $quote->method('getBillingAddress')->willReturn($address); + + $response = ['status' => 'APPROVED']; + $this->apiHelper->method('sendApiRequest')->willReturn($response); + + $result = $this->classToTest->sendRequest($payment, $quote); + $this->assertArrayHasKey('status', $result); + } +} diff --git a/Test/Unit/Model/Api/Request/UpdateuserTest.php b/Test/Unit/Model/Api/Request/UpdateuserTest.php new file mode 100644 index 00000000..ff5a0308 --- /dev/null +++ b/Test/Unit/Model/Api/Request/UpdateuserTest.php @@ -0,0 +1,97 @@ +. + * + * PHP version 5 + * + * @category Payone + * @package Payone_Magento2_Plugin + * @author FATCHIP GmbH + * @copyright 2003 - 2017 Payone GmbH + * @license GNU Lesser General Public License + * @link http://www.payone.de + */ + +namespace Payone\Core\Test\Unit\Model\Api\Request; + +use Magento\Quote\Model\Quote\Address; +use Magento\Sales\Model\Order; +use Payone\Core\Model\Api\Request\Updateuser as ClassToTest; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Payone\Core\Model\Methods\PayoneMethod; +use Payone\Core\Helper\Api; +use Payone\Core\Helper\Customer; +use Payone\Core\Model\PayoneConfig; + +class UpdateuserTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ClassToTest + */ + private $classToTest; + + /** + * @var Api|\PHPUnit_Framework_MockObject_MockObject + */ + private $apiHelper; + + protected function setUp() + { + $objectManager = new ObjectManager($this); + + $this->apiHelper = $this->getMockBuilder(Api::class)->disableOriginalConstructor()->getMock(); + + $customerHelper = $this->getMockBuilder(Customer::class)->disableOriginalConstructor()->getMock(); + $customerHelper->method('getSalutationParameter')->willReturn('mr'); + $customerHelper->method('getGenderParameter')->willReturn('m'); + + $this->classToTest = $objectManager->getObject(ClassToTest::class, [ + 'apiHelper' => $this->apiHelper, + 'customerHelper' => $customerHelper + ]); + } + + public function testSendRequest() + { + $address = $this->getMockBuilder(Address::class)->disableOriginalConstructor()->getMock(); + $address->method('getCountryId')->willReturn('DE'); + $address->method('getFirstname')->willReturn('Paul'); + $address->method('getLastname')->willReturn('Paytest'); + $address->method('getCompany')->willReturn('Testcompany Ltd.'); + $address->method('getStreet')->willReturn(['Teststr. 5', '1st floor']); + $address->method('getPostcode')->willReturn('12345'); + $address->method('getCity')->willReturn('Berlin'); + $address->method('getRegionCode')->willReturn('Berlin'); + $address->method('getTelephone')->willReturn('0301234567'); + $address->method('getVatId')->willReturn('12345'); + + $order = $this->getMockBuilder(Order::class)->disableOriginalConstructor()->getMock(); + $order->method('getRealOrderId')->willReturn('12345'); + $order->method('getCustomerGender')->willReturn('m'); + $order->method('getCustomerEmail')->willReturn('test@test.com'); + $order->method('getCustomerDob')->willReturn('20000101'); + $order->method('getBillingAddress')->willReturn($address); + + $payment = $this->getMockBuilder(PayoneMethod::class)->disableOriginalConstructor()->getMock(); + $payment->method('getOperationMode')->willReturn('test'); + $payment->method('getCode')->willReturn(PayoneConfig::METHOD_KLARNA); + + $response = ['status' => 'APPROVED']; + $this->apiHelper->method('sendApiRequest')->willReturn($response); + + $result = $this->classToTest->sendRequest($order, $payment, 100); + $this->assertArrayHasKey('status', $result); + } +} diff --git a/Test/Unit/Model/Methods/BarzahlenTest.php b/Test/Unit/Model/Methods/BarzahlenTest.php index c1057386..ec4566bd 100644 --- a/Test/Unit/Model/Methods/BarzahlenTest.php +++ b/Test/Unit/Model/Methods/BarzahlenTest.php @@ -30,6 +30,8 @@ use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\Sales\Model\Order; use Payone\Core\Model\PayoneConfig; +use Payone\Core\Model\Api\Request\Authorization; +use Magento\Payment\Model\Info; class BarzahlenTest extends \PHPUnit_Framework_TestCase { @@ -43,11 +45,20 @@ class BarzahlenTest extends \PHPUnit_Framework_TestCase */ private $objectManager; + /** + * @var Authorization|\PHPUnit_Framework_MockObject_MockObject + */ + private $authorizationRequest; + protected function setUp() { $this->objectManager = new ObjectManager($this); - $this->classToTest = $this->objectManager->getObject(ClassToTest::class); + $this->authorizationRequest = $this->getMockBuilder(Authorization::class)->disableOriginalConstructor()->getMock(); + + $this->classToTest = $this->objectManager->getObject(ClassToTest::class, [ + 'authorizationRequest' => $this->authorizationRequest, + ]); } public function testGetAuthorizationMode() @@ -65,4 +76,18 @@ public function testGetPaymentSpecificParameters() $expected = ['cashtype' => 'BZN', 'api_version' => '3.10']; $this->assertEquals($expected, $result); } + + public function testAuthorize() + { + $order = $this->getMockBuilder(Order::class)->disableOriginalConstructor()->getMock(); + + $paymentInfo = $this->getMockBuilder(Info::class)->disableOriginalConstructor()->setMethods(['getOrder'])->getMock(); + $paymentInfo->method('getOrder')->willReturn($order); + + $aResponse = ['status' => 'APPROVED', 'txid' => '12345', 'redirecturl' => 'http://testdomain.com', 'add_paydata[instruction_notes]' => 'test']; + $this->authorizationRequest->method('sendRequest')->willReturn($aResponse); + + $result = $this->classToTest->authorize($paymentInfo, 100); + $this->assertInstanceOf(ClassToTest::class, $result); + } } diff --git a/Test/Unit/Model/Methods/BaseMethodTest.php b/Test/Unit/Model/Methods/BaseMethodTest.php new file mode 100644 index 00000000..59a8ec60 --- /dev/null +++ b/Test/Unit/Model/Methods/BaseMethodTest.php @@ -0,0 +1,275 @@ +. + * + * PHP version 5 + * + * @category Payone + * @package Payone_Magento2_Plugin + * @author FATCHIP GmbH + * @copyright 2003 - 2017 Payone GmbH + * @license GNU Lesser General Public License + * @link http://www.payone.de + */ + +namespace Payone\Core\Test\Unit\Model\Methods; + +use Magento\Payment\Model\Method\AbstractMethod; +use Magento\Sales\Model\Order; +use Payone\Core\Model\Methods\Paydirekt as ClassToTest; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Payone\Core\Helper\Shop; +use Magento\Framework\App\Config\ScopeConfigInterface; +use Payone\Core\Model\Methods\Paydirekt; +use Payone\Core\Model\PayoneConfig; +use Magento\Payment\Model\Info; +use Payone\Core\Model\Api\Request\Authorization; +use Payone\Core\Model\Api\Request\Debit; +use Magento\Framework\Exception\LocalizedException; +use Payone\Core\Model\Api\Request\Capture; + +class BaseMethodTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ClassToTest + */ + private $classToTest; + + /** + * @var ObjectManager + */ + private $objectManager; + + /** + * @var Shop|\PHPUnit_Framework_MockObject_MockObject + */ + private $shopHelper; + + /** + * @var ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject + */ + private $scopeConfig; + + /** + * @var Authorization|\PHPUnit_Framework_MockObject_MockObject + */ + private $authorizationRequest; + + /** + * @var Debit|\PHPUnit_Framework_MockObject_MockObject + */ + private $debitRequest; + + /** + * PAYONE capture request model + * + * @var Capture|\PHPUnit_Framework_MockObject_MockObject + */ + private $captureRequest; + + protected function setUp() + { + $this->objectManager = new ObjectManager($this); + + $this->shopHelper = $this->getMockBuilder(Shop::class)->disableOriginalConstructor()->getMock(); + $this->scopeConfig = $this->getMockBuilder(ScopeConfigInterface::class)->disableOriginalConstructor()->getMock(); + $this->authorizationRequest = $this->getMockBuilder(Authorization::class)->disableOriginalConstructor()->getMock(); + $this->debitRequest = $this->getMockBuilder(Debit::class)->disableOriginalConstructor()->getMock(); + $this->captureRequest = $this->getMockBuilder(Capture::class)->disableOriginalConstructor()->getMock(); + + $this->classToTest = $this->objectManager->getObject(ClassToTest::class, [ + 'shopHelper' => $this->shopHelper, + 'scopeConfig' => $this->scopeConfig, + 'authorizationRequest' => $this->authorizationRequest, + 'debitRequest' => $this->debitRequest, + 'captureRequest' => $this->captureRequest + ]); + } + + public function testGetInstructions() + { + $expected = 'instruction text'; + $this->scopeConfig->method('getValue')->willReturn($expected); + $result = $this->classToTest->getInstructions(); + $this->assertEquals($expected, $result); + } + + public function testGetConfigPaymentAction() + { + $result = $this->classToTest->getConfigPaymentAction(); + $expected = AbstractMethod::ACTION_AUTHORIZE; + $this->assertEquals($expected, $result); + } + + public function testCanUseForCountry() + { + $this->shopHelper->expects($this->any()) + ->method('getConfigParam') + ->willReturnMap([ + ['allowspecific', 'global', 'payone_general', null, 0], + ['specificcountry', 'global', 'payone_general', null, 'DE,AT'] + ]); + $result = $this->classToTest->canUseForCountry('DE'); + $this->assertTrue($result); + } + + public function testAuthorize() + { + $order = $this->getMockBuilder(Order::class)->disableOriginalConstructor()->getMock(); + + $paymentInfo = $this->getMockBuilder(Info::class)->disableOriginalConstructor()->setMethods(['getOrder'])->getMock(); + $paymentInfo->method('getOrder')->willReturn($order); + + $aResponse = ['status' => 'REDIRECT', 'txid' => '12345', 'redirecturl' => 'http://testdomain.com']; + $this->authorizationRequest->method('sendRequest')->willReturn($aResponse); + + $result = $this->classToTest->authorize($paymentInfo, 100); + $this->assertInstanceOf(Paydirekt::class, $result); + } + + public function testAuthorizeError() + { + $order = $this->getMockBuilder(Order::class)->disableOriginalConstructor()->getMock(); + + $paymentInfo = $this->getMockBuilder(Info::class)->disableOriginalConstructor()->setMethods(['getOrder'])->getMock(); + $paymentInfo->method('getOrder')->willReturn($order); + + $aResponse = ['status' => 'ERROR', 'errorcode' => '42', 'customermessage' => 'Test error']; + $this->authorizationRequest->method('sendRequest')->willReturn($aResponse); + + $this->setExpectedException(LocalizedException::class); + $this->classToTest->authorize($paymentInfo, 100); + } + + public function testRefund() + { + $paymentInfo = $this->getMockBuilder(Info::class)->disableOriginalConstructor()->getMock(); + + $aResponse = ['status' => 'APPROVED']; + $this->debitRequest->method('sendRequest')->willReturn($aResponse); + + $result = $this->classToTest->refund($paymentInfo, 100); + $this->assertInstanceOf(Paydirekt::class, $result); + } + + public function testRefundError() + { + $paymentInfo = $this->getMockBuilder(Info::class)->disableOriginalConstructor()->getMock(); + + $aResponse = ['status' => 'ERROR', 'errorcode' => '42', 'customermessage' => 'Test error']; + $this->debitRequest->method('sendRequest')->willReturn($aResponse); + + $this->setExpectedException(LocalizedException::class); + $this->classToTest->refund($paymentInfo, 100); + } + + public function testRefundNoResponse() + { + $paymentInfo = $this->getMockBuilder(Info::class)->disableOriginalConstructor()->getMock(); + + $this->debitRequest->method('sendRequest')->willReturn(false); + + $this->setExpectedException(LocalizedException::class); + $this->classToTest->refund($paymentInfo, 100); + } + + public function testCapture() + { + $order = $this->getMockBuilder(Order::class)->disableOriginalConstructor()->getMock(); + + $paymentInfo = $this->getMockBuilder(Info::class) + ->disableOriginalConstructor() + ->setMethods(['getOrder', 'getParentTransactionId']) + ->getMock(); + $paymentInfo->method('getOrder')->willReturn($order); + $paymentInfo->method('getParentTransactionId')->willReturn(true); + + $aResponse = ['status' => 'APPROVED']; + $this->captureRequest->method('sendRequest')->willReturn($aResponse); + + $result = $this->classToTest->capture($paymentInfo, 100); + $this->assertInstanceOf(Paydirekt::class, $result); + } + + public function testCaptureError() + { + $order = $this->getMockBuilder(Order::class)->disableOriginalConstructor()->getMock(); + + $paymentInfo = $this->getMockBuilder(Info::class) + ->disableOriginalConstructor() + ->setMethods(['getOrder', 'getParentTransactionId']) + ->getMock(); + $paymentInfo->method('getOrder')->willReturn($order); + $paymentInfo->method('getParentTransactionId')->willReturn(true); + + $aResponse = ['status' => 'ERROR', 'errorcode' => '42', 'customermessage' => 'Test error']; + $this->captureRequest->method('sendRequest')->willReturn($aResponse); + + $this->setExpectedException(LocalizedException::class); + $this->classToTest->capture($paymentInfo, 100); + } + + public function testCaptureNoResponse() + { + $order = $this->getMockBuilder(Order::class)->disableOriginalConstructor()->getMock(); + + $paymentInfo = $this->getMockBuilder(Info::class) + ->disableOriginalConstructor() + ->setMethods(['getOrder', 'getParentTransactionId']) + ->getMock(); + $paymentInfo->method('getOrder')->willReturn($order); + $paymentInfo->method('getParentTransactionId')->willReturn(true); + + $this->captureRequest->method('sendRequest')->willReturn(false); + + $this->setExpectedException(LocalizedException::class); + $this->classToTest->capture($paymentInfo, 100); + } + + public function testCaptureAuth() + { + $order = $this->getMockBuilder(Order::class)->disableOriginalConstructor()->getMock(); + + $paymentInfo = $this->getMockBuilder(Info::class) + ->disableOriginalConstructor() + ->setMethods(['getOrder', 'getParentTransactionId']) + ->getMock(); + $paymentInfo->method('getOrder')->willReturn($order); + $paymentInfo->method('getParentTransactionId')->willReturn(false); + + $aResponse = ['status' => 'REDIRECT', 'txid' => '12345', 'redirecturl' => 'http://testdomain.com']; + $this->authorizationRequest->method('sendRequest')->willReturn($aResponse); + + $result = $this->classToTest->capture($paymentInfo, 100); + $this->assertInstanceOf(Paydirekt::class, $result); + } + + public function testCanUseForCountryFalse() + { + $this->shopHelper->expects($this->any()) + ->method('getConfigParam') + ->willReturnMap( + [ + ['allowspecific', 'global', 'payone_general', null, 0], + ['specificcountry', 'global', 'payone_general', null, 'DE,AT'], + ['use_global', PayoneConfig::METHOD_PAYDIREKT, 'payone_payment', null, '0'], + ['allowspecific', PayoneConfig::METHOD_PAYDIREKT, 'payone_payment', null, '1'], + ['specificcountry', PayoneConfig::METHOD_PAYDIREKT, 'payone_payment', null, 'NL,AT'], + ] + ); + $result = $this->classToTest->canUseForCountry('DE'); + $this->assertFalse($result); + } +} diff --git a/Test/Unit/Model/Methods/InvoiceTest.php b/Test/Unit/Model/Methods/InvoiceTest.php new file mode 100644 index 00000000..19efe2c6 --- /dev/null +++ b/Test/Unit/Model/Methods/InvoiceTest.php @@ -0,0 +1,60 @@ +. + * + * PHP version 5 + * + * @category Payone + * @package Payone_Magento2_Plugin + * @author FATCHIP GmbH + * @copyright 2003 - 2017 Payone GmbH + * @license GNU Lesser General Public License + * @link http://www.payone.de + */ + +namespace Payone\Core\Test\Unit\Model\Methods; + +use Payone\Core\Model\Methods\Invoice as ClassToTest; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Magento\Sales\Model\Order; + +class InvoiceTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ClassToTest + */ + private $classToTest; + + /** + * @var ObjectManager + */ + private $objectManager; + + protected function setUp() + { + $this->objectManager = new ObjectManager($this); + + $this->classToTest = $this->objectManager->getObject(ClassToTest::class); + } + + public function testGetPaymentSpecificParameters() + { + $order = $this->getMockBuilder(Order::class)->disableOriginalConstructor()->getMock(); + + $result = $this->classToTest->getPaymentSpecificParameters($order); + $expected = []; + $this->assertEquals($expected, $result); + } +} diff --git a/Test/Unit/Model/Methods/OnlineBankTransfer/SofortUeberweisungTest.php b/Test/Unit/Model/Methods/OnlineBankTransfer/SofortUeberweisungTest.php index c20ce4a6..3736ad96 100644 --- a/Test/Unit/Model/Methods/OnlineBankTransfer/SofortUeberweisungTest.php +++ b/Test/Unit/Model/Methods/OnlineBankTransfer/SofortUeberweisungTest.php @@ -81,4 +81,10 @@ public function testAssignData() $result = $this->classToTest->assignData($data); $this->assertInstanceOf(ClassToTest::class, $result); } + + public function testIsGroupMethod() + { + $result = $this->classToTest->isGroupMethod(); + $this->assertTrue($result); + } } diff --git a/Test/Unit/Model/Methods/PayoneMethodTest.php b/Test/Unit/Model/Methods/PayoneMethodTest.php index 309bccd0..4878258a 100644 --- a/Test/Unit/Model/Methods/PayoneMethodTest.php +++ b/Test/Unit/Model/Methods/PayoneMethodTest.php @@ -29,6 +29,7 @@ use Payone\Core\Model\Methods\Paydirekt as ClassToTest; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Payone\Core\Helper\Shop; +use Payone\Core\Model\PayoneConfig; class PayoneMethodTest extends \PHPUnit_Framework_TestCase { @@ -43,7 +44,7 @@ class PayoneMethodTest extends \PHPUnit_Framework_TestCase private $objectManager; /** - * @var Shop + * @var Shop|\PHPUnit_Framework_MockObject_MockObject */ private $shopHelper; @@ -64,4 +65,66 @@ public function testGetClearingtype() $expected = 'wlt'; $this->assertEquals($expected, $result); } + + public function testGetAuthorizationMode() + { + $expected = 'custom_request_type'; + $this->shopHelper->expects($this->any()) + ->method('getConfigParam') + ->willReturnMap( + [ + ['request_type', 'global', 'payone_general', null, 'global_request_type'], + ['use_global', PayoneConfig::METHOD_PAYDIREKT, 'payone_payment', null, '0'], + ['request_type', PayoneConfig::METHOD_PAYDIREKT, 'payone_payment', null, $expected] + ] + ); + $result = $this->classToTest->getAuthorizationMode(); + $this->assertEquals($expected, $result); + } + + public function testGetOperationMode() + { + $expected = 'operation_mode'; + $this->shopHelper->method('getConfigParam')->willReturn($expected); + $result = $this->classToTest->getOperationMode(); + $this->assertEquals($expected, $result); + } + + public function testNeedsRedirectUrls() + { + $result = $this->classToTest->needsRedirectUrls(); + $this->assertTrue($result); + } + + public function testNeedsProductInfo() + { + $result = $this->classToTest->needsProductInfo(); + $this->assertFalse($result); + } + + public function testHasCustomConfig() + { + $this->shopHelper->method('getConfigParam')->willReturn('1'); + $result = $this->classToTest->hasCustomConfig(); + $this->assertFalse($result); + } + + public function testIsGroupMethod() + { + $result = $this->classToTest->isGroupMethod(); + $this->assertFalse($result); + } + + public function testGetGroupName() + { + $result = $this->classToTest->getGroupName(); + $this->assertFalse($result); + } + + public function testGetNarrativeTextMaxLength() + { + $result = $this->classToTest->getNarrativeTextMaxLength(); + $expected = 37; + $this->assertEquals($expected, $result); + } } diff --git a/Test/Unit/Model/Methods/PaypalTest.php b/Test/Unit/Model/Methods/PaypalTest.php index 01b0c5f5..c4a6354e 100644 --- a/Test/Unit/Model/Methods/PaypalTest.php +++ b/Test/Unit/Model/Methods/PaypalTest.php @@ -95,4 +95,27 @@ public function testGetSuccessUrl() $result = $this->classToTest->getSuccessUrl(); $this->assertEquals($expected, $result); } + + public function testGetCancelUrl() + { + $expected = 'http://testdomain.org'; + + $result = $this->classToTest->getCancelUrl(); + $this->assertEquals($expected, $result); + } + + public function testGetErrorUrl() + { + $expected = 'http://testdomain.org'; + + $result = $this->classToTest->getErrorUrl(); + $this->assertEquals($expected, $result); + } + + public function testFormatReferenceNumber() + { + $expected = 'prefix_000012345'; + $result = $this->classToTest->formatReferenceNumber($expected); + $this->assertEquals($expected, $result); + } }