Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit422b8a8

Browse files
Add FakeSMS Logger transport
1 parent5d92b21 commit422b8a8

File tree

8 files changed

+170
-8
lines changed

8 files changed

+170
-8
lines changed

‎src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2494,7 +2494,8 @@ private function registerNotifierConfiguration(array $config, ContainerBuilder $
24942494

24952495
if (ContainerBuilder::willBeAvailable('symfony/fake-sms-notifier', FakeSmsTransportFactory::class, ['symfony/framework-bundle','symfony/notifier','symfony/mailer'])) {
24962496
$container->getDefinition($classToServices[FakeSmsTransportFactory::class])
2497-
->replaceArgument('$mailer',newReference('mailer'));
2497+
->replaceArgument('$mailer',newReference('mailer'))
2498+
->replaceArgument('$logger',newReference('logger'));
24982499
}
24992500

25002501
if (isset($config['admin_recipients'])) {

‎src/Symfony/Component/Notifier/Bridge/FakeSms/CHANGELOG.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
CHANGELOG
22
=========
33

4+
5.4
5+
---
6+
7+
* Add the``FakeSmsLoggerTransport``
8+
49
5.3
510
---
611

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespaceSymfony\Component\Notifier\Bridge\FakeSms;
13+
14+
usePsr\Log\LoggerInterface;
15+
useSymfony\Component\EventDispatcher\EventDispatcherInterface;
16+
useSymfony\Component\Notifier\Exception\UnsupportedMessageTypeException;
17+
useSymfony\Component\Notifier\Message\MessageInterface;
18+
useSymfony\Component\Notifier\Message\SentMessage;
19+
useSymfony\Component\Notifier\Message\SmsMessage;
20+
useSymfony\Component\Notifier\Transport\AbstractTransport;
21+
useSymfony\Contracts\HttpClient\HttpClientInterface;
22+
23+
/**
24+
* @author Antoine Makdessi <amakdessi@me.com>
25+
*/
26+
finalclass FakeSmsLoggerTransportextends AbstractTransport
27+
{
28+
protectedconstHOST ='default';
29+
30+
private$logger;
31+
32+
publicfunction__construct(LoggerInterface$logger,HttpClientInterface$client =null,EventDispatcherInterface$dispatcher =null)
33+
{
34+
$this->logger =$logger;
35+
36+
parent::__construct($client,$dispatcher);
37+
}
38+
39+
publicfunction__toString():string
40+
{
41+
returnsprintf('fakesms+logger://%s',$this->getEndpoint());
42+
}
43+
44+
publicfunctionsupports(MessageInterface$message):bool
45+
{
46+
return$messageinstanceof SmsMessage;
47+
}
48+
49+
/**
50+
* @param MessageInterface|SmsMessage $message
51+
*/
52+
protectedfunctiondoSend(MessageInterface$message):SentMessage
53+
{
54+
if (!$this->supports($message)) {
55+
thrownewUnsupportedMessageTypeException(__CLASS__, SmsMessage::class,$message);
56+
}
57+
58+
$this->logger->info(sprintf('New SMS on phone number: %s',$message->getPhone()));
59+
60+
returnnewSentMessage($message, (string)$this);
61+
}
62+
}

‎src/Symfony/Component/Notifier/Bridge/FakeSms/FakeSmsTransportFactory.php‎

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespaceSymfony\Component\Notifier\Bridge\FakeSms;
1313

14+
usePsr\Log\LoggerInterface;
1415
useSymfony\Component\Mailer\MailerInterface;
1516
useSymfony\Component\Notifier\Exception\UnsupportedSchemeException;
1617
useSymfony\Component\Notifier\Transport\AbstractTransportFactory;
@@ -20,20 +21,23 @@
2021
/**
2122
* @author James Hemery <james@yieldstudio.fr>
2223
* @author Oskar Stark <oskarstark@googlemail.com>
24+
* @author Antoine Makdessi <amakdessi@me.com>
2325
*/
2426
finalclass FakeSmsTransportFactoryextends AbstractTransportFactory
2527
{
2628
protected$mailer;
29+
protected$logger;
2730

28-
publicfunction__construct(MailerInterface$mailer)
31+
publicfunction__construct(MailerInterface$mailer,LoggerInterface$logger)
2932
{
3033
parent::__construct();
3134

3235
$this->mailer =$mailer;
36+
$this->logger =$logger;
3337
}
3438

3539
/**
36-
* @return FakeSmsEmailTransport
40+
* @return FakeSmsEmailTransport|FakeSmsLoggerTransport
3741
*/
3842
publicfunctioncreate(Dsn$dsn):TransportInterface
3943
{
@@ -50,10 +54,14 @@ public function create(Dsn $dsn): TransportInterface
5054

5155
return (newFakeSmsEmailTransport($this->mailer,$to,$from))->setHost($mailerTransport);
5256
}
57+
58+
if ('fakesms+logger' ===$scheme) {
59+
returnnewFakeSmsLoggerTransport($this->logger);
60+
}
5361
}
5462

5563
protectedfunctiongetSupportedSchemes():array
5664
{
57-
return ['fakesms+email'];
65+
return ['fakesms+email','fakesms+logger'];
5866
}
5967
}

‎src/Symfony/Component/Notifier/Bridge/FakeSms/README.md‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
Fake SMS Notifier
22
=================
33

4-
Provides Fake SMS (as email during development) integration for Symfony Notifier.
4+
Provides Fake SMS (as emailor logduring development) integration for Symfony Notifier.
55

6-
####DSN example
6+
####DSN example for email
77

88
```
99
FAKE_SMS_DSN=fakesms+email://default?to=TO&from=FROM
@@ -14,10 +14,17 @@ where:
1414
-`FROM` is email who send SMS during development
1515

1616
To use a custom mailer transport:
17+
1718
```
1819
FAKE_SMS_DSN=fakesms+email://mailchimp?to=TO&from=FROM
1920
```
2021

22+
####DSN example for logger
23+
24+
```
25+
FAKE_SMS_DSN=fakesms+logger://default
26+
```
27+
2128
Resources
2229
---------
2330

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespaceSymfony\Component\Notifier\Bridge\FakeSms\Tests;
13+
14+
usePsr\Log\LoggerInterface;
15+
usePsr\Log\Test\TestLogger;
16+
useSymfony\Component\Notifier\Bridge\FakeSms\FakeSmsLoggerTransport;
17+
useSymfony\Component\Notifier\Message\ChatMessage;
18+
useSymfony\Component\Notifier\Message\MessageInterface;
19+
useSymfony\Component\Notifier\Message\SmsMessage;
20+
useSymfony\Component\Notifier\Test\TransportTestCase;
21+
useSymfony\Component\Notifier\Transport\TransportInterface;
22+
useSymfony\Contracts\HttpClient\HttpClientInterface;
23+
24+
finalclass FakeSmsLoggerTransportTestextends TransportTestCase
25+
{
26+
publicfunctioncreateTransport(HttpClientInterface$client =null,LoggerInterface$logger =null):TransportInterface
27+
{
28+
$transport = (newFakeSmsLoggerTransport($logger ??$this->createMock(LoggerInterface::class),$client ??$this->createMock(HttpClientInterface::class)));
29+
30+
return$transport;
31+
}
32+
33+
publicfunctiontoStringProvider():iterable
34+
{
35+
yield ['fakesms+logger://default',$this->createTransport()];
36+
}
37+
38+
publicfunctionsupportedMessagesProvider():iterable
39+
{
40+
yield [newSmsMessage('0611223344','Hello!')];
41+
yield [newSmsMessage('+33611223344','Hello!')];
42+
}
43+
44+
publicfunctionunsupportedMessagesProvider():iterable
45+
{
46+
yield [newChatMessage('Hello!')];
47+
yield [$this->createMock(MessageInterface::class)];
48+
}
49+
50+
publicfunctiontestSendWithDefaultTransport()
51+
{
52+
$message =newSmsMessage($phone ='0611223344','Hello!');
53+
54+
$logger =newTestLogger();
55+
56+
$transport =$this->createTransport(null,$logger);
57+
58+
$transport->send($message);
59+
60+
$this->assertTrue($logger->hasInfoRecords());
61+
62+
$logMessage =$logger->records[0]['message'];
63+
$this->assertSame(sprintf('New SMS on phone number: %s',$phone),$logMessage);
64+
65+
$logLevel =$logger->records[0]['level'];
66+
$this->assertSame('info',$logLevel);
67+
}
68+
}

‎src/Symfony/Component/Notifier/Bridge/FakeSms/Tests/FakeSmsTransportFactoryTest.php‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespaceSymfony\Component\Notifier\Bridge\FakeSms\Tests;
1313

14+
usePsr\Log\LoggerInterface;
1415
useSymfony\Component\Mailer\MailerInterface;
1516
useSymfony\Component\Notifier\Bridge\FakeSms\FakeSmsTransportFactory;
1617
useSymfony\Component\Notifier\Test\TransportFactoryTestCase;
@@ -23,7 +24,7 @@ final class FakeSmsTransportFactoryTest extends TransportFactoryTestCase
2324
*/
2425
publicfunctioncreateFactory():TransportFactoryInterface
2526
{
26-
returnnewFakeSmsTransportFactory($this->createMock(MailerInterface::class));
27+
returnnewFakeSmsTransportFactory($this->createMock(MailerInterface::class),$this->createMock(LoggerInterface::class));
2728
}
2829

2930
publicfunctioncreateProvider():iterable
@@ -37,6 +38,11 @@ public function createProvider(): iterable
3738
'fakesms+email://mailchimp?to=recipient@email.net&from=sender@email.net',
3839
'fakesms+email://mailchimp?to=recipient@email.net&from=sender@email.net',
3940
];
41+
42+
yield [
43+
'fakesms+logger://default',
44+
'fakesms+logger://default',
45+
];
4046
}
4147

4248
publicfunctionmissingRequiredOptionProvider():iterable

‎src/Symfony/Component/Notifier/Bridge/FakeSms/composer.json‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name":"symfony/fake-sms-notifier",
33
"type":"symfony-bridge",
4-
"description":"Fake SMS (as email during development) Notifier Bridge.",
4+
"description":"Fake SMS (as emailor logduring development) Notifier Bridge.",
55
"keywords": ["sms","development","email","notifier","symfony"],
66
"homepage":"https://symfony.com",
77
"license":"MIT",
@@ -10,6 +10,11 @@
1010
"name":"James Hemery",
1111
"homepage":"https://github.com/JamesHemery"
1212
},
13+
{
14+
"name":"Antoine Makdessi",
15+
"email":"amakdessi@me.com",
16+
"homepage":"http://antoine.makdessi.free.fr"
17+
},
1318
{
1419
"name":"Symfony Community",
1520
"homepage":"https://symfony.com/contributors"

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp