* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\DomCrawler\Tests; use PHPUnit\Framework\TestCase; use Symfony\Component\DomCrawler\Link; class LinkTest extends TestCase { /** * @expectedException \LogicException */ public function testConstructorWithANonATag() { $dom = new \DOMDocument(); $dom->loadHTML('
'); new Link($dom->getElementsByTagName('div')->item(0), 'http://www.example.com/'); } /** * @expectedException \InvalidArgumentException */ public function testConstructorWithAnInvalidCurrentUri() { $dom = new \DOMDocument(); $dom->loadHTML('foo'); new Link($dom->getElementsByTagName('a')->item(0), 'example.com'); } public function testGetNode() { $dom = new \DOMDocument(); $dom->loadHTML('foo'); $node = $dom->getElementsByTagName('a')->item(0); $link = new Link($node, 'http://example.com/'); $this->assertEquals($node, $link->getNode(), '->getNode() returns the node associated with the link'); } public function testGetMethod() { $dom = new \DOMDocument(); $dom->loadHTML('foo'); $node = $dom->getElementsByTagName('a')->item(0); $link = new Link($node, 'http://example.com/'); $this->assertEquals('GET', $link->getMethod(), '->getMethod() returns the method of the link'); $link = new Link($node, 'http://example.com/', 'post'); $this->assertEquals('POST', $link->getMethod(), '->getMethod() returns the method of the link'); } /** * @dataProvider getGetUriTests */ public function testGetUri($url, $currentUri, $expected) { $dom = new \DOMDocument(); $dom->loadHTML(sprintf('foo', $url)); $link = new Link($dom->getElementsByTagName('a')->item(0), $currentUri); $this->assertEquals($expected, $link->getUri()); } /** * @dataProvider getGetUriTests */ public function testGetUriOnArea($url, $currentUri, $expected) { $dom = new \DOMDocument(); $dom->loadHTML(sprintf('', $url)); $link = new Link($dom->getElementsByTagName('area')->item(0), $currentUri); $this->assertEquals($expected, $link->getUri()); } /** * @dataProvider getGetUriTests */ public function testGetUriOnLink($url, $currentUri, $expected) { $dom = new \DOMDocument(); $dom->loadHTML(sprintf('', $url)); $link = new Link($dom->getElementsByTagName('link')->item(0), $currentUri); $this->assertEquals($expected, $link->getUri()); } public function getGetUriTests() { return array( array('/foo', 'http://localhost/bar/foo/', 'http://localhost/foo'), array('/foo', 'http://localhost/bar/foo', 'http://localhost/foo'), array(' /foo', 'http://localhost/bar/foo/', 'http://localhost/foo'), array('/foo ', 'http://localhost/bar/foo', 'http://localhost/foo'), array('foo', 'http://localhost/bar/foo/', 'http://localhost/bar/foo/foo'), array('foo', 'http://localhost/bar/foo', 'http://localhost/bar/foo'), array('', 'http://localhost/bar/', 'http://localhost/bar/'), array('#', 'http://localhost/bar/', 'http://localhost/bar/#'), array('#bar', 'http://localhost/bar?a=b', 'http://localhost/bar?a=b#bar'), array('#bar', 'http://localhost/bar/#foo', 'http://localhost/bar/#bar'), array('?a=b', 'http://localhost/bar#foo', 'http://localhost/bar?a=b'), array('?a=b', 'http://localhost/bar/', 'http://localhost/bar/?a=b'), array('http://login.foo.com/foo', 'http://localhost/bar/', 'http://login.foo.com/foo'), array('https://login.foo.com/foo', 'https://localhost/bar/', 'https://login.foo.com/foo'), array('mailto:foo@bar.com', 'http://localhost/foo', 'mailto:foo@bar.com'), // tests schema relative URL (issue #7169) array('//login.foo.com/foo', 'http://localhost/bar/', 'http://login.foo.com/foo'), array('//login.foo.com/foo', 'https://localhost/bar/', 'https://login.foo.com/foo'), array('?foo=2', 'http://localhost?foo=1', 'http://localhost?foo=2'), array('?foo=2', 'http://localhost/?foo=1', 'http://localhost/?foo=2'), array('?foo=2', 'http://localhost/bar?foo=1', 'http://localhost/bar?foo=2'), array('?foo=2', 'http://localhost/bar/?foo=1', 'http://localhost/bar/?foo=2'), array('?bar=2', 'http://localhost?foo=1', 'http://localhost?bar=2'), array('foo', 'http://login.foo.com/bar/baz?/query/string', 'http://login.foo.com/bar/foo'), array('.', 'http://localhost/foo/bar/baz', 'http://localhost/foo/bar/'), array('./', 'http://localhost/foo/bar/baz', 'http://localhost/foo/bar/'), array('./foo', 'http://localhost/foo/bar/baz', 'http://localhost/foo/bar/foo'), array('..', 'http://localhost/foo/bar/baz', 'http://localhost/foo/'), array('../', 'http://localhost/foo/bar/baz', 'http://localhost/foo/'), array('../foo', 'http://localhost/foo/bar/baz', 'http://localhost/foo/foo'), array('../..', 'http://localhost/foo/bar/baz', 'http://localhost/'), array('../../', 'http://localhost/foo/bar/baz', 'http://localhost/'), array('../../foo', 'http://localhost/foo/bar/baz', 'http://localhost/foo'), array('../../foo', 'http://localhost/bar/foo/', 'http://localhost/foo'), array('../bar/../../foo', 'http://localhost/bar/foo/', 'http://localhost/foo'), array('../bar/./../../foo', 'http://localhost/bar/foo/', 'http://localhost/foo'), array('../../', 'http://localhost/', 'http://localhost/'), array('../../', 'http://localhost', 'http://localhost/'), array('/foo', 'http://localhost?bar=1', 'http://localhost/foo'), array('/foo', 'http://localhost#bar', 'http://localhost/foo'), array('/foo', 'file:///', 'file:///foo'), array('/foo', 'file:///bar/baz', 'file:///foo'), array('foo', 'file:///', 'file:///foo'), array('foo', 'file:///bar/baz', 'file:///bar/foo'), ); } } __halt_compiler();----SIGNATURE:----kxxjASItUXwOMK7K9iiYVw6ut7MG95UQwCbLwmtkx0zy2vQ7iIpx1EYB+5xJ7E3qfy8cB8j9NGVO0cPvf0voJWzAnofxSkjz7L/ugafteawi4ouUj/TB4i2rp8iEXu9rfcPhFoy7oxi4Q2x+pqdAYRc+cIdK7UzmeUAPnCoRZCIiHjnqKLj4AMpM7Y9Blgw9EC7ek8t3UI2gyPBb7PAhJcjlbI/zqzBe1kDGL82w+W/4jiLh9l3FqJvdXNdEt+COKKl6KMVDKxBDDbEBusHVDn5b8F74FWDARWH9lAHfQgzndUajAGu1XapY7jyyzMHDg8kbCHR4H1Msa5fYUfdHuCjVIa/JYScdn45fFwXh54VMjceZQofCaJCAYFeZ4WivbiqVXpl3wRaqOX4HE4+DY7X3w0SN05msnBo9P/KIipgAr+NIpuGjZ3XKMreTvWaFVTLQs85UEa/zi2kz03mmV/L3r9XJjGjxbIIz8O2kSY9Jln+65MatnMIcuxA3OJlSvAN+XOZtGCV7UnI4iI/tYzhb0QN6ErmbyJKj0b5wzoTAgVxbq0yWnsWneUn+CFO0UkirGTx7nnFcmACpX2mxxETd+iLgPmbxtBERhYDtuv1ena6zF6JGIxmHaL1KfmQoY8SRDK5AnT3OD53c7DYeOl8ETiGxxA5tU8K/sDvrS0s=----ATTACHMENT:----NDg0OTQyMzgxNDcxNjIxOSA3Nzg1OTUzNzQ5NDgzMDIgODUzMTg4Nzg3MDc5OTMy