176 lines
4.7 KiB
PHP
176 lines
4.7 KiB
PHP
<?php
|
|
|
|
namespace Omnipay\Common;
|
|
|
|
use Mockery as m;
|
|
use Omnipay\Common\Message\AbstractRequest;
|
|
use Omnipay\Tests\TestCase;
|
|
use Symfony\Component\HttpFoundation\ParameterBag;
|
|
|
|
class AbstractGatewayTest extends TestCase
|
|
{
|
|
public function setUp()
|
|
{
|
|
$this->gateway = m::mock('\Omnipay\Common\AbstractGateway')->makePartial();
|
|
$this->gateway->initialize();
|
|
}
|
|
|
|
public function testConstruct()
|
|
{
|
|
$this->gateway = new AbstractGatewayTest_MockAbstractGateway;
|
|
$this->assertInstanceOf('\Guzzle\Http\Client', $this->gateway->getProtectedHttpClient());
|
|
$this->assertInstanceOf('\Symfony\Component\HttpFoundation\Request', $this->gateway->getProtectedHttpRequest());
|
|
$this->assertSame(array(), $this->gateway->getParameters());
|
|
}
|
|
|
|
public function testGetShortName()
|
|
{
|
|
$this->assertSame('\\'.get_class($this->gateway), $this->gateway->getShortName());
|
|
}
|
|
|
|
public function testInitializeDefaults()
|
|
{
|
|
$defaults = array(
|
|
'currency' => 'AUD', // fixed default type
|
|
'username' => array('joe', 'fred'), // enum default type
|
|
);
|
|
$this->gateway->shouldReceive('getDefaultParameters')->once()
|
|
->andReturn($defaults);
|
|
|
|
$this->gateway->initialize();
|
|
|
|
$expected = array(
|
|
'currency' => 'AUD',
|
|
'username' => 'joe',
|
|
);
|
|
$this->assertSame($expected, $this->gateway->getParameters());
|
|
}
|
|
|
|
public function testInitializeParameters()
|
|
{
|
|
$this->gateway->shouldReceive('getDefaultParameters')->once()
|
|
->andReturn(array('currency' => 'AUD'));
|
|
|
|
$this->gateway->initialize(array(
|
|
'currency' => 'USD',
|
|
'unknown' => '42',
|
|
));
|
|
|
|
$this->assertSame(array('currency' => 'USD'), $this->gateway->getParameters());
|
|
}
|
|
|
|
public function testGetDefaultParameters()
|
|
{
|
|
$this->assertSame(array(), $this->gateway->getDefaultParameters());
|
|
}
|
|
|
|
public function testGetParameters()
|
|
{
|
|
$this->gateway->setTestMode(true);
|
|
|
|
$this->assertSame(array('testMode' => true), $this->gateway->getParameters());
|
|
}
|
|
|
|
public function testTestMode()
|
|
{
|
|
$this->assertSame($this->gateway, $this->gateway->setTestMode(true));
|
|
$this->assertSame(true, $this->gateway->getTestMode());
|
|
}
|
|
|
|
public function testCurrency()
|
|
{
|
|
$this->assertSame($this->gateway, $this->gateway->setCurrency('USD'));
|
|
$this->assertSame('USD', $this->gateway->getCurrency());
|
|
}
|
|
|
|
public function testSupportsAuthorize()
|
|
{
|
|
$this->assertFalse($this->gateway->supportsAuthorize());
|
|
}
|
|
|
|
public function testSupportsCompleteAuthorize()
|
|
{
|
|
$this->assertFalse($this->gateway->supportsCompleteAuthorize());
|
|
}
|
|
|
|
public function testSupportsCapture()
|
|
{
|
|
$this->assertFalse($this->gateway->supportsCapture());
|
|
}
|
|
|
|
public function testSupportsPurchase()
|
|
{
|
|
$this->assertFalse($this->gateway->supportsPurchase());
|
|
}
|
|
|
|
public function testSupportsCompletePurchase()
|
|
{
|
|
$this->assertFalse($this->gateway->supportsCompletePurchase());
|
|
}
|
|
|
|
public function testSupportsRefund()
|
|
{
|
|
$this->assertFalse($this->gateway->supportsRefund());
|
|
}
|
|
|
|
public function testSupportsVoid()
|
|
{
|
|
$this->assertFalse($this->gateway->supportsVoid());
|
|
}
|
|
|
|
public function testSupportsCreateCard()
|
|
{
|
|
$this->assertFalse($this->gateway->supportsCreateCard());
|
|
}
|
|
|
|
public function testSupportsDeleteCard()
|
|
{
|
|
$this->assertFalse($this->gateway->supportsDeleteCard());
|
|
}
|
|
|
|
public function testSupportsUpdateCard()
|
|
{
|
|
$this->assertFalse($this->gateway->supportsUpdateCard());
|
|
}
|
|
|
|
public function testCreateRequest()
|
|
{
|
|
$this->gateway = new AbstractGatewayTest_MockAbstractGateway;
|
|
$request = $this->gateway->callCreateRequest(
|
|
'\Omnipay\Common\AbstractGatewayTest_MockAbstractRequest',
|
|
array('currency' => 'THB')
|
|
);
|
|
|
|
$this->assertSame(array('currency' => 'THB'), $request->getParameters());
|
|
}
|
|
}
|
|
|
|
class AbstractGatewayTest_MockAbstractGateway extends AbstractGateway
|
|
{
|
|
public function getName()
|
|
{
|
|
return 'Mock Gateway Implementation';
|
|
}
|
|
|
|
public function getProtectedHttpClient()
|
|
{
|
|
return $this->httpClient;
|
|
}
|
|
|
|
public function getProtectedHttpRequest()
|
|
{
|
|
return $this->httpRequest;
|
|
}
|
|
|
|
public function callCreateRequest($class, array $parameters)
|
|
{
|
|
return $this->createRequest($class, $parameters);
|
|
}
|
|
}
|
|
|
|
class AbstractGatewayTest_MockAbstractRequest extends AbstractRequest
|
|
{
|
|
public function getData() {}
|
|
public function sendData($data) {}
|
|
}
|