WordPress.org

Make WordPress Core

Ticket #20560: test_includes_rewrite.diff

File test_includes_rewrite.diff, 2.6 KB (added by gradyetc, 3 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