You are here

public function PayPalPaymentIPNListener::testIPNListener in PayPal for Payment 7

Tests the IPN listener.

File

paypal_payment_ipn/tests/PayPalPaymentIPNListener.test, line 35
Contains \PayPalPaymentIPNListener.

Class

PayPalPaymentIPNListener
Tests the IPN callback functionality.

Code

public function testIPNListener() {
  $payment_method = $this
    ->paymentMethodCreate(2, payment_method_controller_load('PayPalPaymentIPNTestPaymentMethodController'));
  entity_save('payment_method', $payment_method);
  $payment = $this
    ->paymentCreate(2, $payment_method);
  entity_save('payment', $payment);
  $original_payment_status = $payment
    ->getStatus();

  // Mock an IPN.
  $ipn_variables = $this
    ->mockIPNVariables($payment->pid);
  $url = PayPalPaymentIPNController::URL();
  $this
    ->curlExec(array(
    CURLOPT_POST => TRUE,
    CURLOPT_POSTFIELDS => $ipn_variables,
    CURLOPT_URL => $url,
  ));
  $response = $this
    ->drupalGetContent();
  $this
    ->assertFalse($response);
  $this
    ->verbose($response);
  $this
    ->assertResponse(200);

  // Test that an IPN has been saved.
  $payment = entity_load_single('payment', $payment->pid);
  $new_payment_status = $payment
    ->getStatus();
  $this
    ->assertNotEqual($original_payment_status->status, $new_payment_status->status);
  $this
    ->assertTrue(PayPalPaymentIPNController::load($new_payment_status->psiid));
}