Skip to content

Commit c5d07a2

Browse files
committed
added testBuildMdn
1 parent 178f728 commit c5d07a2

File tree

1 file changed

+74
-12
lines changed

1 file changed

+74
-12
lines changed

tests/Unit/ManagementTest.php

Lines changed: 74 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use AS2\MessageInterface;
66
use AS2\MimePart;
7+
use AS2\PartnerInterface;
78
use AS2\Tests\TestCase;
89
use AS2\Utils;
910

@@ -28,9 +29,9 @@ public function testBuildMessage()
2829
// generate message payload
2930
$payload = $this->management->buildMessage($message, $contents);
3031

31-
$this->assertTrue($payload->isEncrypted());
32-
$this->assertEquals($senderId, $payload->getHeaderLine('as2-from'));
33-
$this->assertEquals($receiverId, $payload->getHeaderLine('as2-to'));
32+
self::assertTrue($payload->isEncrypted());
33+
self::assertEquals($senderId, $payload->getHeaderLine('as2-from'));
34+
self::assertEquals($receiverId, $payload->getHeaderLine('as2-to'));
3435
}
3536

3637
public function testProcessMessage()
@@ -52,11 +53,11 @@ public function testProcessMessage()
5253

5354
$processedPayload = $this->management->processMessage($message, $payload);
5455

55-
$this->assertTrue($message->getCompressed());
56-
$this->assertTrue($message->getEncrypted());
57-
$this->assertTrue($message->getSigned());
58-
$this->assertSame($message->getMic(), 'oVDpnrSnpq+V99dXaarQ9HFyRUaFNsp9tdBBSmRhX4s=, sha256');
59-
$this->assertSame((string) $processedPayload, Utils::canonicalize($this->loadFixture('test.edi')));
56+
self::assertTrue($message->getCompressed());
57+
self::assertTrue($message->getEncrypted());
58+
self::assertTrue($message->getSigned());
59+
self::assertSame($message->getMic(), 'oVDpnrSnpq+V99dXaarQ9HFyRUaFNsp9tdBBSmRhX4s=, sha256');
60+
self::assertSame((string) $processedPayload, Utils::canonicalize($this->loadFixture('test.edi')));
6061
}
6162

6263
public function testSendMessage()
@@ -75,15 +76,76 @@ public function testSendMessage()
7576
$message->setSender($sender);
7677
$message->setReceiver($receiver);
7778

78-
$this->assertEmpty($message->getStatus());
79+
self::assertEmpty($message->getStatus());
7980

8081
$payload = $this->management->buildMessage($message, $this->loadFixture('test.edi'));
8182

82-
$this->assertSame(MessageInterface::STATUS_PENDING, $message->getStatus());
83+
self::assertSame(MessageInterface::STATUS_PENDING, $message->getStatus());
8384

8485
$response = $this->management->sendMessage($message, $payload);
8586

86-
$this->assertFalse($response);
87-
$this->assertSame(MessageInterface::STATUS_ERROR, $message->getStatus());
87+
self::assertFalse($response);
88+
self::assertSame(MessageInterface::STATUS_ERROR, $message->getStatus());
8889
}
90+
91+
public function testBuildMdn()
92+
{
93+
$sender = $this->partnerRepository->findPartnerById('A');
94+
$receiver = $this->partnerRepository->findPartnerById('B');
95+
96+
// Initialize empty message
97+
$message = $this->messageRepository->createMessage();
98+
$message->setMessageId('test');
99+
$message->setSender($sender);
100+
$message->setReceiver($receiver);
101+
102+
$report = $this->management->buildMdn($message);
103+
104+
self::assertNull($report);
105+
106+
$message->setHeaders('disposition-notification-to: test@example.com');
107+
108+
$report = $this->management->buildMdn($message, 'custom', 'error');
109+
110+
self::assertTrue($report->isReport());
111+
self::assertEquals($report->getHeaderLine('as2-to'), $sender->getAs2Id());
112+
self::assertEquals($report->getHeaderLine('as2-from'), $receiver->getAs2Id());
113+
self::assertEquals('custom', trim($report->getPart(0)->getBody()));
114+
115+
$headers = MimePart::fromString($report->getPart(1)->getBody());
116+
117+
self::assertEquals($headers->getHeaderLine('Original-Message-ID'), '<test>');
118+
self::assertEquals($headers->getHeaderLine('Original-Recipient'), 'rfc822; B');
119+
self::assertEquals($headers->getHeaderLine('Final-Recipient'), 'rfc822; B');
120+
self::assertEquals($headers->getHeaderLine('Disposition'), 'automatic-action/MDN-sent-automatically; processed/error: error');
121+
122+
self::assertEquals($message->getMdnStatus(), MessageInterface::MDN_STATUS_SENT);
123+
self::assertEquals($message->getMdnMode(), PartnerInterface::MDN_MODE_SYNC);
124+
125+
// var_dump($message->getMdnPayload());
126+
}
127+
128+
// public function testSendMdn()
129+
// {
130+
// $sender = $this->partnerRepository->findPartnerById('A');
131+
// $sender->setTargetUrl('http://localhost');
132+
//
133+
// $receiver = $this->partnerRepository->findPartnerById('B');
134+
//
135+
// $messageId = Utils::generateMessageID($sender);
136+
//
137+
// // Initialize empty message
138+
// $message = $this->messageRepository->createMessage();
139+
// $message->setMessageId($messageId);
140+
// $message->setSender($sender);
141+
// $message->setReceiver($receiver);
142+
// $message->setMdnMode(PartnerInterface::MDN_MODE_ASYNC);
143+
// $message->setMdnPayload($this->loadFixture('si_signed.mdn'));
144+
//
145+
// $response = $this->management->sendMdn($message);
146+
//
147+
// self::assertTrue(true);
148+
//
149+
// var_dump($response);
150+
// }
89151
}

0 commit comments

Comments
 (0)