/** * @test */ public function shouldCaptureWithObtainedCreditCardWhenTokenReturned() { $gatewayMock = $this->createGatewayMock(); $gatewayMock->expects($this->once())->method('execute')->with($this->isInstanceOf('Payum\\Core\\Request\\ObtainCreditCard'))->will($this->returnCallback(function (ObtainCreditCard $request) { $card = new CreditCard(); $card->setToken('theCreditCardToken'); $request->set($card); })); $apiMock = $this->createApiMock(); $apiMock->expects($this->once())->method('payment')->will($this->returnValue(array('FOO' => 'FOOVAL', 'BAR' => 'BARVAL'))); $action = new CaptureAction(); $action->setApi($apiMock); $action->setGateway($gatewayMock); $request = new Capture(array('AMOUNT' => 10, 'CLIENTUSERAGENT' => 'anAgent', 'CLIENTIP' => '127.0.0.1')); //guard $this->assertTrue($action->supports($request)); $action->execute($request); $model = iterator_to_array($request->getModel()); $this->assertEquals(['AMOUNT' => 10, 'CLIENTUSERAGENT' => 'anAgent', 'CLIENTIP' => '127.0.0.1', 'ALIAS' => 'theCreditCardToken', 'FOO' => 'FOOVAL', 'BAR' => 'BARVAL'], $model); }
/** * @test */ public function shouldAllowGetPreviouslySetToken() { $card = new CreditCard(); $card->setToken('theToken'); $this->assertEquals('theToken', $card->getToken()); }
/** * @test */ public function shouldCorrectlyConvertCreditCardToken() { $creditCard = new CreditCard(); $creditCard->setToken('theCustomerId'); $order = new Payment(); $order->setCreditCard($creditCard); $action = new ConvertPaymentAction(); $action->execute($convert = new Convert($order, 'array')); $details = $convert->getResult(); $this->assertNotEmpty($details); $this->assertArrayHasKey('customer', $details); $this->assertEquals('theCustomerId', $details['customer']); }
/** * @test */ public function shouldObtainCreditCardAndPopulateCardReferenceFieldIfNotSet() { $firstModel = new \stdClass(); $model = new \ArrayObject([]); $responseMock = $this->getMock(OmnipayAbstractResponse::class, [], [], '', false); $responseMock->expects($this->once())->method('getData')->willReturn([]); $requestMock = $this->getMock(OmnipayRequestInterface::class); $requestMock->expects($this->once())->method('send')->willReturn($responseMock); $omnipayGateway = $this->getMock(CreditCardGateway::class, [], [], '', false); $omnipayGateway->expects($this->once())->method('purchase')->with(['cardReference' => 'theCardToken', 'clientIp' => ''])->willReturn($requestMock); $gateway = $this->createGatewayMock(); $gateway->expects($this->at(0))->method('execute')->with($this->isInstanceOf(ObtainCreditCard::class))->willReturnCallback(function (ObtainCreditCard $request) use($firstModel, $model) { $this->assertSame($firstModel, $request->getFirstModel()); $this->assertSame($model, $request->getModel()); $card = new CreditCard(); $card->setToken('theCardToken'); $request->set($card); }); $action = new CaptureAction(); $action->setApi($omnipayGateway); $action->setGateway($gateway); $capture = new Capture($firstModel); $capture->setModel($model); $action->execute($capture); $details = iterator_to_array($model); $this->assertArrayNotHasKey('card', $details); $this->assertArrayHasKey('cardReference', $details); $this->assertEquals('theCardToken', $details['cardReference']); }