forked from GNUsocial/gnu-social
		
	
		
			
	
	
		
			112 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			112 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
							 | 
						||
| 
								 | 
							
								    print "This script must be run from the command line\n";
							 | 
						||
| 
								 | 
							
								    exit();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
							 | 
						||
| 
								 | 
							
								define('STATUSNET', true);
							 | 
						||
| 
								 | 
							
								define('LACONICA', true);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require_once INSTALLDIR . '/lib/common.php';
							 | 
						||
| 
								 | 
							
								require_once INSTALLDIR . '/plugins/FeedSub/feedsub.php';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class FeedDiscoveryTest extends PHPUnit_Framework_TestCase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @dataProvider provider
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testProduction($url, $html, $expected)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $sub = new FeedDiscovery();
							 | 
						||
| 
								 | 
							
								        $url = $sub->discoverFromHTML($url, $html);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected, $url);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    static public function provider()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $sampleHeader = <<<END
							 | 
						||
| 
								 | 
							
								<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
							 | 
						||
| 
								 | 
							
								<html xmlns="http://www.w3.org/1999/xhtml">
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<head profile="http://gmpg.org/xfn/11">
							 | 
						||
| 
								 | 
							
								<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<title>leŭksman  </title>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<meta name="generator" content="WordPress 2.8.6" /> <!-- leave this for stats -->
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<link rel="stylesheet" href="http://leuksman.com/log/wp-content/themes/leuksman/style.css" type="text/css" media="screen" />
							 | 
						||
| 
								 | 
							
								<link rel="alternate" type="application/rss+xml" title="leŭksman RSS Feed" href="http://leuksman.com/log/feed/" />
							 | 
						||
| 
								 | 
							
								<link rel="pingback" href="http://leuksman.com/log/xmlrpc.php" />
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<meta name="viewport" content="width = 640" />
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<xmeta name="viewport" content="initial-scale=2.3, user-scalable=no" />
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<style type="text/css" media="screen">
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									#page { background: url("http://leuksman.com/log/wp-content/themes/leuksman/images/kubrickbg.jpg") repeat-y top; border: none; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</style>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://leuksman.com/log/xmlrpc.php?rsd" />
							 | 
						||
| 
								 | 
							
								<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://leuksman.com/log/wp-includes/wlwmanifest.xml" /> 
							 | 
						||
| 
								 | 
							
								<link rel='index' title='leŭksman' href='http://leuksman.com/log' />
							 | 
						||
| 
								 | 
							
								<meta name="generator" content="WordPress 2.8.6" />
							 | 
						||
| 
								 | 
							
								</head>
							 | 
						||
| 
								 | 
							
								<body>
							 | 
						||
| 
								 | 
							
								</body>
							 | 
						||
| 
								 | 
							
								</html>
							 | 
						||
| 
								 | 
							
								END;
							 | 
						||
