11
11
12
12
namespace Symfony \Component \Notifier \Bridge \SmsBiuras \Tests ;
13
13
14
+ use Symfony \Component \HttpClient \MockHttpClient ;
14
15
use Symfony \Component \Notifier \Bridge \SmsBiuras \SmsBiurasTransport ;
15
16
use Symfony \Component \Notifier \Message \ChatMessage ;
16
17
use Symfony \Component \Notifier \Message \MessageInterface ;
17
18
use Symfony \Component \Notifier \Message \SmsMessage ;
18
19
use Symfony \Component \Notifier \Test \TransportTestCase ;
19
20
use Symfony \Component \Notifier \Transport \TransportInterface ;
20
21
use Symfony \Contracts \HttpClient \HttpClientInterface ;
22
+ use Symfony \Contracts \HttpClient \ResponseInterface ;
21
23
22
24
final class SmsBiurasTransportTest extends TransportTestCase
23
25
{
@@ -44,4 +46,80 @@ public function unsupportedMessagesProvider(): iterable
44
46
yield [new ChatMessage ('Hello! ' )];
45
47
yield [$ this ->createMock (MessageInterface::class)];
46
48
}
49
+
50
+ /**
51
+ * @dataProvider provideTestMode()
52
+ */
53
+ public function testTestMode (array $ expected , array $ provided )
54
+ {
55
+ $ message = new SmsMessage ($ provided ['phone ' ], $ provided ['message ' ]);
56
+
57
+ $ response = $ this ->createMock (ResponseInterface::class);
58
+ $ response ->expects ($ this ->atLeast (1 ))
59
+ ->method ('getStatusCode ' )
60
+ ->willReturn (200 );
61
+ $ response ->expects ($ this ->atLeast (1 ))
62
+ ->method ('getContent ' )
63
+ ->willReturn ('OK: 519545 ' );
64
+
65
+ $ client = new MockHttpClient (function (string $ method , string $ url , array $ options = []) use ($ response , $ expected ): ResponseInterface {
66
+ $ this ->assertSame ('GET ' , $ method );
67
+ $ this ->assertSame (sprintf (
68
+ 'https://savitarna.smsbiuras.lt/api?uid=uid&apikey=api_key&message=%s&from=from&test=%s&to=%s ' ,
69
+ rawurlencode ($ expected ['message ' ]),
70
+ $ expected ['transport ' ]['test_mode ' ],
71
+ rawurlencode ($ expected ['phone ' ]),
72
+ ), $ url );
73
+ $ this ->assertSame ($ expected ['transport ' ]['test_mode ' ], $ options ['query ' ]['test ' ]);
74
+
75
+ $ this ->assertSame (200 , $ response ->getStatusCode ());
76
+ $ this ->assertSame ('OK: 519545 ' , $ response ->getContent ());
77
+
78
+ return $ response ;
79
+ });
80
+
81
+ $ transport = new SmsBiurasTransport ('uid ' , 'api_key ' , 'from ' , $ provided ['transport ' ]['test_mode ' ], $ client );
82
+
83
+ $ sentMessage = $ transport ->send ($ message );
84
+
85
+ $ this ->assertSame ('519545 ' , $ sentMessage ->getMessageId ());
86
+ }
87
+
88
+ public static function provideTestMode (): array
89
+ {
90
+ return [
91
+ [
92
+ [
93
+ 'phone ' => '+37012345678 ' ,
94
+ 'message ' => 'Hello world! ' ,
95
+ 'transport ' => [
96
+ 'test_mode ' => 0 ,
97
+ ],
98
+ ],
99
+ [
100
+ 'phone ' => '+37012345678 ' ,
101
+ 'message ' => 'Hello world! ' ,
102
+ 'transport ' => [
103
+ 'test_mode ' => 0 ,
104
+ ],
105
+ ],
106
+ ],
107
+ [
108
+ [
109
+ 'phone ' => '+37012345678 ' ,
110
+ 'message ' => 'Hello world! ' ,
111
+ 'transport ' => [
112
+ 'test_mode ' => 1 ,
113
+ ],
114
+ ],
115
+ [
116
+ 'phone ' => '+37012345678 ' ,
117
+ 'message ' => 'Hello world! ' ,
118
+ 'transport ' => [
119
+ 'test_mode ' => 1 ,
120
+ ],
121
+ ],
122
+ ],
123
+ ];
124
+ }
47
125
}
0 commit comments