Make WordPress Core


Ignore:
Timestamp:
05/26/2025 02:34:12 PM (8 months ago)
Author:
johnbillion
Message:

Build/Test Tools: Increase shared user fixtures following switch to bcrypt hashing.

User creation is somewhat more expensive since switching the default password hashing algorithm to bcrypt in 6.8. This speeds up the tests by making more use of shared user fixtures, thus reducing the number of users that are created during tests.

Props peterwilsoncc.

See #63026

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/meta.php

    r60251 r60253  
    1010     * @var \WP_User
    1111     */
    12     private $author;
    13 
    14     private $meta_id;
    15     private $delete_meta_id;
    16 
    17     public function set_up() {
    18         parent::set_up();
    19         $this->author         = new WP_User( self::factory()->user->create( array( 'role' => 'author' ) ) );
    20         $this->meta_id        = add_metadata( 'user', $this->author->ID, 'meta_key', 'meta_value' );
    21         $this->delete_meta_id = add_metadata( 'user', $this->author->ID, 'delete_meta_key', 'delete_meta_value' );
     12    private static $author;
     13
     14    private static $meta_id;
     15    private static $delete_meta_id;
     16
     17    public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
     18        self::$author         = new WP_User( $factory->user->create( array( 'role' => 'author' ) ) );
     19        self::$meta_id        = add_metadata( 'user', self::$author->ID, 'meta_key', 'meta_value' );
     20        self::$delete_meta_id = add_metadata( 'user', self::$author->ID, 'delete_meta_key', 'delete_meta_value' );
    2221    }
    2322
     
    3837        // Let's try and delete a non-existing ID, non existing meta.
    3938        $this->assertFalse( delete_metadata_by_mid( 'user', 0 ) );
    40         $this->assertFalse( delete_metadata_by_mid( 'non_existing_meta', $this->delete_meta_id ) );
     39        $this->assertFalse( delete_metadata_by_mid( 'non_existing_meta', self::$delete_meta_id ) );
    4140
    4241        // Now let's delete the real meta data.
    43         $this->assertTrue( delete_metadata_by_mid( 'user', $this->delete_meta_id ) );
     42        $this->assertTrue( delete_metadata_by_mid( 'user', self::$delete_meta_id ) );
    4443
    4544        // And make sure it's been deleted.
    46         $this->assertFalse( get_metadata_by_mid( 'user', $this->delete_meta_id ) );
     45        $this->assertFalse( get_metadata_by_mid( 'user', self::$delete_meta_id ) );
    4746
    4847        // Make sure the caches are cleared.
    49         $this->assertFalse( (bool) get_user_meta( $this->author->ID, 'delete_meta_key' ) );
     48        $this->assertFalse( (bool) get_user_meta( self::$author->ID, 'delete_meta_key' ) );
    5049    }
    5150
    5251    public function test_update_metadata_by_mid() {
    5352        // Setup.
    54         $meta = get_metadata_by_mid( 'user', $this->meta_id );
     53        $meta = get_metadata_by_mid( 'user', self::$meta_id );
    5554
    5655        // Update the meta value.
    57         $this->assertTrue( update_metadata_by_mid( 'user', $this->meta_id, 'meta_new_value' ) );
    58         $meta = get_metadata_by_mid( 'user', $this->meta_id );
     56        $this->assertTrue( update_metadata_by_mid( 'user', self::$meta_id, 'meta_new_value' ) );
     57        $meta = get_metadata_by_mid( 'user', self::$meta_id );
    5958        $this->assertSame( 'meta_new_value', $meta->meta_value );
    6059
    6160        // Update the meta value.
    62         $this->assertTrue( update_metadata_by_mid( 'user', $this->meta_id, 'meta_new_value', 'meta_new_key' ) );
    63         $meta = get_metadata_by_mid( 'user', $this->meta_id );
     61        $this->assertTrue( update_metadata_by_mid( 'user', self::$meta_id, 'meta_new_value', 'meta_new_key' ) );
     62        $meta = get_metadata_by_mid( 'user', self::$meta_id );
    6463        $this->assertSame( 'meta_new_key', $meta->meta_key );
    6564
    6665        // Update the key and value.
    67         $this->assertTrue( update_metadata_by_mid( 'user', $this->meta_id, 'meta_value', 'meta_key' ) );
    68         $meta = get_metadata_by_mid( 'user', $this->meta_id );
     66        $this->assertTrue( update_metadata_by_mid( 'user', self::$meta_id, 'meta_value', 'meta_key' ) );
     67        $meta = get_metadata_by_mid( 'user', self::$meta_id );
    6968        $this->assertSame( 'meta_key', $meta->meta_key );
    7069        $this->assertSame( 'meta_value', $meta->meta_value );
    7170
    7271        // Update the value that has to be serialized.
    73         $this->assertTrue( update_metadata_by_mid( 'user', $this->meta_id, array( 'first', 'second' ) ) );
    74         $meta = get_metadata_by_mid( 'user', $this->meta_id );
     72        $this->assertTrue( update_metadata_by_mid( 'user', self::$meta_id, array( 'first', 'second' ) ) );
     73        $meta = get_metadata_by_mid( 'user', self::$meta_id );
    7574        $this->assertSame( array( 'first', 'second' ), $meta->meta_value );
    7675
    7776        // Let's try some invalid meta data.
    7877        $this->assertFalse( update_metadata_by_mid( 'user', 0, 'meta_value' ) );
    79         $this->assertFalse( update_metadata_by_mid( 'user', $this->meta_id, 'meta_value', array( 'invalid', 'key' ) ) );
     78        $this->assertFalse( update_metadata_by_mid( 'user', self::$meta_id, 'meta_value', array( 'invalid', 'key' ) ) );
    8079
    8180        // Let's see if caches get cleared after updates.
    82         $meta  = get_metadata_by_mid( 'user', $this->meta_id );
     81        $meta  = get_metadata_by_mid( 'user', self::$meta_id );
    8382        $first = get_user_meta( $meta->user_id, $meta->meta_key );
    84         $this->assertTrue( update_metadata_by_mid( 'user', $this->meta_id, 'other_meta_value' ) );
     83        $this->assertTrue( update_metadata_by_mid( 'user', self::$meta_id, 'other_meta_value' ) );
    8584        $second = get_user_meta( $meta->user_id, $meta->meta_key );
    8685        $this->assertFalse( $first === $second );
     
    116115
    117116    public function test_metadata_exists() {
    118         $this->assertFalse( metadata_exists( 'user', $this->author->ID, 'foobarbaz' ) );
    119         $this->assertTrue( metadata_exists( 'user', $this->author->ID, 'meta_key' ) );
     117        $this->assertFalse( metadata_exists( 'user', self::$author->ID, 'foobarbaz' ) );
     118        $this->assertTrue( metadata_exists( 'user', self::$author->ID, 'meta_key' ) );
    120119        $this->assertFalse( metadata_exists( 'user', 1234567890, 'foobarbaz' ) );
    121120        $this->assertFalse( metadata_exists( 'user', 1234567890, 'meta_key' ) );
     
    128127        // Let's see if it returns the correct value when adding a filter.
    129128        add_filter( 'get_user_metadata', '__return_zero' );
    130         $this->assertFalse( metadata_exists( 'user', $this->author->ID, 'meta_key' ) ); // Existing meta key.
     129        $this->assertFalse( metadata_exists( 'user', self::$author->ID, 'meta_key' ) ); // Existing meta key.
    131130        $this->assertFalse( metadata_exists( 'user', 1234567890, 'meta_key' ) );
    132131        remove_filter( 'get_user_metadata', '__return_zero' );
     
    151150
    152151        // User found is not locally defined author (it's the admin).
    153         $this->assertNotEquals( $this->author->user_login, $u[0]->user_login );
     152        $this->assertNotEquals( self::$author->user_login, $u[0]->user_login );
    154153
    155154        // Test EXISTS and NOT EXISTS together, no users should be found.
     
    186185        );
    187186
    188         delete_metadata( 'user', $this->author->ID, 'meta_key' );
     187        delete_metadata( 'user', self::$author->ID, 'meta_key' );
    189188
    190189        $this->assertCount(
     
    209208        $value2    = 'Test\\\\doubleslash';
    210209        $expected2 = 'Test\\doubleslash';
    211         $this->assertFalse( metadata_exists( 'user', $this->author->ID, $key ) );
    212         $this->assertFalse( delete_metadata( 'user', $this->author->ID, $key ) );
    213         $this->assertSame( '', get_metadata( 'user', $this->author->ID, $key, true ) );
    214         $this->assertIsInt( add_metadata( 'user', $this->author->ID, $key, $value ) );
    215         $this->assertSame( $expected, get_metadata( 'user', $this->author->ID, $key, true ) );
    216         $this->assertTrue( delete_metadata( 'user', $this->author->ID, $key ) );
    217         $this->assertSame( '', get_metadata( 'user', $this->author->ID, $key, true ) );
    218         $this->assertIsInt( update_metadata( 'user', $this->author->ID, $key, $value ) );
    219         $this->assertSame( $expected, get_metadata( 'user', $this->author->ID, $key, true ) );
    220         $this->assertTrue( update_metadata( 'user', $this->author->ID, $key, 'blah' ) );
    221         $this->assertSame( 'blah', get_metadata( 'user', $this->author->ID, $key, true ) );
    222         $this->assertTrue( delete_metadata( 'user', $this->author->ID, $key ) );
    223         $this->assertSame( '', get_metadata( 'user', $this->author->ID, $key, true ) );
    224         $this->assertFalse( metadata_exists( 'user', $this->author->ID, $key ) );
     210        $this->assertFalse( metadata_exists( 'user', self::$author->ID, $key ) );
     211        $this->assertFalse( delete_metadata( 'user', self::$author->ID, $key ) );
     212        $this->assertSame( '', get_metadata( 'user', self::$author->ID, $key, true ) );
     213        $this->assertIsInt( add_metadata( 'user', self::$author->ID, $key, $value ) );
     214        $this->assertSame( $expected, get_metadata( 'user', self::$author->ID, $key, true ) );
     215        $this->assertTrue( delete_metadata( 'user', self::$author->ID, $key ) );
     216        $this->assertSame( '', get_metadata( 'user', self::$author->ID, $key, true ) );
     217        $this->assertIsInt( update_metadata( 'user', self::$author->ID, $key, $value ) );
     218        $this->assertSame( $expected, get_metadata( 'user', self::$author->ID, $key, true ) );
     219        $this->assertTrue( update_metadata( 'user', self::$author->ID, $key, 'blah' ) );
     220        $this->assertSame( 'blah', get_metadata( 'user', self::$author->ID, $key, true ) );
     221        $this->assertTrue( delete_metadata( 'user', self::$author->ID, $key ) );
     222        $this->assertSame( '', get_metadata( 'user', self::$author->ID, $key, true ) );
     223        $this->assertFalse( metadata_exists( 'user', self::$author->ID, $key ) );
    225224
    226225        // Test overslashing.
    227         $this->assertIsInt( add_metadata( 'user', $this->author->ID, $key, $value2 ) );
    228         $this->assertSame( $expected2, get_metadata( 'user', $this->author->ID, $key, true ) );
    229         $this->assertTrue( delete_metadata( 'user', $this->author->ID, $key ) );
    230         $this->assertSame( '', get_metadata( 'user', $this->author->ID, $key, true ) );
    231         $this->assertIsInt( update_metadata( 'user', $this->author->ID, $key, $value2 ) );
    232         $this->assertSame( $expected2, get_metadata( 'user', $this->author->ID, $key, true ) );
     226        $this->assertIsInt( add_metadata( 'user', self::$author->ID, $key, $value2 ) );
     227        $this->assertSame( $expected2, get_metadata( 'user', self::$author->ID, $key, true ) );
     228        $this->assertTrue( delete_metadata( 'user', self::$author->ID, $key ) );
     229        $this->assertSame( '', get_metadata( 'user', self::$author->ID, $key, true ) );
     230        $this->assertIsInt( update_metadata( 'user', self::$author->ID, $key, $value2 ) );
     231        $this->assertSame( $expected2, get_metadata( 'user', self::$author->ID, $key, true ) );
    233232    }
    234233
     
    347346     */
    348347    public function test_negative_meta_id() {
    349         $negative_mid = $this->meta_id * -1;
     348        $negative_mid = self::$meta_id * -1;
    350349
    351350        $this->assertLessThan( 0, $negative_mid );
     
    359358     */
    360359    public function test_floating_meta_id() {
    361         $floating_mid = $this->meta_id + 0.1337;
     360        $floating_mid = self::$meta_id + 0.1337;
    362361
    363362        $this->assertTrue( floor( $floating_mid ) !== $floating_mid );
     
    371370     */
    372371    public function test_string_point_zero_meta_id() {
    373         $meta_id = add_metadata( 'user', $this->author->ID, 'meta_key', 'meta_value_2' );
     372        $meta_id = add_metadata( 'user', self::$author->ID, 'meta_key', 'meta_value_2' );
    374373
    375374        $string_mid = "{$meta_id}.0";
     
    388387        $data  = array( 1, 2 );
    389388        $value = serialize( $data );
    390         add_metadata( 'user', $this->author->ID, 'foo', $data );
    391         $found = get_metadata( 'user', $this->author->ID );
     389        add_metadata( 'user', self::$author->ID, 'foo', $data );
     390        $found = get_metadata( 'user', self::$author->ID );
    392391
    393392        $this->assertSame( array( $value ), $found['foo'] );
     
    401400        $data->foo = 'bar';
    402401        $value     = serialize( $data );
    403         add_metadata( 'user', $this->author->ID, 'foo', $data );
    404         $found = get_metadata( 'user', $this->author->ID );
     402        add_metadata( 'user', self::$author->ID, 'foo', $data );
     403        $found = get_metadata( 'user', self::$author->ID );
    405404
    406405        $this->assertSame( array( $value ), $found['foo'] );
     
    416415        );
    417416        $value = serialize( $data );
    418         add_metadata( 'user', $this->author->ID, 'foo', $data );
    419         $found = get_metadata( 'user', $this->author->ID );
     417        add_metadata( 'user', self::$author->ID, 'foo', $data );
     418        $found = get_metadata( 'user', self::$author->ID );
    420419
    421420        $this->assertSame( array( $value ), $found['foo'] );
Note: See TracChangeset for help on using the changeset viewer.