| 
								 | 
							
								        return array(
							 | 
						||
| 
								 | 
							
								                     array('http://example.com/',
							 | 
						||
| 
								 | 
							
								                           '<html><link rel="alternate" href="http://example.com/feed/rss" type="application/rss+xml">',
							 | 
						||
| 
								 | 
							
								                           'http://example.com/feed/rss'),
							 | 
						||
| 
								 | 
							
								                     array('http://example.com/atom',
							 | 
						||
| 
								 | 
							
								                           '<html><link rel="alternate" href="http://example.com/feed/atom" type="application/atom+xml">',
							 | 
						||
| 
								 | 
							
								                           'http://example.com/feed/atom'),
							 | 
						||
| 
								 | 
							
								                     array('http://example.com/empty',
							 | 
						||
| 
								 | 
							
								                           '<html><link rel="alternate" href="http://example.com/index.pdf" type="application/pdf">',
							 | 
						||
| 
								 | 
							
								                           false),
							 | 
						||
| 
								 | 
							
								                     array('http://example.com/tagsoup',
							 | 
						||
| 
								 | 
							
								                           '<body><pre><LINK rel=alternate hRef=http://example.com/feed/rss type=application/rss+xml><fnork',
							 | 
						||
| 
								 | 
							
								                           'http://example.com/feed/rss'),
							 | 
						||
| 
								 | 
							
								                     // 'rel' attribute must be lowercase, alone per http://www.rssboard.org/rss-autodiscovery
							 | 
						||
| 
								 | 
							
								                     array('http://example.com/tagsoup2',
							 | 
						||
| 
								 | 
							
								                           '<body><pre><LINK rel=" feeders    alternate 467" hRef=http://example.com/feed/rss type=application/rss+xml><fnork',
							 | 
						||
| 
								 | 
							
								                           false),
							 | 
						||
| 
								 | 
							
								                     array('http://example.com/tagsoup3',
							 | 
						||
| 
								 | 
							
								                           '<body><pre><LINK rel=ALTERNATE hRef=http://example.com/feed/rss type=application/rss+xml><fnork',
							 | 
						||
| 
								 | 
							
								                           false),
							 | 
						||
| 
								 | 
							
								                     array('http://example.com/relative/link1',
							 | 
						||
| 
								 | 
							
								                           '<html><link rel="alternate" href="/feed/rss" type="application/rss+xml">',
							 | 
						||
| 
								 | 
							
								                           'http://example.com/feed/rss'),
							 | 
						||
| 
								 | 
							
								                     array('http://example.com/relative/link2',
							 | 
						||
| 
								 | 
							
								                           '<html><link rel="alternate" href="../feed/rss" type="application/rss+xml">',
							 | 
						||
| 
								 | 
							
								                           'http://example.com/feed/rss'),
							 | 
						||
| 
								 | 
							
								                     array('http://example.com/relative/link3',
							 | 
						||
| 
								 | 
							
								                           '<html><link rel="alternate" href="http:/feed/rss" type="application/rss+xml">',
							 | 
						||
| 
								 | 
							
								                           'http://example.com/feed/rss'),
							 | 
						||
| 
								 | 
							
								                     array('http://example.com/base/link1',
							 | 
						||
| 
								 | 
							
								                           '<html><link rel="alternate" href="/feed/rss" type="application/rss+xml"><base href="http://target.example.com/">',
							 | 
						||
| 
								 | 
							
								                           'http://target.example.com/feed/rss'),
							 | 
						||
| 
								 | 
							
								                     array('http://example.com/base/link2',
							 | 
						||
| 
								 | 
							
								                           '<html><link rel="alternate" href="feed/rss" type="application/rss+xml"><base href="http://target.example.com/">',
							 | 
						||
| 
								 | 
							
								                           'http://target.example.com/feed/rss'),
							 | 
						||
| 
								 | 
							
								                     array('http://example.com/base/link3',
							 | 
						||
| 
								 | 
							
								                           '<html><link rel="alternate" href="http:/feed/rss" type="application/rss+xml"><base href="http://target.example.com/">',
							 | 
						||
| 
								 | 
							
								                           'http://target.example.com/feed/rss'),
							 | 
						||
| 
								 | 
							
								                     // Trick question! There's a <base> but no href on it
							 | 
						||
| 
								 | 
							
								                     array('http://example.com/relative/fauxbase',
							 | 
						||
| 
								 | 
							
								                           '<html><link rel="alternate" href="../feed/rss" type="application/rss+xml"><base target="top">',
							 | 
						||
| 
								 | 
							
								                           'http://example.com/feed/rss'),
							 | 
						||
| 
								 | 
							
								                     // Actual WordPress blog header example
							 | 
						||
| 
								 | 
							
								                     array('http://leuksman.com/log/',
							 | 
						||
| 
								 | 
							
								                           $sampleHeader,
							 | 
						||
| 
								 | 
							
								                           'http://leuksman.com/log/feed/'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |