assertSame('https://example.com', $payload->url); $this->assertNull($payload->token); $expectedArray = ['url' => 'https://example.com', 'token' => null]; $this->assertEquals($expectedArray, $payload->toArray()); } #[Test] public function canBeCreatedWithTokenOnly(): void { $payload = new ShareAttachmentRequestPayload(token: 'share_token_abc'); $this->assertSame('share_token_abc', $payload->token); $this->assertNull($payload->url); $expectedArray = ['url' => null, 'token' => 'share_token_abc']; $this->assertEquals($expectedArray, $payload->toArray()); } #[Test] public function constructorThrowsExceptionForInvalidArguments(): void { $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage('Provide one of "url" or "token" for ShareAttachmentRequestPayload.'); new ShareAttachmentRequestPayload(null, null); } }