8000 Merge branch '4.4' into 5.2 · symfony/symfony@03a9ac2 · GitHub
[go: up one dir, main page]

Skip to content

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

Appearance settings

Commit 03a9ac2

Browse files
committed
Merge branch '4.4' into 5.2
* 4.4: [Mailer] fix lowest allowed dependencies Refresh original user in SwitchUserListener. check if templating engine supports view [Mime] Escape commas in address names
2 parents 950e144 + 58b1c61 commit 03a9ac2

File tree

11 files changed

+58
-12
lines changed

11 files changed

+58
-12
lines changed

src/Symfony/Component/Mailer/Bridge/Amazon/Tests/Transport/SesApiTransportTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ public function testSend()
6565
parse_str($options['body'], $content);
6666

6767
$this->assertSame('Hello!', $content['Message_Subject_Data']);
68-
$this->assertSame('Saif Eddin <saif.gmati@symfony.com>', $content['Destination_ToAddresses_member'][0]);
69-
$this->assertSame('Fabien <fabpot@symfony.com>', $content['Source']);
68+
$this->assertSame('"Saif Eddin" <saif.gmati@symfony.com>', $content['Destination_ToAddresses_member'][0]);
69+
$this->assertSame('"Fabien" <fabpot@symfony.com>', $content['Source']);
7070
$this->assertSame('Hello There!', $content['Message_Body_Text_Data']);
7171
$this->assertSame('aws-configuration-set-name', $content['ConfigurationSetName']);
7272

src/Symfony/Component/Mailer/Bridge/Amazon/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"require": {
1919
"php": ">=7.2.5",
2020
"symfony/deprecation-contracts": "^2.1",
21-
"symfony/mailer": "^4.4.12|^5.1.4"
21+
"symfony/mailer": "^4.4.21|^5.2.6"
2222
},
2323
"require-dev": {
2424
"async-aws/ses": "^1.0",

src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunApiTransportTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@ public function testSend()
130130
}
131131

132132
$this->assertStringContainsString('Hello!', $content);
133-
$this->assertStringContainsString('Saif Eddin <saif.gmati@symfony.com>', $content);
134-
$this->assertStringContainsString('Fabien <fabpot@symfony.com>', $content);
133+
$this->assertStringContainsString('"Saif Eddin" <saif.gmati@symfony.com>', $content);
134+
$this->assertStringContainsString('"Fabien" <fabpot@symfony.com>', $content);
135135
$this->assertStringContainsString('Hello There!', $content);
136136

