assertEquals('http://example.com/', unparseUrl(parse_url('http://example.com'))); $this->assertEquals('http://example.com/?thing&more', unparseUrl(parse_url('http://example.com?thing&more'))); } public function testNormaliseUrl() { $this->assertEquals('http://example.com/', normaliseUrl('http://example.com')); $this->assertEquals('http://example.com/?thing=1', normaliseUrl('http://example.com?thing=1')); } public function testHttpParseHeaders() { $test = << 'text/html; charset=UTF-8', 'Server' => 'Funky/1.0', 'Set-Cookie' => array('foo=bar', 'baz=quux'), 'Folded' => "works\r\n\ttoo" ); $result = http_parse_headers($test); $this->assertEquals($expected, $result); } /** @group network */ public function testFollowOneRedirect() { $this->assertEquals('https://aaronparecki.com/', followOneRedirect('http://aaronparecki.com/')); } public function testRelMeDocumentUrlHandlesNoRedirect() { $chain = mockFollowOneRedirect(array(null)); $meUrl = normaliseUrl('http://example.com'); list($url, $isSecure, $previous) = relMeDocumentUrl($meUrl, $chain); $this->assertEquals($meUrl, $url); $this->assertTrue($isSecure); } public function testRelMeDocumentUrlHandlesSingleSecureHttpRedirect() { $finalUrl = normaliseUrl('http://example.org'); $chain = mockFollowOneRedirect(array($finalUrl)); $meUrl = normaliseUrl('http://example.com'); list($url, $isSecure, $previous) = relMeDocumentUrl($meUrl, $chain); $this->assertEquals($finalUrl, $url); $this->assertTrue($isSecure); $this->assertContains($finalUrl, $previous); } public function testRelMeDocumentUrlHandlesMultipleSecureHttpRedirects() { $finalUrl = normaliseUrl('http://example.org'); $intermediateUrl = normaliseUrl('http://www.example.org'); $chain = mockFollowOneRedirect(array($intermediateUrl, $finalUrl)); $meUrl = normaliseUrl('http://example.com'); list($url, $isSecure, $previous) = relMeDocumentUrl($meUrl, $chain); $this->assertEquals($finalUrl, $url); $this->assertTrue($isSecure); $this->assertContains($intermediateUrl, $previous); } public function testRelMeDocumentUrlHandlesSingleSecureHttpsRedirect() { $finalUrl = normaliseUrl('https://example.org'); $chain = mockFollowOneRedirect(array($finalUrl)); $meUrl = normaliseUrl('https://example.com'); list($url, $isSecure, $previous) = relMeDocumentUrl($meUrl, $chain); $this->assertEquals($finalUrl, $url); $this->assertTrue($isSecure); $this->assertContains($finalUrl, $previous); } public function testRelMeDocumentUrlHandlesMultipleSecureHttpsRedirects() { $finalUrl = normaliseUrl('https://example.org'); $intermediateUrl = normaliseUrl('https://www.example.org'); $chain = mockFollowOneRedirect(array($intermediateUrl, $finalUrl)); $meUrl = normaliseUrl('https://example.com'); list($url, $isSecure, $previous) = relMeDocumentUrl($meUrl, $chain); $this->assertEquals($finalUrl, $url); $this->assertTrue($isSecure); $this->assertContains($intermediateUrl, $previous); } public function testRelMeDocumentUrlHandlesSingleSecureHttpToHttpsRedirect() { $finalUrl = normaliseUrl('https://example.org'); $chain = mockFollowOneRedirect(array($finalUrl)); $meUrl = normaliseUrl('http://example.com'); list($url, $isSecure, $previous) = relMeDocumentUrl($meUrl, $chain); $this->assertEquals($finalUrl, $url); $this->assertTrue($isSecure); $this->assertContains($finalUrl, $previous); } public function testRelMeDocumentUrlReportsInsecureRedirect() { $finalUrl = normaliseUrl('http://example.org'); $intermediateUrl = normaliseUrl('https://www.example.org'); $chain = mockFollowOneRedirect(array($intermediateUrl, $finalUrl)); $meUrl = normaliseUrl('https://example.com'); list($url, $isSecure, $previous) = relMeDocumentUrl($meUrl, $chain); $this->assertFalse($isSecure); $this->assertContains($intermediateUrl, $previous); } public function testRelMeLinksFindsLinks() { $relMeLinks = relMeLinks(<< Me EOT , 'http://example.com'); $this->assertEquals(array('http://example.org', 'http://twitter.com/barnabywalters'), $relMeLinks); } // backlinkingRelMeSuccessNoRedirect tests public function testBacklinkingRelMeSuccessNoRedirect() { $meUrl = $backlinkingMeUrl = 'http://example.com'; $chain = mockFollowOneRedirect(array($backlinkingMeUrl)); list($matches, $secure, $previous) = backlinkingRelMeUrlMatches($backlinkingMeUrl, $meUrl, $chain); $this->assertTrue($matches); $this->assertTrue($secure); } public function testBacklinkingRelMeSuccessOneRedirect() { $meUrl = 'http://example.com'; $backlinkingMeUrl = 'http://example.org'; $chain = mockFollowOneRedirect(array($backlinkingMeUrl, $meUrl)); list($matches, $secure, $previous) = backlinkingRelMeUrlMatches($backlinkingMeUrl, $meUrl, $chain); $this->assertTrue($matches); $this->assertTrue($secure); } public function testBacklinkingRelMeNoMatchInsecureRedirect() { $meUrl = 'http://example.com'; $backlinkingMeUrl = 'http://example.org'; $chain = mockFollowOneRedirect(array($backlinkingMeUrl, 'https://example.org')); list($matches, $secure, $previous) = backlinkingRelMeUrlMatches($backlinkingMeUrl, $meUrl, $chain); $this->assertFalse($matches); $this->assertFalse($secure); } public function testBacklinkingRelMeSuccessInsecureRedirect() { $meUrl = 'http://example.org'; $backlinkingMeUrl = 'http://example.com'; $chain = mockFollowOneRedirect(array($backlinkingMeUrl, 'https://example.org')); list($matches, $secure, $previous) = backlinkingRelMeUrlMatches($backlinkingMeUrl, $meUrl, $chain); $this->assertTrue($matches); $this->assertFalse($secure); } public function testBacklinkingRelMeSecureRedirectNoMatch() { $meUrl = 'http://example.org'; $backlinkingMeUrl = 'http://example.com'; $chain = mockFollowOneRedirect(array($backlinkingMeUrl, 'http://foo.org')); list($matches, $secure, $previous) = backlinkingRelMeUrlMatches($backlinkingMeUrl, $meUrl, $chain); $this->assertFalse($matches); $this->assertTrue($secure); } /** * Tests that a backlinking rel matches without the domain being case-sensitive * @see https://github.com/indieweb/indiewebify-me/issues/52 */ public function testBacklinkingRelMeNotCaseSensitive() { $meUrl = 'http://www.lifewithalacrity.com/'; $backlinkingMeUrl = 'http://t.co/agsxcOcLry'; $stylizedUrl = 'Http://www.LifeWithAlacrity.com/'; $chain = mockFollowOneRedirect(array($stylizedUrl)); list($matches, $secure, $previous) = backlinkingRelMeUrlMatches($backlinkingMeUrl, $meUrl, $chain); $this->assertTrue($matches); $this->assertTrue($secure); } }__halt_compiler();----SIGNATURE:----lBmz29IvBfSHGLuLhhReQh6xOjHrvBrG86ry6KzFEyrmm0BpQnpywxDDFTs+WZQ7KvxHIPmIJk+angnNGq2ZxKGpWaNoaX9xQgfXYfL+7qstF4UDVbz0W0yW3d4smBpxq84yp6oiOYCO0I+l7+oFRg8vmRM00H7SDU7TU9ozournuSA4431FgbFHljFFg64PMviDasiyNJgIyr9Zg3j+nRZTe5Zy1w94WLiP8nI8ufjOHz01UtIO12sB2ndVpK2/CSlaXd/G7tzLbV48+FgK16Gcrmok6es7PHMJ9y+7Cd5KpiMqB8MuA13DVXyU/1+lgFcpV5ZcUCNU+gNz/X17pKkj8J7qmcqsJihUKbCJjwAmyJj0Onvaomm5+XH6G/ok3iT74RKxd15Sa3WVdS2ttUIlTddox2VoUCtNeJnxwoK+M0a2Hv86imYgtx6Uw0SD2ysUZQ2GK1z0TpMvjqVKOTlHfnjHqwGOa+/LP5z2ftUBJ+xYizkHLngYK8L19TCYx2bU9ugM+biXC5yCnBNuv7HSQOG3qofcbIbHH1t5crilAjSjktUXftSHx8aR1ntshOOfHNIXSbRUnrE3wry+HdW9qvdpkjzbDxQn99XaoP6vEYaAJx6icQmudefw/8/8aZWhl4J6YydD7GFHztchgEm8Y66lY+jGaTZcfElpZZM=----ATTACHMENT:----OTI1MDIzNTE5MTA1NzQ3MCA2MjEzNDgzMTg4MjQwMzQyIDM0NDczMzQxMzUwMDEwNTQ=