WordPress.org

Make WordPress Core

Ticket #20434: 20434-ut.diff

File 20434-ut.diff, 3.8 KB (added by dd32, 6 years ago)

Unit Tests

  • wp-testcase/test_http.php

     
    165165}
    166166class WPHTTP_fsockopen extends _WPHTTP {
    167167        var $transport = 'fsockopen';
     168}
     169
     170
     171// non-transport-specific WP_HTTP Tests
     172class WPHTTP extends WPTestCase {
     173
     174        /**
     175         * @dataProvider make_absolute_url_testcases
     176         */
     177        function test_make_absolute_url( $relative_url, $absolute_url, $expected ) {
     178                if ( ! is_callable( array( 'WP_HTTP', 'make_absolute_url' ) ) ) {
     179                        $this->markTestSkipped( "This version of WP_HTTP does't support WP_HTTP::make_absolute_url()" );
     180                        return;
     181                }
     182       
     183                $actual = WP_HTTP::make_absolute_url( $relative_url, $absolute_url );
     184                $this->assertEquals( $expected, $actual );
     185        }
     186
     187        function make_absolute_url_testcases() {
     188                // 0: The Location header, 1: The current url, 3: The expected url
     189                return array(
     190                        array( 'http://site.com/', 'http://example.com/', 'http://site.com/' ), // Absolute URL provided
     191                        array( '/location', '', '/location' ), // No current url provided
     192                       
     193                        array( '', 'http://example.com', 'http://example.com/' ), // No location provided
     194                       
     195                        // Location provided relative to site root
     196                        array( '/root-relative-link.ext', 'http://example.com/', 'http://example.com/root-relative-link.ext' ),
     197                        array( '/root-relative-link.ext?with=query', 'http://example.com/index.ext?query', 'http://example.com/root-relative-link.ext?with=query' ),
     198                       
     199                        // Location provided relative to current file/directory
     200                        array( 'relative-file.ext', 'http://example.com/', 'http://example.com/relative-file.ext' ),
     201                        array( 'relative-file.ext', 'http://example.com/filename', 'http://example.com/relative-file.ext' ),
     202                        array( 'relative-file.ext', 'http://example.com/directory/', 'http://example.com/directory/relative-file.ext' ),
     203                       
     204                        // Location provided relative to current file/directory but in a parent directory
     205                        array( '../file-in-parent.ext', 'http://example.com', 'http://example.com/file-in-parent.ext' ),
     206                        array( '../file-in-parent.ext', 'http://example.com/filename', 'http://example.com/file-in-parent.ext' ),
     207                        array( '../file-in-parent.ext', 'http://example.com/directory/', 'http://example.com/file-in-parent.ext' ),
     208                        array( '../file-in-parent.ext', 'http://example.com/directory/filename', 'http://example.com/file-in-parent.ext' ),
     209
     210                        // Location provided in muliple levels higher, including impossible to reach (../ below DOCROOT)
     211                        array( '../../file-in-grand-parent.ext', 'http://example.com', 'http://example.com/file-in-grand-parent.ext' ),
     212                        array( '../../file-in-grand-parent.ext', 'http://example.com/filename', 'http://example.com/file-in-grand-parent.ext' ),
     213                        array( '../../file-in-grand-parent.ext', 'http://example.com/directory/', 'http://example.com/file-in-grand-parent.ext' ),
     214                        array( '../../file-in-grand-parent.ext', 'http://example.com/directory/filename/', 'http://example.com/file-in-grand-parent.ext' ),
     215                        array( '../../file-in-grand-parent.ext', 'http://example.com/directory1/directory2/filename', 'http://example.com/file-in-grand-parent.ext' ),
     216                       
     217                        // Query strings should attach, or replace existing query string.
     218                        array( '?query=string', 'http://example.com', 'http://example.com/?query=string' ),
     219                        array( '?query=string', 'http://example.com/file.ext', 'http://example.com/file.ext?query=string' ),
     220                        array( '?query=string', 'http://example.com/file.ext?existing=query-string', 'http://example.com/file.ext?query=string' ),
     221                        array( 'otherfile.ext?query=string', 'http://example.com/file.ext?existing=query-string', 'http://example.com/otherfile.ext?query=string' ),
     222                       
     223                        // A file with a leading dot
     224                        array( '.ext', 'http://example.com/', 'http://example.com/.ext' )
     225                );
     226        }
    168227}
     228 No newline at end of file