gui-gui/omnipay-payu-brazil

View on GitHub
tests/GatewayTest.php

Summary

Maintainability
A
2 hrs
Test Coverage
<?php

namespace Omnipay\PayUBrazil;

use Omnipay\Tests\GatewayTestCase;

class GatewayTest extends GatewayTestCase
{

    public function getValidCard()
    {
        return array(
            'email' => 'email@email.com',
            'firstName' => 'John F',
            'lastName' => 'Doe',
            'number' => '4242424242424242',
            'expiryMonth' => rand(1, 12),
            'expiryYear' => gmdate('Y') + rand(1, 5),
            'cvv' => rand(100, 999),
            'billingAddress1' => 'Rua de Cobrança 70',
            'billingAddress2' => 'Apt 101',
            'billingCity' => 'Rio de Janeiro',
            'billingPostcode' => '12345678',
            'billingState' => 'RJ',
            'billingCountry' => 'BR',
            'billingPhone' => '(021)4444-4567',
            'shippingAddress1' => 'Rua de Entrega 170',
            'shippingAddress2' => 'Apt 102',
            'shippingCity' => 'Rio de Janeiro',
            'shippingPostcode' => '12345678',
            'shippingState' => 'RJ',
            'shippingCountry' => 'BR',
            'shippingPhone' => '(011) 99999-9999',
            'holderBusinessNumber' => '12.345.678/0001-11',
            'holderDocumentNumber' => '123.456.789-11',
        );
    }

    public function getValidRequest()
    {
        return  array(
                'amount' => '10.00',
                'card' => $this->getValidCard(),
                'paymentMethod' => 'VISA',
                'notifyUrl' => 'http://requestb.in/13hshws1',
                'installments' => 1,
                'description' => 'Order 1',
                'currency' => 'BRL',
                'language' => 'pt',
                'apiKey' => '4Vj8eK4rloUd272L48hsrarnUA',
                'apiLogin' => 'pRRXKOl8ikMmt9u',
                'transactionId' => '123456',
                'accountId' => '512327',
                'merchantId' => '508029',
                'clientIp' => '127.0.0.1',
                'testMode' => true,
                'transactionReference' => 'transactionReference123',
                'orderReference' => 'orderReference123',
                'reason' => 'refund reason'
                );
    }
    
    public function setUp()
    {
        parent::setUp();

        $this->gateway = new Gateway($this->getHttpClient(), $this->getHttpRequest());
        
    }

    public function testAuthorize()
    {
        $request = $this->gateway->authorize($this->getValidRequest());
        
        $this->assertInstanceOf('Omnipay\PayUBrazil\Message\AuthorizeRequest', $request);
        $this->assertSame('10.00', $request->getAmount());
    }

    public function testCapture()
    {
        $request = $this->gateway->capture($this->getValidRequest());
        
        $requestData = $request->getData();

        $this->assertInstanceOf('Omnipay\PayUBrazil\Message\CaptureRequest', $request);
        $this->assertSame('CAPTURE', $requestData['transaction']['type']);
        $this->assertSame('orderReference123', $requestData['transaction']['order']['id']);
        $this->assertSame('transactionReference123', $requestData['transaction']['parentTransactionId']);
    }

    public function testPurchase()
    {
        $request = $this->gateway->purchase($this->getValidRequest());

        $requestData = $request->getData();
  
        $this->assertInstanceOf('Omnipay\PayUBrazil\Message\PurchaseRequest', $request);
        $this->assertSame('10.00', $request->getAmount());
        $this->assertSame('AUTHORIZATION_AND_CAPTURE', $requestData['transaction']['type']);
    }

    public function testRefund()
    {
        $request = $this->gateway->refund($this->getValidRequest());

        $requestData = $request->getData();

        $this->assertInstanceOf('Omnipay\PayUBrazil\Message\RefundRequest', $request);
        $this->assertSame('REFUND', $requestData['transaction']['type']);
        $this->assertSame('orderReference123', $requestData['transaction']['order']['id']);
        $this->assertSame('refund reason', $requestData['transaction']['reason']);
    }
     
}