2010-11-15 19:55:28 +00:00
< ? php
if ( isset ( $_SERVER ) && array_key_exists ( 'REQUEST_METHOD' , $_SERVER )) {
print " This script must be run from the command line \n " ;
exit ();
}
2014-05-06 22:00:30 +01:00
define ( 'INSTALLDIR' , realpath ( dirname ( __FILE__ ) . '/../../..' ));
2013-09-28 14:20:10 +01:00
define ( 'GNUSOCIAL' , true );
define ( 'STATUSNET' , true ); // compatibility
2010-11-15 19:55:28 +00:00
require_once INSTALLDIR . '/lib/common.php' ;
class oEmbedTest extends PHPUnit_Framework_TestCase
{
public function setup ()
{
2011-09-30 20:51:23 +01:00
$this -> old_ohembed = common_config ( 'ohembed' , 'endpoint' );
2010-11-15 19:55:28 +00:00
}
public function tearDown ()
{
2011-09-30 20:51:23 +01:00
$GLOBALS [ 'config' ][ 'oembed' ][ 'endpoint' ] = $this -> old_ohembed ;
2010-11-15 19:55:28 +00:00
}
/**
2011-09-30 20:51:23 +01:00
* Test with ohembed DISABLED .
2010-11-15 19:55:28 +00:00
*
2010-11-15 20:32:29 +00:00
* @ dataProvider discoverableSources
2010-11-15 19:55:28 +00:00
*/
public function testoEmbed ( $url , $expectedType )
2010-11-15 20:32:29 +00:00
{
2011-09-30 20:51:23 +01:00
$GLOBALS [ 'config' ][ 'oembed' ][ 'endpoint' ] = false ;
2010-11-15 20:32:29 +00:00
$this -> _doTest ( $url , $expectedType );
}
/**
* Test with oohembed ENABLED .
*
* @ dataProvider fallbackSources
*/
2011-09-30 20:51:23 +01:00
public function testnoEmbed ( $url , $expectedType )
2010-11-15 20:32:29 +00:00
{
2011-09-30 20:51:23 +01:00
$GLOBALS [ 'config' ][ 'oembed' ][ 'endpoint' ] = $this -> _endpoint ();
2010-11-15 20:32:29 +00:00
$this -> _doTest ( $url , $expectedType );
}
/**
2011-09-30 20:51:23 +01:00
* Get default oembed endpoint .
2010-11-15 20:32:29 +00:00
*
* @ return string
*/
function _endpoint ()
{
$default = array ();
$_server = 'localhost' ; $_path = '' ;
require INSTALLDIR . '/lib/default.php' ;
2011-09-30 20:51:23 +01:00
return $default [ 'oembed' ][ 'endpoint' ];
2010-11-15 20:32:29 +00:00
}
/**
* Actually run an individual test .
*
* @ param string $url
* @ param string $expectedType
*/
function _doTest ( $url , $expectedType )
2010-11-15 19:55:28 +00:00
{
try {
$data = oEmbedHelper :: getObject ( $url );
$this -> assertEquals ( $expectedType , $data -> type );
2010-11-15 20:58:00 +00:00
if ( $data -> type == 'photo' ) {
$this -> assertTrue ( ! empty ( $data -> url ), 'Photo must have a URL.' );
$this -> assertTrue ( ! empty ( $data -> width ), 'Photo must have a width.' );
$this -> assertTrue ( ! empty ( $data -> height ), 'Photo must have a height.' );
} else if ( $data -> type == 'video' ) {
$this -> assertTrue ( ! empty ( $data -> html ), 'Video must have embedding HTML.' );
$this -> assertTrue ( ! empty ( $data -> thumbnail_url ), 'Video should have a thumbnail.' );
}
if ( ! empty ( $data -> thumbnail_url )) {
$this -> assertTrue ( ! empty ( $data -> thumbnail_width ), 'Thumbnail must list a width.' );
$this -> assertTrue ( ! empty ( $data -> thumbnail_height ), 'Thumbnail must list a height.' );
}
2010-11-15 19:55:28 +00:00
} catch ( Exception $e ) {
if ( $expectedType == 'none' ) {
$this -> assertEquals ( $expectedType , 'none' , 'Should not have data for this URL.' );
} else {
throw $e ;
}
}
}
2010-11-15 20:25:44 +00:00
/**
* Sample oEmbed targets for sites we know ourselves ...
* @ return array
*/
static public function knownSources ()
2010-11-15 19:55:28 +00:00
{
2010-11-15 20:25:44 +00:00
$sources = array (
array ( 'http://www.flickr.com/photos/brionv/5172500179/' , 'photo' ),
array ( 'http://yfrog.com/fy42747177j' , 'photo' ),
array ( 'http://twitpic.com/36adw6' , 'photo' ),
);
return $sources ;
}
2010-11-15 19:55:28 +00:00
2010-11-15 20:25:44 +00:00
/**
* Sample oEmbed targets that can be found via discovery .
* Includes also knownSources () output .
*
* @ return array
*/
static public function discoverableSources ()
{
$sources = array (
2010-11-15 19:55:28 +00:00
2010-11-15 20:25:44 +00:00
array ( 'http://www.youtube.com/watch?v=eUgLR232Cnw' , 'video' ),
array ( 'http://vimeo.com/9283184' , 'video' ),
2010-11-15 19:55:28 +00:00
2010-11-15 20:25:44 +00:00
// Will fail discovery:
array ( 'http://leuksman.com/log/2010/10/29/statusnet-0-9-6-release/' , 'none' ),
);
return array_merge ( self :: knownSources (), $sources );
2010-11-15 19:55:28 +00:00
}
2010-11-15 20:25:44 +00:00
/**
2011-09-30 20:51:23 +01:00
* Sample oEmbed targets that can be found via noembed . com .
2010-11-15 20:25:44 +00:00
* Includes also discoverableSources () output .
*
* @ return array
*/
static public function fallbackSources ()
{
2011-09-30 20:51:23 +01:00
2010-11-15 20:25:44 +00:00
$sources = array (
2011-09-30 20:51:23 +01:00
array ( 'https://github.com/git/git/commit/85e9c7e1d42849c5c3084a9da748608468310c0e' , 'Github Commit' ), // @fixme in future there may be a native provider -- will change to 'photo'
2010-11-15 20:25:44 +00:00
);
2011-09-30 20:51:23 +01:00
$sources = array ();
2010-11-15 20:25:44 +00:00
return array_merge ( self :: discoverableSources (), $sources );
}
2010-11-15 19:55:28 +00:00
}