/**
  * @param bool $isNew
  * @param array $data
  * @param array $billingData
  * @param array $expectedData
  * @param array $billingFormData
  * @dataProvider getThirdPartyTokenFormDataProvider
  */
 public function testGetThirdPartyTokenFormData($isNew, $data, $billingData, $expectedData, $billingFormData)
 {
     $this->billingAddressMock->expects($this->atLeastOnce())->method('importData')->with($billingData)->willReturnSelf();
     $this->billingAddressMock->expects($this->once())->method('getAsChildFormData')->with($isNew)->willReturn($billingFormData);
     $this->paymentProfile->importData($data);
     $this->assertEquals($expectedData, $this->paymentProfile->getThirdPartyTokenFormData());
 }
 /**
  * @param array $data
  * @param array $addressData
  * @param array $addressAsChildFormData
  * @param array $expectedData
  * @param bool $isNew
  * @dataProvider getFormDataProvider
  */
 public function testGetFormData($data, $addressData, $addressAsChildFormData, $expectedData, $isNew)
 {
     $this->paymentProfileMock->expects($this->once())->method('importData')->with([])->willReturnSelf();
     $this->shippingAddressMock->expects($this->once())->method('importData')->with($addressData)->willReturnSelf();
     $this->shippingAddressMock->expects($this->any())->method('getId')->willReturn(null);
     $this->shippingAddressMock->expects($this->once())->method('getAsChildFormData')->with($isNew)->willReturn($addressAsChildFormData);
     $this->subscription->importData($data);
     $this->assertEquals($expectedData, $this->subscription->getFormData());
 }
 /**
  * @param string $token
  * @param \SubscribePro\Service\PaymentProfile\PaymentProfileInterface $paymentProfile
  * @return \SubscribePro\Service\PaymentProfile\PaymentProfileInterface
  * @throws \SubscribePro\Exception\EntityInvalidDataException
  * @throws \SubscribePro\Exception\HttpException
  */
 public function verifyAndSaveToken($token, PaymentProfileInterface $paymentProfile)
 {
     if (!$paymentProfile->isTokenDataValid()) {
         throw new EntityInvalidDataException('Not all required fields are set.');
     }
     $response = $this->httpClient->post("/services/v1/vault/tokens/{$token}/verifyandstore.json", ['payment_profile' => $paymentProfile->getTokenFormData()]);
     return $this->retrieveItem($response, self::API_NAME_PROFILE, $paymentProfile);
 }