Make WordPress Core

Ticket #15928: 15928.4.patch

File 15928.4.patch, 2.3 KB (added by joemcgill, 9 years ago)

Patch and adds tests.

  • src/wp-includes/post.php

     
    49414941                }
    49424942        }
    49434943
     4944
    49444945        /*
    49454946         * If any of the above options failed, Fallback on the GUID as used pre-2.7,
    49464947         * not recommended to rely upon this.
     
    49504951        }
    49514952
    49524953        /**
     4954         * URLs should use HTTPS scheme if using SSL to avoid insecure content errors. Issue #15928.
     4955         */
     4956        if ( is_ssl() || ( is_admin() && force_ssl_admin() ) ) {
     4957                $url = set_url_scheme( $url, 'https');
     4958        }
     4959
     4960        return $url;
     4961
     4962        /**
    49534963         * Filter the attachment URL.
    49544964         *
    49554965         * @since 2.1.0
  • tests/phpunit/tests/post/attachments.php

     
    278278                $this->assertEquals( $attachment->post_parent, $post_id );
    279279        }
    280280
     281        /**
     282         * @ticket 15928
     283         */
     284        function test_wp_get_attachment_url_ssl() {
     285                $filename = ( DIR_TESTDATA . '/images/test-image.jpg' );
     286                $contents = file_get_contents( $filename );
     287
     288                $upload = wp_upload_bits( basename( $filename ), null, $contents );
     289                $this->assertTrue( empty( $upload['error'] ) );
     290
     291                // Set attachment ID
     292                $attachment_id = $this->_make_attachment( $upload );
     293
     294                // Remember initial settings
     295                $force_ssl_admin = force_ssl_admin();
     296
     297                // Force SSL in the admin
     298                force_ssl_admin( true );
     299
     300                // Should return scheme HTTPS in admin when SSL forced
     301                set_current_screen( 'dashboard' );
     302                $url = wp_get_attachment_url( $attachment_id );
     303                $this->assertEquals( $url, set_url_scheme( $url, 'https' ) );
     304
     305                // Test non-admin pages
     306                set_current_screen( 'front' );
     307
     308                // Return scheme HTTP from front when not using SSL
     309                $_SERVER['HTTPS'] = 'off';
     310                $attachment_url = wp_get_attachment_url( $attachment_id );
     311                $this->assertEquals( $attachment_url, set_url_scheme( $attachment_url, 'http' ) );
     312
     313                // Return scheme HTTPS from front when using SSL
     314                $_SERVER['HTTPS'] = 'on';
     315                $attachment_url = wp_get_attachment_url( $attachment_id );
     316                $this->assertEquals( $attachment_url, set_url_scheme( $attachment_url, 'https' ) );
     317
     318
     319                // cleanup
     320                force_ssl_admin( $force_ssl_admin );
     321        }
     322
    281323}