Skip to content

Commit 69e29ae

Browse files
syl20bnicolas-grekas
authored andcommitted
[BrowserKit] add serverParameters to click and clickLink method
1 parent a830ccc commit 69e29ae

File tree

4 files changed

+61
-6
lines changed

4 files changed

+61
-6
lines changed

UPGRADE-6.4.md

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

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

src/Symfony/Component/BrowserKit/AbstractBrowser.php

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -263,26 +263,33 @@ public function getRequest(): object
263263

264264
/**
265265
* Clicks on a given link.
266+
*
267+
* @param array $serverParameters An array of server parameters
266268
*/
267-
public function click(Link $link): Crawler
269+
public function click(Link $link/* , array $serverParameters = [] */): Crawler
268270
{
271+
$serverParameters = 2 === \func_num_args() ? func_get_arg(1) : [];
272+
269273
if ($link instanceof Form) {
270-
return $this->submit($link);
274+
return $this->submit($link, [], $serverParameters);
271275
}
272276

273-
return $this->request($link->getMethod(), $link->getUri());
277+
return $this->request($link->getMethod(), $link->getUri(), [], [], $serverParameters);
274278
}
275279

276280
/**
277281
* Clicks the first link (or clickable image) that contains the given text.
278282
*
279-
* @param string $linkText The text of the link or the alt attribute of the clickable image
283+
* @param string $linkText The text of the link or the alt attribute of the clickable image
284+
* @param array $serverParameters An array of server parameters
280285
*/
281-
public function clickLink(string $linkText): Crawler
286+
public function clickLink(string $linkText/* , array $serverParameters = [] */): Crawler
282287
{
283288
$crawler = $this->crawler ?? throw new BadMethodCallException(sprintf('The "request()" method must be called before "%s()".', __METHOD__));
284289

285-
return $this->click($crawler->selectLink($linkText)->link());
290+
$serverParameters = 2 === \func_num_args() ? func_get_arg(1) : [];
291+
292+
return $this->click($crawler->selectLink($linkText)->link(), $serverParameters);
286293
}
287294

288295
/**

src/Symfony/Component/BrowserKit/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+
6.4
5+
---
6+
7+
* Added `$serverParameters` argument to `AbstractBrowser::click()` and `AbstractBrowser::clickLink()` methods
8+
49
6.3
510
---
611

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

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

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

315+
public function testClickLinkPreserveHeaders()
316+
{
317+
$client = $this->getBrowser();
318+
$client->setNextResponse(new Response('<html><a href="/foo">foo</a></html>'));
319+
$client->request('GET', 'http://www.example.com/foo/foobar');
320+
$client->clickLink('foo', ['X-Special-Header' => 'Special Header Value']);
321+
322+
$server = $client->getRequest()->getServer();
323+
$this->assertArrayHasKey('X-Special-Header', $server);
324+
$this->assertSame('Special Header Value', $server['X-Special-Header']);
325+
}
326+
302327
public function testClickForm()
303328
{
304329
$client = $this->getBrowser();
@@ -310,6 +335,19 @@ public function testClickForm()
310335
$this->assertSame('http://www.example.com/foo', $client->getRequest()->getUri(), '->click() Form submit forms');
311336
}
312337

338+
public function testClickFormPreserveHeaders()
339+
{
340+
$client = $this->getBrowser();
341+
$client->setNextResponse(new Response('<html><form action="/foo"><input type="submit" /></form></html>'));
342+
$crawler = $client->request('GET', 'http://www.example.com/foo/foobar');
343+
344+
$client->click($crawler->filter('input')->form(), ['X-Special-Header' => 'Special Header Value']);
345+
346+
$server = $client->getRequest()->getServer();
347+
$this->assertArrayHasKey('X-Special-Header', $server);
348+
$this->assertSame('Special Header Value', $server['X-Special-Header']);
349+
}
350+
313351
public function testSubmit()
314352
{
315353
$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