15
15
use Symfony \Component \Notifier \Bridge \Pushover \PushoverTransport ;
16
16
use Symfony \Component \Notifier \Message \ChatMessage ;
17
17
use Symfony \Component \Notifier \Message \PushMessage ;
18
+ use Symfony \Component \Notifier \Notification \Notification ;
18
19
use Symfony \Component \Notifier \Test \TransportTestCase ;
19
20
use Symfony \Component \Notifier \Tests \Transport \DummyMessage ;
20
21
use Symfony \Contracts \HttpClient \HttpClientInterface ;
22
+ use Symfony \Contracts \HttpClient \ResponseInterface ;
21
23
22
24
final class PushoverTransportTest extends TransportTestCase
23
25
{
@@ -41,4 +43,81 @@ public static function unsupportedMessagesProvider(): iterable
41
43
yield [new ChatMessage ('Hello! ' )];
42
44
yield [new DummyMessage ()];
43
45
}
46
+
47
+ public function testSendWithOptions ()
48
+ {
49
+ $ messageSubject = 'testMessageSubject ' ;
50
+ $ messageContent = 'testMessageContent ' ;
51
+
52
+ $ response = $ this ->createMock (ResponseInterface::class);
53
+
54
+ $ response ->expects ($ this ->exactly (2 ))
55
+ ->method ('getStatusCode ' )
56
+ ->willReturn (200 );
57
+
58
+ $ response ->expects ($ this ->once ())
59
+ ->method ('getContent ' )
60
+ ->willReturn (json_encode (['status ' => 1 , 'request ' => 'uuid ' ]));
61
+
62
+ $ expectedBody = http_build_query ([
63
+ 'message ' => 'testMessageContent ' ,
64
+ 'title ' => 'testMessageSubject ' ,
65
+ 'token ' => 'appToken ' ,
66
+ 'user ' => 'userKey ' ,
67
+ ]);
68
+
69
+ $ client = new MockHttpClient (function (string $ method , string $ url , array $ options = []) use (
70
+ $ response ,
71
+ $ expectedBody
72
+ ): ResponseInterface {
73
+ $ this ->assertSame ($ expectedBody , $ options ['body ' ]);
74
+
75
+ return $ response ;
76
+ });
77
+ $ transport = self ::createTransport ($ client );
78
+
79
+ $ sentMessage = $ transport ->send (new PushMessage ($ messageSubject , $ messageContent ));
80
+
81
+ $ this ->assertSame ('uuid ' , $ sentMessage ->getMessageId ());
82
+ }
83
+
84
+ public function testSendWithNotification ()
85
+ {
86
+ $ messageSubject = 'testMessageSubject ' ;
87
+ $ messageContent = 'testMessageContent ' ;
88
+
89
+ $ response = $ this ->createMock (ResponseInterface::class);
90
+
91
+ $ response ->expects ($ this ->exactly (2 ))
92
+ ->method ('getStatusCode ' )
93
+ ->willReturn (200 );
94
+
95
+ $ response ->expects ($ this ->once ())
96
+ ->method ('getContent ' )
97
+ ->willReturn (json_encode (['status ' => 1 , 'request ' => 'uuid ' ]));
98
+
99
+ $ notification = (new Notification ($ messageSubject ))->content ($ messageContent );
100
+ $ pushMessage = PushMessage::fromNotification ($ notification );
101
+
102
+ $ expectedBody = http_build_query ([
103
+ 'message ' => 'testMessageContent ' ,
104
+ 'title ' => 'testMessageSubject ' ,
105
+ 'token ' => 'appToken ' ,
106
+ 'user ' => 'userKey ' ,
107
+ ]);
108
+
109
+ $ client = new MockHttpClient (function (string $ method , string $ url , array $ options = []) use (
110
+ $ response ,
111
+ $ expectedBody
112
+ ): ResponseInterface {
113
+ $ this ->assertSame ($ expectedBody , $ options ['body ' ]);
114
+
115
+ return $ response ;
116
+ });
117
+ $ transport = self ::createTransport ($ client );
118
+
119
+ $ sentMessage = $ transport ->send ($ pushMessage );
120
+
121
+ $ this ->assertSame ('uuid ' , $ sentMessage ->getMessageId ());
122
+ }
44
123
}
0 commit comments