17 use Magento\Sales\Api\Data\OrderPaymentExtensionInterface;
24 use PHPUnit_Framework_MockObject_MockObject as MockObject;
35 private $objectManager;
40 private $vaultProvider;
45 $this->vaultProvider = $this->createMock(MethodInterface::class);
52 public function testAuthorizeNotOrderPayment()
54 $paymentModel = $this->createMock(InfoInterface::class);
57 $model = $this->objectManager->getObject(Vault::class);
58 $model->authorize($paymentModel, 0);
67 public function testAuthorizeNoTokenMetadata(array $additionalInfo)
69 $paymentModel = $this->getMockBuilder(Payment::class)
70 ->disableOriginalConstructor()
73 $paymentModel->expects(static::once())
74 ->method(
'getAdditionalInformation')
75 ->willReturn($additionalInfo);
78 $model = $this->objectManager->getObject(Vault::class);
79 $model->authorize($paymentModel, 0);
89 [
'additionalInfo' => []],
90 [
'additionalInfo' => [
'customer_id' => 1]],
91 [
'additionalInfo' => [
'public_hash' =>
null]],
99 public function testAuthorizeNoToken()
102 $publicHash =
'token_public_hash';
104 $paymentModel = $this->getMockBuilder(Payment::class)
105 ->disableOriginalConstructor()
107 $tokenManagement = $this->createMock(PaymentTokenManagementInterface::class);
109 $paymentModel->expects(static::once())
110 ->method(
'getAdditionalInformation')
117 $tokenManagement->expects(static::once())
118 ->method(
'getByPublicHash')
123 $model = $this->objectManager->getObject(
126 'tokenManagement' => $tokenManagement
129 $model->authorize($paymentModel, 0);
132 public function testAuthorize()
135 $publicHash =
'token_public_hash';
136 $vaultProviderCode =
'vault_provider_code';
139 $paymentModel = $this->getMockBuilder(Payment::class)
140 ->disableOriginalConstructor()
143 ->setMethods([
'setVaultPaymentToken'])
144 ->getMockForAbstractClass();
146 $commandManagerPool = $this->createMock(CommandManagerPoolInterface::class);
147 $commandManager = $this->createMock(CommandManagerInterface::class);
149 $tokenManagement = $this->createMock(PaymentTokenManagementInterface::class);
150 $token = $this->createMock(PaymentTokenInterface::class);
152 $paymentModel->expects(static::once())
153 ->method(
'getAdditionalInformation')
160 $tokenManagement->expects(static::once())
161 ->method(
'getByPublicHash')
164 $paymentModel->expects(static::once())
165 ->method(
'getExtensionAttributes')
168 ->method(
'setVaultPaymentToken')
171 $this->vaultProvider->expects(static::atLeastOnce())
173 ->willReturn($vaultProviderCode);
174 $commandManagerPool->expects(static::once())
176 ->with($vaultProviderCode)
177 ->willReturn($commandManager);
178 $commandManager->expects(static::once())
179 ->method(
'executeByCode')
188 $paymentModel->expects(static::once())
189 ->method(
'setMethod')
190 ->with($vaultProviderCode);
193 $model = $this->objectManager->getObject(
196 'tokenManagement' => $tokenManagement,
197 'commandManagerPool' => $commandManagerPool,
198 'vaultProvider' => $this->vaultProvider
208 public function testCaptureNotOrderPayment()
210 $paymentModel = $this->createMock(InfoInterface::class);
213 $model = $this->objectManager->getObject(Vault::class);
214 $model->capture($paymentModel, 0);
221 public function testCapture()
223 $paymentModel = $this->getMockBuilder(Payment::class)
224 ->disableOriginalConstructor()
227 $authorizationTransaction = $this->createMock(TransactionInterface::class);
228 $paymentModel->expects(static::once())
229 ->method(
'getAuthorizationTransaction')
230 ->willReturn($authorizationTransaction);
233 $model = $this->objectManager->getObject(Vault::class);
234 $model->capture($paymentModel, 0);
241 public function testIsAvailable($isAvailableProvider, $isActive, $expected)
244 $quote = $this->getMockForAbstractClass(CartInterface::class);
245 $config = $this->getMockForAbstractClass(ConfigInterface::class);
247 $this->vaultProvider->expects(static::once())
248 ->method(
'isAvailable')
250 ->willReturn($isAvailableProvider);
252 $config->expects(static::any())
255 ->willReturn($isActive);
257 $quote->expects(static::any())
258 ->method(
'getStoreId')
262 $model = $this->objectManager->getObject(Vault::class, [
264 'vaultProvider' => $this->vaultProvider
267 static::assertEquals($expected, $actual);
277 [
'isAvailableProvider' =>
true,
'isActiveVault' =>
false,
'expected' =>
false],
278 [
'isAvailableProvider' =>
false,
'isActiveVault' =>
false,
'expected' =>
false],
279 [
'isAvailableProvider' =>
false,
'isActiveVault' =>
true,
'expected' =>
false],
280 [
'isAvailableProvider' =>
true,
'isActiveVault' =>
true,
'expected' =>
true],
287 public function testIsAvailableWithoutQuote()
290 $config = $this->getMockForAbstractClass(ConfigInterface::class);
292 $this->vaultProvider->expects(static::once())
293 ->method(
'isAvailable')
297 $config->expects(static::once())
303 $model = $this->objectManager->getObject(Vault::class, [
305 'vaultProvider' => $this->vaultProvider
317 public function testCanUseInternal($configValue, $paymentValue, $expected)
319 $handlerPool = $this->createMock(ValueHandlerPoolInterface::class);
320 $handler = $this->createMock(ValueHandlerInterface::class);
322 $handlerPool->expects(static::once())
324 ->with(
'can_use_internal')
329 ->with([
'field' =>
'can_use_internal'],
null)
330 ->willReturn($configValue);
332 $this->vaultProvider->expects(static::any())
333 ->method(
'canUseInternal')
334 ->willReturn($paymentValue);
337 $model = $this->objectManager->getObject(Vault::class, [
338 'vaultProvider' => $this->vaultProvider,
339 'valueHandlerPool' => $handlerPool,
341 static::assertEquals($expected,
$model->canUseInternal());
351 [
'configValue' =>
true,
'paymentValue' =>
true,
'expected' =>
true],
352 [
'configValue' =>
true,
'paymentValue' =>
null,
'expected' =>
true],
353 [
'configValue' =>
true,
'paymentValue' =>
false,
'expected' =>
true],
354 [
'configValue' =>
false,
'paymentValue' =>
true,
'expected' =>
false],
355 [
'configValue' =>
false,
'paymentValue' =>
false,
'expected' =>
false],
356 [
'configValue' =>
null,
'paymentValue' =>
true,
'expected' =>
true],
357 [
'configValue' =>
null,
'paymentValue' =>
false,
'expected' =>
false],
358 [
'configValue' =>
null,
'paymentValue' =>
null,
'expected' =>
false],
internalUsageDataProvider()
isAvailableDataProvider()
const VAULT_AUTHORIZE_COMMAND
additionalInfoDataProvider()
catch(\Exception $e) $handler