4
4
5
5
use AS2 \MessageInterface ;
6
6
use AS2 \MimePart ;
7
+ use AS2 \PartnerInterface ;
7
8
use AS2 \Tests \TestCase ;
8
9
use AS2 \Utils ;
9
10
@@ -28,9 +29,9 @@ public function testBuildMessage()
28
29
// generate message payload
29
30
$ payload = $ this ->management ->buildMessage ($ message , $ contents );
30
31
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 ' ));
34
35
}
35
36
36
37
public function testProcessMessage ()
@@ -52,11 +53,11 @@ public function testProcessMessage()
52
53
53
54
$ processedPayload = $ this ->management ->processMessage ($ message , $ payload );
54
55
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 ' )));
60
61
}
61
62
62
63
public function testSendMessage ()
@@ -75,15 +76,76 @@ public function testSendMessage()
75
76
$ message ->setSender ($ sender );
76
77
$ message ->setReceiver ($ receiver );
77
78
78
- $ this -> assertEmpty ($ message ->getStatus ());
79
+ self :: assertEmpty ($ message ->getStatus ());
79
80
80
81
$ payload = $ this ->management ->buildMessage ($ message , $ this ->loadFixture ('test.edi ' ));
81
82
82
- $ this -> assertSame (MessageInterface::STATUS_PENDING , $ message ->getStatus ());
83
+ self :: assertSame (MessageInterface::STATUS_PENDING , $ message ->getStatus ());
83
84
84
85
$ response = $ this ->management ->sendMessage ($ message , $ payload );
85
86
86
- $ this -> assertFalse ($ response );
87
- $ this -> assertSame (MessageInterface::STATUS_ERROR , $ message ->getStatus ());
87
+ self :: assertFalse ($ response );
88
+ self :: assertSame (MessageInterface::STATUS_ERROR , $ message ->getStatus ());
88
89
}
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
+ // }
89
151
}
0 commit comments