diff --git a/src/Micro/Request.php b/src/Micro/Request.php index 14e7c90..f3d2a3a 100644 --- a/src/Micro/Request.php +++ b/src/Micro/Request.php @@ -74,9 +74,4 @@ public function replyTo(): ?string { return $this->msg->replyTo; } - - public function msg(): Message - { - return $this->msg; - } } diff --git a/src/Micro/RequestInterface.php b/src/Micro/RequestInterface.php index d760f76..8fdcee2 100644 --- a/src/Micro/RequestInterface.php +++ b/src/Micro/RequestInterface.php @@ -5,7 +5,6 @@ namespace Sofascore\Nats\Micro; use Sofascore\Nats\Headers; -use Sofascore\Nats\Message; interface RequestInterface { @@ -22,9 +21,4 @@ public function headers(): ?Headers; public function subject(): string; public function replyTo(): ?string; - - /** - * Returns the raw underlying NATS message. - */ - public function msg(): Message; } diff --git a/tests/Integration/Micro/ServiceExtendedTest.php b/tests/Integration/Micro/ServiceExtendedTest.php index 9117c38..194928e 100644 --- a/tests/Integration/Micro/ServiceExtendedTest.php +++ b/tests/Integration/Micro/ServiceExtendedTest.php @@ -5,6 +5,7 @@ namespace Sofascore\Nats\Tests\Integration\Micro; use Sofascore\Nats\Connection; +use Sofascore\Nats\Headers; use Sofascore\Nats\Message; use Sofascore\Nats\Micro\EndpointConfig; use Sofascore\Nats\Micro\RequestInterface; @@ -78,37 +79,46 @@ public function testServiceId(): void $svc2->stop(); } - public function testRequestMsg(): void + public function testRequestExposesInboundMetadataWithoutRawMessage(): void { - $svcName = 'reqmsg-test-' . substr(uniqid(), -6); - $subject = 'svc.reqmsg.' . substr(uniqid(), -6); + $svcName = 'reqmeta-test-' . substr(uniqid(), -6); + $subject = 'svc.reqmeta.' . substr(uniqid(), -6); - /** @var Message|null $capturedMsg */ - $capturedMsg = null; + $capturedData = null; + $capturedSubject = null; + $capturedReplyTo = null; + $capturedHeader = null; $svc = Service::create($this->conn, new ServiceConfig( name: $svcName, version: '1.0.0', )); - $svc->addEndpoint('echo', function (RequestInterface $req) use (&$capturedMsg): void { - // Call msg() to get the underlying Message - $capturedMsg = $req->msg(); + $svc->addEndpoint('echo', function (RequestInterface $req) use ( + &$capturedData, + &$capturedSubject, + &$capturedReplyTo, + &$capturedHeader, + ): void { + $capturedData = $req->data(); + $capturedSubject = $req->subject(); + $capturedReplyTo = $req->replyTo(); + $capturedHeader = $req->headers()?->get('X-Request-Id'); - // Respond with the data $req->respond('got: ' . $req->data()); }, new EndpointConfig(subject: $subject)); - $reply = $this->conn->request($subject, 'hello-world', 2.0); + $reply = $this->conn->requestMessage(new Message( + subject: $subject, + data: 'hello-world', + headers: new Headers(['X-Request-Id' => 'req-42']), + ), 2.0); self::assertSame('got: hello-world', $reply->data); - - // Verify that msg() returned a Message instance - self::assertNotNull($capturedMsg, 'req->msg() should have returned a Message'); - self::assertInstanceOf(Message::class, $capturedMsg); - self::assertSame('hello-world', $capturedMsg->data); - self::assertSame($subject, $capturedMsg->subject); - self::assertNotNull($capturedMsg->replyTo, 'Request message should have a replyTo subject'); + self::assertSame('hello-world', $capturedData); + self::assertSame($subject, $capturedSubject); + self::assertNotNull($capturedReplyTo, 'Request should expose the reply subject'); + self::assertSame('req-42', $capturedHeader); $svc->stop(); }