assertSame([ 'did' => 'did:web:localhost', 'inviteCodeRequired' => true, 'availableUserDomains' => ['.localhost'], ], $response->jsonSerialize()); } public function testJsonSerializeIncludesOptionalFieldsWhenPresent(): void { $response = new DescribeServerResponse( did: 'did:web:pds.example.com', inviteCodeRequired: false, availableUserDomains: ['.pds.example.com'], termsOfServiceUrl: 'https://pds.example.com/tos', privacyPolicyUrl: 'https://pds.example.com/privacy', email: 'hello@pds.example.com', phoneVerificationRequired: false ); $this->assertSame([ 'did' => 'did:web:pds.example.com', 'inviteCodeRequired' => false, 'availableUserDomains' => ['.pds.example.com'], 'phoneVerificationRequired' => false, 'contact' => [ 'email' => 'hello@pds.example.com', ], 'links' => [ 'termsOfService' => 'https://pds.example.com/tos', 'privacyPolicy' => 'https://pds.example.com/privacy', ], ], $response->jsonSerialize()); } }