/** * @test */ public function shouldAllowCreateGatewayConfig() { $factory = new GatewayFactory(); $config = $factory->createConfig(); $this->assertInternalType('array', $config); $this->assertNotEmpty($config); }
/** * @test */ public function shouldAllowPrependExtensions() { $firstExtension = $this->getMock('Payum\\Core\\Extension\\ExtensionInterface'); $secondExtension = $this->getMock('Payum\\Core\\Extension\\ExtensionInterface'); $factory = new GatewayFactory(); $gateway = $factory->create(array('payum.extension.foo' => $firstExtension, 'payum.extension.bar' => $secondExtension)); $extensions = $this->readAttribute($this->readAttribute($gateway, 'extensions'), 'extensions'); $this->assertSame($firstExtension, $extensions[0]); $this->assertSame($secondExtension, $extensions[1]); $gateway = $factory->create(array('payum.extension.foo' => $firstExtension, 'payum.extension.bar' => $secondExtension, 'payum.prepend_extensions' => array('payum.extension.bar'))); $extensions = $this->readAttribute($this->readAttribute($gateway, 'extensions'), 'extensions'); $this->assertSame($secondExtension, $extensions[0]); $this->assertSame($firstExtension, $extensions[1]); }
/** * {@inheritDoc} * * @param string $omnipayGatewayTypeOrClass * @param OmnipayOmnipayGatewayFactory|null $omnipayGatewayFactory */ public function __construct($omnipayGatewayTypeOrClass = null, OmnipayOmnipayGatewayFactory $omnipayGatewayFactory = null, array $defaultConfig = array(), GatewayFactoryInterface $coreGatewayFactory = null) { parent::__construct($defaultConfig, $coreGatewayFactory); $this->omnipayGatewayTypeOrClass = $omnipayGatewayTypeOrClass; $this->omnipayGatewayFactory = $omnipayGatewayFactory ?: Omnipay::getFactory(); }
/** * {@inheritDoc} */ public function createConfig(array $config = array()) { $config = ArrayObject::ensureArrayObject($config); $config->defaults(parent::createConfig((array) $config)); $prependActions = array(); foreach ($this->actionsTags as $id => $tagAttributes) { foreach ($tagAttributes as $attributes) { $name = isset($attributes['alias']) ? $attributes['alias'] : $id; if (isset($attributes['all']) && $attributes['all']) { $config["payum.action.{$name}"] = $this->container->get($id); } if (isset($attributes['factory']) && isset($config['payum.factory_name']) && $config['payum.factory_name'] === $attributes['factory']) { $config["payum.action.{$name}"] = $this->container->get($id); } if (isset($attributes['gateway']) && isset($config['payum.gateway_name']) && $config['payum.gateway_name'] === $attributes['gateway']) { $config["payum.action.{$name}"] = $this->container->get($id); } if (isset($attributes['prepend'])) { $prependActions[] = "payum.action.{$name}"; } } } $config['payum.prepend_actions'] = $prependActions; $prependExtensions = array(); foreach ($this->extensionsTags as $id => $tagAttributes) { foreach ($tagAttributes as $attributes) { $name = isset($attributes['alias']) ? $attributes['alias'] : $id; if (isset($attributes['all']) && $attributes['all']) { $config["payum.extension.{$name}"] = $this->container->get($id); } if (isset($attributes['factory']) && isset($config['payum.factory_name']) && $config['payum.factory_name'] === $attributes['factory']) { $config["payum.extension.{$name}"] = $this->container->get($id); } if (isset($attributes['gateway']) && isset($config['payum.gateway_name']) && $config['payum.gateway_name'] === $attributes['gateway']) { $config["payum.extension.{$name}"] = $this->container->get($id); } if (isset($attributes['prepend'])) { $prependExtensions[] = "payum.extension.{$name}"; } } } $config['payum.prepend_extensions'] = $prependExtensions; $prependApis = array(); foreach ($this->apisTags as $id => $tagAttributes) { foreach ($tagAttributes as $attributes) { $name = isset($attributes['alias']) ? $attributes['alias'] : $id; if (isset($attributes['all']) && $attributes['all']) { $config["payum.api.{$name}"] = $this->container->get($id); } if (isset($attributes['factory']) && isset($config['payum.factory_name']) && $config['payum.factory_name'] === $attributes['factory']) { $config["payum.api.{$name}"] = $this->container->get($id); } if (isset($attributes['gateway']) && isset($config['payum.gateway_name']) && $config['payum.gateway_name'] === $attributes['gateway']) { $config["payum.api.{$name}"] = $this->container->get($id); } if (isset($attributes['prepend'])) { $prependApis[] = "payum.api.{$name}"; } } } $config['payum.prepend_apis'] = $prependApis; return (array) $config; }