2010-11-15 11:55:28 -08: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 23:00:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( 'INSTALLDIR' ,  realpath ( dirname ( __FILE__ )  .  '/../../..' ));  
						 
					
						
							
								
									
										
										
										
											2013-09-28 15:20:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( 'GNUSOCIAL' ,  true );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( 'STATUSNET' ,  true );   // compatibility
  
						 
					
						
							
								
									
										
										
										
											2010-11-15 11:55:28 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								require_once  INSTALLDIR  .  '/lib/common.php' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  oEmbedTest  extends  PHPUnit_Framework_TestCase  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  setup () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-30 19:51:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> old_ohembed  =  common_config ( 'ohembed' ,  'endpoint' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 11:55:28 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  tearDown () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-30 19:51:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $GLOBALS [ 'config' ][ 'oembed' ][ 'endpoint' ]  =  $this -> old_ohembed ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 11:55:28 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-30 19:51:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  Test  with  ohembed  DISABLED . 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 11:55:28 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:32:29 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  @ dataProvider  discoverableSources 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 11:55:28 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  testoEmbed ( $url ,  $expectedType ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:32:29 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-30 19:51:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $GLOBALS [ 'config' ][ 'oembed' ][ 'endpoint' ]  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:32:29 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> _doTest ( $url ,  $expectedType ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Test  with  oohembed  ENABLED . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ dataProvider  fallbackSources 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-30 19:51:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  testnoEmbed ( $url ,  $expectedType ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:32:29 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-30 19:51:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $GLOBALS [ 'config' ][ 'oembed' ][ 'endpoint' ]  =  $this -> _endpoint (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:32:29 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> _doTest ( $url ,  $expectedType ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-30 19:51:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  Get  default  oembed  endpoint . 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:32:29 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  _endpoint () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $default  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $_server  =  'localhost' ;  $_path  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        require  INSTALLDIR  .  '/lib/default.php' ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-30 19:51:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $default [ 'oembed' ][ 'endpoint' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:32:29 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Actually  run  an  individual  test . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  string  $url 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  string  $expectedType 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  _doTest ( $url ,  $expectedType ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 11:55:28 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $data  =  oEmbedHelper :: getObject ( $url ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> assertEquals ( $expectedType ,  $data -> type ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:58:00 -08: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 11:55:28 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        }  catch  ( Exception  $e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( $expectedType  ==  'none' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $this -> assertEquals ( $expectedType ,  'none' ,  'Should not have data for this URL.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  $e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:25:44 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Sample  oEmbed  targets  for  sites  we  know  ourselves ... 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  public  function  knownSources () 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 11:55:28 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:25:44 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $sources  =  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-17 12:07:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            array ( 'https://www.flickr.com/photos/brionv/5172500179/' ,  'photo' ), 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:25:44 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $sources ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 11:55:28 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:25:44 -08: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 11:55:28 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:25:44 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            array ( 'http://www.youtube.com/watch?v=eUgLR232Cnw' ,  'video' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            array ( 'http://vimeo.com/9283184' ,  'video' ), 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 11:55:28 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:25:44 -08: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 11:55:28 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:25:44 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-30 19:51:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  Sample  oEmbed  targets  that  can  be  found  via  noembed . com . 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:25:44 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  Includes  also  discoverableSources ()  output . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  public  function  fallbackSources () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-30 19:51:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:25:44 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $sources  =  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-30 19:51:23 +00: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 12:25:44 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-30 19:51:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $sources  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 12:25:44 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  array_merge ( self :: discoverableSources (),  $sources ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-15 11:55:28 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}