code = Grpc\STATUS_OK; $status->details = 'testWithoutMetadata'; $apiException = ApiException::createFromStdClass($status); $expectedMessage = json_encode([ 'message' => 'testWithoutMetadata', 'code' => Grpc\STATUS_OK, 'status' => 'OK', 'details' => [] ], JSON_PRETTY_PRINT); $this->assertSame(Grpc\STATUS_OK, $apiException->getCode()); $this->assertSame($expectedMessage, $apiException->getMessage()); $this->assertNull($apiException->getMetadata()); } /** * @dataProvider getMetadata */ public function testWithMetadata($metadata, $metadataArray) { $status = new \stdClass(); $status->code = Grpc\STATUS_OK; $status->details = 'testWithMetadata'; $status->metadata = $metadata; $apiException = ApiException::createFromStdClass($status); $expectedMessage = json_encode([ 'message' => 'testWithMetadata', 'code' => Grpc\STATUS_OK, 'status' => 'OK', 'details' => $metadataArray ], JSON_PRETTY_PRINT); $this->assertSame(Grpc\STATUS_OK, $apiException->getCode()); $this->assertSame($expectedMessage, $apiException->getMessage()); $this->assertSame($metadata, $apiException->getMetadata()); } public function getMetadata() { $retryInfo = new RetryInfo(); $duration = new Duration(); $duration->setSeconds(1); $duration->setNanos(2); $retryInfo->setRetryDelay($duration); $unknownBinData = ['unknown-bin' => ['']]; $asciiData = ['ascii' => ['ascii-data']]; $retryInfoData = [ 'google.rpc.retryinfo-bin' => [ [ 'retry_delay' => [ 'seconds' => 1, 'nanos' => 2, ] ] ] ]; $allKnownTypesData = [ 'google.rpc.retryinfo-bin' => [[]], 'google.rpc.debuginfo-bin' => [[]], 'google.rpc.quotafailure-bin' => [[]], 'google.rpc.badrequest-bin' => [[]], 'google.rpc.requestinfo-bin' => [[]], 'google.rpc.resourceinfo-bin' => [[]], 'google.rpc.help-bin' => [[]], 'google.rpc.localizedmessage-bin' => [[]], ]; return [ [['unknown-bin' => ['some-data-that-should-not-appear']], $unknownBinData], [['ascii' => ['ascii-data']], $asciiData], [['google.rpc.retryinfo-bin' => [$retryInfo->serialize()]], $retryInfoData], [[ 'google.rpc.retryinfo-bin' => [(new RetryInfo())->serialize()], 'google.rpc.debuginfo-bin' => [(new DebugInfo())->serialize()], 'google.rpc.quotafailure-bin' => [(new QuotaFailure())->serialize()], 'google.rpc.badrequest-bin' => [(new BadRequest())->serialize()], 'google.rpc.requestinfo-bin' => [(new RequestInfo())->serialize()], 'google.rpc.resourceinfo-bin' => [(new ResourceInfo())->serialize()], 'google.rpc.help-bin' => [(new Help())->serialize()], 'google.rpc.localizedmessage-bin' => [(new LocalizedMessage())->serialize()], ], $allKnownTypesData], ]; } }