WordPress.org

Make WordPress Core

Ticket #20560: test_includes_rewrite.diff

File test_includes_rewrite.diff, 2.6 KB (added by gradyetc, 6 years ago)

Added test to expose bug for non-multisite installation

  • tests/rewrite.php

     
     1<?php
     2
     3/**
     4 * A set of unit tests for functions in wp-includes/rewrite.php
     5 *
     6 * @group rewrite
     7 */
     8class Tests_Rewrite extends WP_UnitTestCase {
     9
     10        function setUp() {
     11                parent::setUp();
     12
     13                // Need rewrite rules in place to use url_to_postid
     14                global $wp_rewrite;
     15                update_option( 'permalink_structure', '/%year%/%monthnum%/%day%/%postname%/' );
     16                create_initial_taxonomies();
     17                $GLOBALS['wp_rewrite']->init();
     18                flush_rewrite_rules();
     19        }
     20
     21        function tearDown() {
     22                parent::tearDown();
     23                $GLOBALS['wp_rewrite']->init();
     24        }
     25
     26        function test_url_to_postid() {
     27
     28                $id = $this->factory->post->create();
     29                $this->assertEquals( $id, url_to_postid( get_permalink( $id ) ) );
     30
     31        }
     32
     33        function test_url_to_postid_hierarchical() {
     34
     35                $parent_id = $this->factory->post->create( array( 'post_title' => 'Parent', 'post_type' => 'page' ) );
     36                $child_id = $this->factory->post->create( array( 'post_title' => 'Child', 'post_type' => 'page', 'post_parent' => $parent_id ) );
     37
     38                $this->assertEquals( $parent_id, url_to_postid( get_permalink( $parent_id ) ) );
     39                $this->assertEquals( $child_id, url_to_postid( get_permalink( $child_id ) ) );
     40
     41        }
     42
     43        /**
     44         * Reveals bug introduced in WP 3.0
     45         *
     46         * @ticket 20560
     47         */
     48        function test_url_to_postid_home_url_collision() {
     49
     50                $this->knownWPBug(20560);
     51
     52                update_option( 'home', home_url('/example') );
     53
     54                $this->factory->post->create( array( 'post_title' => 'Collision', 'post_type' => 'page' ) );
     55
     56                // This url should NOT return a post ID
     57                $badurl = site_url('/example-collision');
     58                $this->assertEquals( 0, url_to_postid( $badurl ) );
     59
     60        }
     61
     62        /**
     63         * Reveals bug introduced in WP 3.0
     64         *
     65         * Run tests using multisite `phpunit -c multisite`
     66         *
     67         * @ticket 20560
     68         */
     69        function test_url_to_postid_ms_home_url_collision() {
     70
     71                if( ! is_multisite() ) {
     72                        $this->markTestSkipped('test_url_to_postid_ms_home_url_collision requires multisite');
     73                        return false;
     74                }
     75
     76                $this->knownWPBug(20560);
     77
     78                $blog_id = $this->factory->blog->create( array( 'path' => '/example' ) );
     79                switch_to_blog( $blog_id );
     80
     81                $this->factory->post->create( array( 'post_title' => 'Collision ', 'post_type' => 'page' ) );
     82
     83                // This url should NOT return a post ID
     84                $badurl = network_home_url('/example-collision');
     85                $this->assertEquals( 0, url_to_postid( $badurl ) );
     86
     87                restore_current_blog();
     88
     89        }
     90
     91}
     92
     93?>
     94 No newline at end of file