public function testAllMethods()
 {
     $this->markTestSkipped('Ignoring for Travis. Will fix after release.');
     //TODO
     // Set the subscription fields.
     $subscription = new AuthorizeNet_Subscription();
     $subscription->name = "Short subscription";
     $subscription->intervalLength = "1";
     $subscription->intervalUnit = "months";
     $subscription->startDate = "2020-03-12";
     $subscription->totalOccurrences = "14";
     $subscription->amount = rand(1, 100);
     $subscription->creditCardCardNumber = "6011000000000012";
     $subscription->creditCardExpirationDate = "2018-10";
     $subscription->creditCardCardCode = "123";
     $subscription->billToFirstName = "john";
     $subscription->billToLastName = "doe";
     // Create the subscription.
     $request = new AuthorizeNetARB();
     $response = $request->createSubscription($subscription);
     $this->assertTrue($response->isOk());
     $subscription_id = $response->getSubscriptionId();
     // Get the subscription status
     $status_request = new AuthorizeNetARB();
     $status_response = $status_request->getSubscriptionStatus($subscription_id);
     $this->assertEquals("active", $status_response->getSubscriptionStatus());
     // Update the subscription
     $update_request = new AuthorizeNetARB();
     $updated_subscription_info = new AuthorizeNet_Subscription();
     $updated_subscription_info->billToFirstName = "jane";
     $updated_subscription_info->billToLastName = "smith";
     $updated_subscription_info->creditCardCardNumber = "6011000000000012";
     $updated_subscription_info->creditCardExpirationDate = "2019-10";
     $updated_subscription_info->creditCardCardCode = "423";
     $update_response = $update_request->updateSubscription($subscription_id, $updated_subscription_info);
     $this->assertTrue($update_response->isOk());
     // Cancel the subscription
     $cancellation = new AuthorizeNetARB();
     $cancel_response = $cancellation->cancelSubscription($subscription_id);
     $this->assertTrue($cancel_response->isOk());
     // Get the subscription status
     $status_request = new AuthorizeNetARB();
     $status_response = $status_request->getSubscriptionStatus($subscription_id);
     $this->assertEquals("canceled", $status_response->getSubscriptionStatus());
 }
 /**
  * web service used to update the credit card information of the logged in user
  * @author Priti Kabra
  */
 public function api_updateCreditCard()
 {
     $errMsg = $this->checkApiHeaderInfo();
     $error = !empty($errMsg) ? 1 : 0;
     if ($error == 0) {
         $conditions = array('Subscription.user_id' => $this->loggedInUserId, 'Subscription.is_active' => 1);
         $this->Subscription->bindModel(array('hasOne' => array('BusinessOwner' => array('className' => 'BusinessOwner', 'foreignKey' => false, 'conditions' => array('BusinessOwner.user_id = Subscription.user_id')))));
         $subscripData = $this->Subscription->find('first', array('conditions' => $conditions));
         if ($this->Subscription->hasAny($conditions)) {
             $subscription = new AuthorizeNet_Subscription();
             $subscription->creditCardCardNumber = $this->jsonDecodedRequestedData->CC_Number;
             $subscription->creditCardExpirationDate = $this->jsonDecodedRequestedData->CC_year . '-' . $this->jsonDecodedRequestedData->CC_month;
             $subscription->creditCardCardCode = $this->jsonDecodedRequestedData->CC_cvv;
             $subscription->billToFirstName = $this->jsonDecodedRequestedData->CC_Name;
             $subscription->billToLastName = $this->jsonDecodedRequestedData->CC_Name;
             $request = new AuthorizeNetARB();
             $response = $request->updateSubscription($subscripData['Subscription']['subscription_id'], $subscription);
             if ($response->xml->messages->resultCode == 'Ok') {
                 $info['credit_card_number'] = substr($this->jsonDecodedRequestedData->CC_Number, -4, 4);
                 $this->BusinessOwner->id = $this->Encryption->decode($subscripData['BusinessOwner']['id']);
                 $this->BusinessOwner->saveField('credit_card_number', $this->Encryption->encode(substr($this->jsonDecodedRequestedData->CC_Number, -4, 4)));
                 $this->set(array('code' => Configure::read('RESPONSE_SUCCESS'), 'result' => $info, 'message' => 'The credit card Information has been updated successfully', '_serialize' => array('code', 'result', 'message')));
             } else {
                 $this->errorMessageApi('Credit card cannot be updated for cancelled membership');
             }
         } else {
             $this->set(array('code' => Configure::read('RESPONSE_SUCCESS'), 'message' => 'Credit card cannot be updated for cancelled membership', '_serialize' => array('code', 'message')));
         }
     } else {
         $this->errorMessageApi($errMsg);
     }
 }