137137
return new MockResponse(json_encode(['id' => 'foobar']), [

src/Symfony/Component/Mailer/Bridge/Mailgun/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
],
1818
"require": {
1919
"php": ">=7.2.5",
20-
"symfony/mailer": "^5.1"
20+
"symfony/mailer": "^5.2.6"
2121
},
2222
"require-dev": {
2323
"symfony/http-client": "^4.4|^5.0"

src/Symfony/Component/Mailer/Bridge/Postmark/Tests/Transport/PostmarkApiTransportTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ public function testSend()
7676
$this->assertStringContainsStringIgnoringCase('X-Postmark-Server-Token: KEY', $options['headers'][1] ?? $options['request_headers'][1]);
7777

7878
$body = json_decode($options['body'], true);
79-
$this->assertSame('Fabien <fabpot@symfony.com>', $body['From']);
80-
$this->assertSame('Saif Eddin <saif.gmati@symfony.com>', $body['To']);
79+
$this->assertSame('"Fabien" <fabpot@symfony.com>', $body['From']);
80+
$this->assertSame('"Saif Eddin" <saif.gmati@symfony.com>', $body['To']);
8181
$this->assertSame('Hello!', $body['Subject']);
8282
$this->assertSame('Hello There!', $body['TextBody']);
8383

src/Symfony/Component/Mailer/Bridge/Postmark/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
],
1818
"require": {
1919
"php": ">=7.2.5",
20-
"symfony/mailer": "^5.1"
20+
"symfony/mailer": "^5.2.6"
2121
},
2222
"require-dev": {
2323
"symfony/http-client": "^4.4|^5.0"

src/Symfony/Component/Mailer/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"egulias/email-validator": "^2.1.10|^3",
2121
"psr/log": "~1.0",
2222
"symfony/event-dispatcher": "^4.4|^5.0",
23-
"symfony/mime": "^5.2",
23+
"symfony/mime": "^5.2.6",
2424
"symfony/polyfill-php80": "^1.15",
2525
"symfony/service-contracts": "^1.1|^2"
2626
},

src/Symfony/Component/Mime/Address.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,16 @@ public function getEncodedAddress(): string
7878

7979
public function toString(): string
8080
{
81-
return ($n = $this->getName()) ? $n.' <'.$this->getEncodedAddress().'>' : $this->getEncodedAddress();
81+
return ($n = $this->getEncodedName()) ? $n.' <'.$this->getEncodedAddress().'>' : $this->getEncodedAddress();
82+
}
83+
84+
public function getEncodedName(): string
85+
{
86+
if ('' === $this->getName()) {
87+
return '';
88+
}
89+
90+
return sprintf('"%s"', preg_replace('/"/u', '\"', $this->getName()));
8291
}
8392

8493
/**

src/Symfony/Component/Mime/Tests/AddressTest.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public function testConstructor()
2727
$a = new Address('fabien@symfonï.com', 'Fabien');
2828
$this->assertEquals('Fabien', $a->getName());
2929
$this->assertEquals('fabien@symfonï.com', $a->getAddress());
30-
$this->assertEquals('Fabien <fabien@xn--symfon-nwa.com>', $a->toString());
30+
$this->assertEquals('"Fabien" <fabien@xn--symfon-nwa.com>', $a->toString());
3131
$this->assertEquals('fabien@xn--symfon-nwa.com', $a->getEncodedAddress());
3232
}
3333

@@ -170,4 +170,10 @@ public function fromStringProvider()
170170
],
171171
];
172172
}
173+
174+
public function testEncodeNameIfNameContainsCommas()
175+
{
176+
$address = new Address('fabien@symfony.com', 'Fabien, "Potencier');
177+
$this->assertSame('"Fabien, \"Potencier" <fabien@symfony.com>', $address->toString());
178+
}
173179
}

src/Symfony/Component/Security/Http/Firewall/SwitchUserListener.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ private function attemptExitUser(Request $request): TokenInterface
207207

208208
if (null !== $this->dispatcher && $original->getUser() instanceof UserInterface) {
209209
$user = $this->provider->refreshUser($original->getUser());
210+
$original->setUser($user);
210211
$switchEvent = new SwitchUserEvent($request, $user, $original);
211212
$this->dispatcher->dispatch($switchEvent, SecurityEvents::SWITCH_USER);
212213
$original = $switchEvent->getToken();

src/Symfony/Component/Security/Http/Tests/Firewall/SwitchUserListenerTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,4 +396,34 @@ public function testSwitchUserStateless()
396396
$this->assertInstanceOf(UsernamePasswordToken::class, $this->tokenStorage->getToken());
397397
$this->assertFalse($this->event->hasResponse());
398398
}
399+
400+
public function testSwitchUserRefreshesOriginalToken()
401+
{
402+
$originalUser = $this->createMock(UserInterface::class);
403+
$refreshedOriginalUser = $this->createMock(UserInterface::class);
404+
$this
405+
->userProvider
406+
->expects($this->any())
407+
->method('refreshUser')
408+
->with($originalUser)
409+
->willReturn($refreshedOriginalUser);
410+
$originalToken = new UsernamePasswordToken($originalUser, '', 'key');
411+
$this->tokenStorage->setToken(new SwitchUserToken('username', '', 'key', ['ROLE_USER'], $originalToken));
412+
$this->request->query->set('_switch_user', SwitchUserListener::EXIT_VALUE);
413+
414+
$dispatcher = $this->createMock(EventDispatcherInterface::class);
415+
$dispatcher
416+
->expects($this->once())
417+
->method('dispatch')
418+
->with(
419+
$this->callback(function (SwitchUserEvent $event) use ($refreshedOriginalUser) {
420+
return $event->getToken()->getUser() === $refreshedOriginalUser;
421+
}),
422+
SecurityEvents::SWITCH_USER
423+
)
424+
;
425+
426+
$listener = new SwitchUserListener($this->tokenStorage, $this->userProvider, $this->userChecker, 'provider123', $this->accessDecisionManager, null, '_switch_user', 'ROLE_ALLOWED_TO_SWITCH', $dispatcher);
427+
$listener($this->event);
428+
}
399429
}

0 commit comments

Comments
 (0)
0