Skip to content

Commit 1a25fd2

Browse files
committed
[BrowserKit] add $serverParameters to click and clickLink methods
1 parent fc502be commit 1a25fd2

File tree

4 files changed

+57
-6
lines changed

4 files changed

+57
-6
lines changed

UPGRADE-6.3.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
UPGRADE FROM 6.2 to 6.3
22
=======================
33

4+
BrowserKit
5+
-------------------
6+
7+
* Methods `AbstractBrowser::click()` and `AbstractBrowser::clickLink()` will have a new $serverParameters argument in version 6.3, not defining it is deprecated
8+
49
DependencyInjection
510
-------------------
611

src/Symfony/Component/BrowserKit/AbstractBrowser.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -256,27 +256,28 @@ public function getRequest(): object
256256
/**
257257
* Clicks on a given link.
258258
*/
259-
public function click(Link $link): Crawler
259+
public function click(Link $link, array $serverParameters = []): Crawler
260260
{
261261
if ($link instanceof Form) {
262-
return $this->submit($link);
262+
return $this->submit($link, [], $serverParameters);
263263
}
264264

265-
return $this->request($link->getMethod(), $link->getUri());
265+
return $this->request($link->getMethod(), $link->getUri(), [], [], $serverParameters);
266266
}
267267

268268
/**
269269
* Clicks the first link (or clickable image) that contains the given text.
270270
*
271-
* @param string $linkText The text of the link or the alt attribute of the clickable image
271+
* @param string $linkText The text of the link or the alt attribute of the clickable image
272+
* @param array $serverParameters An array of server parameters
272273
*/
273-
public function clickLink(string $linkText): Crawler
274+
public function clickLink(string $linkText, array $serverParameters = []): Crawler
274275
{
275276
if (null === $this->crawler) {
276277
throw new BadMethodCallException(sprintf('The "request()" method must be called before "%s()".', __METHOD__));
277278
}
278279

279-
return $this->click($this->crawler->selectLink($linkText)->link());
280+
return $this->click($this->crawler->selectLink($linkText)->link(), $serverParameters);
280281
}
281282

282283
/**

src/Symfony/Component/BrowserKit/CHANGELOG.md

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

4+
6.3
5+
---
6+
7+
* Methods `AbstractBrowser::click()` and `AbstractBrowser::clickLink()` will have a new `$serverParameters` argument
8+
in version 6.3, not defining it is deprecated
9+
10+
411
6.1
512
---
613

src/Symfony/Component/BrowserKit/Tests/AbstractBrowserTest.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,19 @@ public function testClick()
278278
$this->assertSame('http://www.example.com/foo', $client->getRequest()->getUri(), '->click() clicks on links');
279279
}
280280

281+
public function testClickPreserveHeaders()
282+
{
283+
$client = $this->getBrowser();
284+
$client->setNextResponse(new Response('<html><a href="/foo">foo</a></html>'));
285+
$crawler = $client->request('GET', 'http://www.example.com/foo/foobar');
286+
287+
$client->click($crawler->filter('a')->link(), ['X-Special-Header' => 'Special Header Value']);
288+
289+
$server = $client->getRequest()->getServer();
290+
$this->assertArrayHasKey('X-Special-Header', $server);
291+
$this->assertSame('Special Header Value', $server['X-Special-Header']);
292+
}
293+
281294
public function testClickLink()
282295
{
283296
$client = $this->getBrowser();
@@ -302,6 +315,18 @@ public function testClickLinkNotFound()
302315
}
303316
}
304317

318+
public function testClickLinkPreserveHeaders()
319+
{
320+
$client = $this->getBrowser();
321+
$client->setNextResponse(new Response('<html><a href="/foo">foo</a></html>'));
322+
$client->request('GET', 'http://www.example.com/foo/foobar');
323+
$client->clickLink('foo', ['X-Special-Header' => 'Special Header Value']);
324+
325+
$server = $client->getRequest()->getServer();
326+
$this->assertArrayHasKey('X-Special-Header', $server);
327+
$this->assertSame('Special Header Value', $server['X-Special-Header']);
328+
}
329+
305330
public function testClickForm()
306331
{
307332
$client = $this->getBrowser();
@@ -313,6 +338,19 @@ public function testClickForm()
313338
$this->assertSame('http://www.example.com/foo', $client->getRequest()->getUri(), '->click() Form submit forms');
314339
}
315340

341+
public function testClickFormPreserveHeaders()
342+
{
343+
$client = $this->getBrowser();
344+
$client->setNextResponse(new Response('<html><form action="/foo"><input type="submit" /></form></html>'));
345+
$crawler = $client->request('GET', 'http://www.example.com/foo/foobar');
346+
347+
$client->click($crawler->filter('input')->form(), ['X-Special-Header' => 'Special Header Value']);
348+
349+
$server = $client->getRequest()->getServer();
350+
$this->assertArrayHasKey('X-Special-Header', $server);
351+
$this->assertSame('Special Header Value', $server['X-Special-Header']);
352+
}
353+
316354
public function testSubmit()
317355
{
318356
$client = $this->getBrowser();

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy