/**
  * @dataProvider testCaseProvider
  */
 public function testPassesComplianceTest($about, Service $service, $name, array $args, $serialized)
 {
     $ep = 'http://dus-bb-api802.dus.via.de';
     $client = new VwsClient(['service' => 'foo', 'api_provider' => function () use($service) {
         return $service->toArray();
     }, 'credentials' => false, 'client' => new Client(), 'region' => 'sandbox', 'endpoint' => $ep, 'error_parser' => Service::createErrorParser($service->getProtocol()), 'serializer' => Service::createSerializer($service, $ep), 'version' => 'latest']);
     $command = $client->getCommand($name, $args);
     $trans = new CommandTransaction($client, $command);
     /** @var callable $serializer */
     $serializer = $this->readAttribute($client, 'serializer');
     $request = $serializer($trans);
     $this->assertEquals($serialized['uri'], $request->getResource());
     $body = (string) $request->getBody();
     switch ($service->getMetadata('type')) {
         case 'json':
         case 'rest-json':
             // Normalize the JSON data.
             $body = str_replace(':', ': ', $request->getBody());
             $body = str_replace(',', ', ', $body);
             break;
     }
     $this->assertEquals($serialized['body'], $body);
     if (isset($serialized['headers'])) {
         foreach ($serialized['headers'] as $key => $value) {
             $this->assertSame($value, $request->getHeader($key));
         }
     }
 }
 /**
  * [testHasGetters description].
  */
 public function testHasGetters()
 {
     $config = ['client' => new Client(), 'credentials' => new Credentials('foo', 'bar', 'foo_bar'), 'region' => 'foo', 'endpoint' => 'http://sandboxapi.via.de:8001/api', 'serializer' => function () {
     }, 'api_provider' => $this->getApiProvider(), 'service' => 'foo', 'error_parser' => function () {
     }, 'version' => 'latest'];
     $client = new VwsClient($config);
     $this->assertSame($config['client'], $client->getHttpClient());
     $this->assertSame($config['credentials'], $client->getCredentials());
     $this->assertSame($config['region'], $client->getRegion());
     $this->assertEquals('foo', $client->getApi()->getEndpointPrefix());
 }
 /**
  * {@inheritdoc}
  */
 public static function getArguments()
 {
     $args = parent::getArguments();
     $args['scheme']['default'] = 'http';
     if (isset($args['region'])) {
         $args['region']['default'] = 'sandbox';
     }
     if (isset($args['region']) && $args['region'] != 'local') {
         $args['scheme']['default'] = 'https';
     }
     return $args;
 }