/**
  * @param $track
  * @param $debug
  *
  * @throws RussianPostApiException
  * @throws InvalidTrackException
  *
  * @return OperationHistoryData
  */
 public function getTrackOperationHistory($track, &$debug, $language = "RUS")
 {
     if (!TrackValidator::validateTrack($track)) {
         throw new InvalidTrackException();
     }
     $track = TrackValidator::filterTrack($track);
     $client = $this->initClient();
     $AuthorizationHeader = self::createAuthorizationHeader($this->login, $this->password);
     $historyRequest = self::createOperationHistoryRequest($track, 0, $language);
     $parameters = ["AuthorizationHeader" => $this->serializer->serialize($AuthorizationHeader, 'array'), "historyRequest" => $this->serializer->serialize($historyRequest, 'array')];
     //($operation, $params=array(), $namespace='http://tempuri.org', $soapAction='', $headers=false, $rpcParams=null, $style='rpc', $use='encoded')
     $result = $client->call('GetOperationHistory', $parameters, 'http://russianpost.org/operationhistory');
     $debug = array("Request" => $client->request, "Response" => $client->response, "Debug" => $client->debug_str);
     if ($client->fault) {
         throw new RussianPostApiException(print_r($result, true));
     } else {
         $err = $client->getError();
         if ($err) {
             throw new RussianPostApiException($err);
         } else {
             /** @var OperationHistoryData $object */
             $object = $this->serializer->deserialize($result, 'a3mg\\RussianPostBundle\\Model\\OperationHistoryData', 'array');
             return $object;
         }
     }
 }
 public function testTrackValidation()
 {
     $this->assertEquals("14211716007389", TrackValidator::filterTrack("142117  16  00738 9."));
     $this->assertTrue(TrackValidator::validateUPU_S10("EE123456785KR"));
     $this->assertFalse(TrackValidator::validateUPU_S10("EE1234567856KR"));
     $this->assertFalse(TrackValidator::validateUPU_S10("EE123456785AP"));
     // Invalid country code
     $this->assertFalse(TrackValidator::validateUPU_S10("QZ123456785RU"));
     $this->assertFalse(TrackValidator::validateUPU_S10("EE1234AA785RU"));
     $this->assertFalse(TrackValidator::validateUPU_S10("14211716007389"));
     $this->assertTrue(TrackValidator::validateRTM_001_01_99("14211716007389"));
     $this->assertFalse(TrackValidator::validateRTM_001_01_99("14211716007388"));
     $this->assertFalse(TrackValidator::validateRTM_001_01_99("142117160073889"));
     $this->assertFalse(TrackValidator::validateRTM_001_01_99("142117160073"));
     $this->assertFalse(TrackValidator::validateRTM_001_01_99("EE1234AA785RU"));
     $this->assertTrue(TrackValidator::validateTrack("EE123456785KR"));
     $this->assertTrue(TrackValidator::validateTrack("14211716007389"));
 }