Changeset 42343 for trunk/tests/phpunit/tests/user/multisite.php
- Timestamp:
- 11/30/2017 11:09:33 PM (8 years ago)
- File:
-
- 1 edited
-
trunk/tests/phpunit/tests/user/multisite.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/user/multisite.php
r41661 r42343 3 3 if ( is_multisite() ) : 4 4 5 /** 6 * Tests specific to users in multisite. 7 * 8 * @group user 9 * @group ms-user 10 * @group multisite 11 */ 12 class Tests_Multisite_User extends WP_UnitTestCase { 13 protected $suppress = false; 14 15 function setUp() { 16 global $wpdb; 17 parent::setUp(); 18 $this->suppress = $wpdb->suppress_errors(); 5 /** 6 * Tests specific to users in multisite. 7 * 8 * @group user 9 * @group ms-user 10 * @group multisite 11 */ 12 class Tests_Multisite_User extends WP_UnitTestCase { 13 protected $suppress = false; 14 15 function setUp() { 16 global $wpdb; 17 parent::setUp(); 18 $this->suppress = $wpdb->suppress_errors(); 19 } 20 21 function tearDown() { 22 global $wpdb; 23 $wpdb->suppress_errors( $this->suppress ); 24 parent::tearDown(); 25 } 26 27 function test_remove_user_from_blog() { 28 $user1 = self::factory()->user->create_and_get(); 29 $user2 = self::factory()->user->create_and_get(); 30 31 $post_id = self::factory()->post->create( array( 'post_author' => $user1->ID ) ); 32 33 remove_user_from_blog( $user1->ID, 1, $user2->ID ); 34 35 $post = get_post( $post_id ); 36 37 $this->assertNotEquals( $user1->ID, $post->post_author ); 38 $this->assertEquals( $user2->ID, $post->post_author ); 39 } 40 41 /** 42 * Test the returned data from get_blogs_of_user() 43 */ 44 function test_get_blogs_of_user() { 45 $user1_id = self::factory()->user->create( array( 'role' => 'administrator' ) ); 46 47 // Maintain a list of 6 total sites and include the primary network site. 48 $blog_ids = self::factory()->blog->create_many( 5, array( 'user_id' => $user1_id ) ); 49 $blog_ids = array_merge( array( 1 ), $blog_ids ); 50 51 // All sites are new and not marked as spam, archived, or deleted. 52 $blog_ids_of_user = array_keys( get_blogs_of_user( $user1_id ) ); 53 54 // User should be a member of the created sites and the network's initial site. 55 $this->assertEquals( $blog_ids, $blog_ids_of_user ); 56 57 $this->assertTrue( remove_user_from_blog( $user1_id, $blog_ids[0] ) ); 58 $this->assertTrue( remove_user_from_blog( $user1_id, $blog_ids[2] ) ); 59 $this->assertTrue( remove_user_from_blog( $user1_id, $blog_ids[4] ) ); 60 61 unset( $blog_ids[0] ); 62 unset( $blog_ids[2] ); 63 unset( $blog_ids[4] ); 64 sort( $blog_ids ); 65 66 $blogs_of_user = get_blogs_of_user( $user1_id, false ); 67 68 // The user should still be a member of all remaining sites. 69 $blog_ids_of_user = array_keys( $blogs_of_user ); 70 $this->assertEquals( $blog_ids, $blog_ids_of_user ); 71 72 // Each site retrieved should match the expected structure. 73 foreach ( $blogs_of_user as $blog_id => $blog ) { 74 $this->assertEquals( $blog_id, $blog->userblog_id ); 75 $this->assertTrue( isset( $blog->userblog_id ) ); 76 $this->assertTrue( isset( $blog->blogname ) ); 77 $this->assertTrue( isset( $blog->domain ) ); 78 $this->assertTrue( isset( $blog->path ) ); 79 $this->assertTrue( isset( $blog->site_id ) ); 80 $this->assertTrue( isset( $blog->siteurl ) ); 81 $this->assertTrue( isset( $blog->archived ) ); 82 $this->assertTrue( isset( $blog->spam ) ); 83 $this->assertTrue( isset( $blog->deleted ) ); 84 } 85 86 // Mark each remaining site as spam, archived, and deleted. 87 update_blog_details( $blog_ids[0], array( 'spam' => 1 ) ); 88 update_blog_details( $blog_ids[1], array( 'archived' => 1 ) ); 89 update_blog_details( $blog_ids[2], array( 'deleted' => 1 ) ); 90 91 // Passing true as the second parameter should retrieve ALL sites, even if marked. 92 $blogs_of_user = get_blogs_of_user( $user1_id, true ); 93 $blog_ids_of_user = array_keys( $blogs_of_user ); 94 $this->assertEquals( $blog_ids, $blog_ids_of_user ); 95 96 // Check if sites are flagged as expected. 97 $this->assertEquals( 1, $blogs_of_user[ $blog_ids[0] ]->spam ); 98 $this->assertEquals( 1, $blogs_of_user[ $blog_ids[1] ]->archived ); 99 $this->assertEquals( 1, $blogs_of_user[ $blog_ids[2] ]->deleted ); 100 101 unset( $blog_ids[0] ); 102 unset( $blog_ids[1] ); 103 unset( $blog_ids[2] ); 104 sort( $blog_ids ); 105 106 // Passing false (the default) as the second parameter should retrieve only good sites. 107 $blog_ids_of_user = array_keys( get_blogs_of_user( $user1_id, false ) ); 108 $this->assertEquals( $blog_ids, $blog_ids_of_user ); 109 } 110 111 /** 112 * @expectedDeprecated is_blog_user 113 */ 114 function test_is_blog_user() { 115 global $wpdb; 116 117 $user1_id = self::factory()->user->create( array( 'role' => 'administrator' ) ); 118 119 $old_current = get_current_user_id(); 120 wp_set_current_user( $user1_id ); 121 122 $this->assertTrue( is_blog_user() ); 123 $this->assertTrue( is_blog_user( get_current_blog_id() ) ); 124 125 $blog_ids = array(); 126 127 $blog_ids = self::factory()->blog->create_many( 1 ); 128 foreach ( $blog_ids as $blog_id ) { 129 $this->assertInternalType( 'int', $blog_id ); 130 $this->assertTrue( is_blog_user( $blog_id ) ); 131 $this->assertTrue( remove_user_from_blog( $user1_id, $blog_id ) ); 132 $this->assertFalse( is_blog_user( $blog_id ) ); 133 } 134 135 wp_set_current_user( $old_current ); 136 } 137 138 function test_is_user_member_of_blog() { 139 global $wpdb; 140 141 $user1_id = self::factory()->user->create( array( 'role' => 'administrator' ) ); 142 $user2_id = self::factory()->user->create( array( 'role' => 'administrator' ) ); 143 144 $old_current = get_current_user_id(); 145 146 $this->assertSame( 0, $old_current ); 147 148 // test for "get current user" when not logged in 149 $this->assertFalse( is_user_member_of_blog() ); 150 151 wp_set_current_user( $user1_id ); 152 $site_id = get_current_blog_id(); 153 154 $this->assertTrue( is_user_member_of_blog() ); 155 $this->assertTrue( is_user_member_of_blog( 0, 0 ) ); 156 $this->assertTrue( is_user_member_of_blog( 0, $site_id ) ); 157 $this->assertTrue( is_user_member_of_blog( $user1_id ) ); 158 $this->assertTrue( is_user_member_of_blog( $user1_id, $site_id ) ); 159 160 $blog_ids = self::factory()->blog->create_many( 1 ); 161 foreach ( $blog_ids as $blog_id ) { 162 $this->assertInternalType( 'int', $blog_id ); 163 164 // Current user gets added to new blogs 165 $this->assertTrue( is_user_member_of_blog( $user1_id, $blog_id ) ); 166 // Other users should not 167 $this->assertFalse( is_user_member_of_blog( $user2_id, $blog_id ) ); 168 169 switch_to_blog( $blog_id ); 170 171 $this->assertTrue( is_user_member_of_blog( $user1_id ) ); 172 $this->assertFalse( is_user_member_of_blog( $user2_id ) ); 173 174 // Remove user 1 from blog 175 $this->assertTrue( remove_user_from_blog( $user1_id, $blog_id ) ); 176 177 // Add user 2 to blog 178 $this->assertTrue( add_user_to_blog( $blog_id, $user2_id, 'subscriber' ) ); 179 180 $this->assertFalse( is_user_member_of_blog( $user1_id ) ); 181 $this->assertTrue( is_user_member_of_blog( $user2_id ) ); 182 183 restore_current_blog(); 184 185 $this->assertFalse( is_user_member_of_blog( $user1_id, $blog_id ) ); 186 $this->assertTrue( is_user_member_of_blog( $user2_id, $blog_id ) ); 187 } 188 189 wpmu_delete_user( $user1_id ); 190 $user = new WP_User( $user1_id ); 191 $this->assertFalse( $user->exists() ); 192 $this->assertFalse( is_user_member_of_blog( $user1_id ) ); 193 194 wp_set_current_user( $old_current ); 195 } 196 197 /** 198 * @ticket 23192 199 */ 200 function test_is_user_spammy() { 201 $user_id = self::factory()->user->create( 202 array( 203 'role' => 'author', 204 'user_login' => 'testuser1', 205 ) 206 ); 207 208 $spam_username = (string) $user_id; 209 $spam_user_id = self::factory()->user->create( 210 array( 211 'role' => 'author', 212 'user_login' => $spam_username, 213 ) 214 ); 215 update_user_status( $spam_user_id, 'spam', '1' ); 216 217 $this->assertTrue( is_user_spammy( $spam_username ) ); 218 $this->assertFalse( is_user_spammy( 'testuser1' ) ); 219 } 220 221 /** 222 * @ticket 20601 223 */ 224 function test_user_member_of_blog() { 225 global $wp_rewrite; 226 227 self::factory()->blog->create(); 228 $user_id = self::factory()->user->create(); 229 self::factory()->blog->create( array( 'user_id' => $user_id ) ); 230 231 $blogs = get_blogs_of_user( $user_id ); 232 $this->assertCount( 2, $blogs ); 233 $first = reset( $blogs )->userblog_id; 234 remove_user_from_blog( $user_id, $first ); 235 236 $blogs = get_blogs_of_user( $user_id ); 237 $second = reset( $blogs )->userblog_id; 238 $this->assertCount( 1, $blogs ); 239 240 switch_to_blog( $first ); 241 $wp_rewrite->init(); 242 243 $this->go_to( get_author_posts_url( $user_id ) ); 244 $this->assertQueryTrue( 'is_404' ); 245 246 switch_to_blog( $second ); 247 $wp_rewrite->init(); 248 249 $this->go_to( get_author_posts_url( $user_id ) ); 250 $this->assertQueryTrue( 'is_author', 'is_archive' ); 251 252 add_user_to_blog( $first, $user_id, 'administrator' ); 253 $blogs = get_blogs_of_user( $user_id ); 254 $this->assertCount( 2, $blogs ); 255 256 switch_to_blog( $first ); 257 $wp_rewrite->init(); 258 259 $this->go_to( get_author_posts_url( $user_id ) ); 260 $this->assertQueryTrue( 'is_author', 'is_archive' ); 261 } 262 263 function test_revoked_super_admin_can_be_deleted() { 264 if ( isset( $GLOBALS['super_admins'] ) ) { 265 $old_global = $GLOBALS['super_admins']; 266 unset( $GLOBALS['super_admins'] ); 267 } 268 269 $user_id = self::factory()->user->create(); 270 grant_super_admin( $user_id ); 271 revoke_super_admin( $user_id ); 272 273 $this->assertTrue( wpmu_delete_user( $user_id ) ); 274 275 if ( isset( $old_global ) ) { 276 $GLOBALS['super_admins'] = $old_global; 277 } 278 } 279 280 function test_revoked_super_admin_is_deleted() { 281 if ( isset( $GLOBALS['super_admins'] ) ) { 282 $old_global = $GLOBALS['super_admins']; 283 unset( $GLOBALS['super_admins'] ); 284 } 285 286 $user_id = self::factory()->user->create(); 287 grant_super_admin( $user_id ); 288 revoke_super_admin( $user_id ); 289 wpmu_delete_user( $user_id ); 290 $user = new WP_User( $user_id ); 291 292 $this->assertFalse( $user->exists(), 'WP_User->exists' ); 293 294 if ( isset( $old_global ) ) { 295 $GLOBALS['super_admins'] = $old_global; 296 } 297 } 298 299 function test_super_admin_cannot_be_deleted() { 300 if ( isset( $GLOBALS['super_admins'] ) ) { 301 $old_global = $GLOBALS['super_admins']; 302 unset( $GLOBALS['super_admins'] ); 303 } 304 305 $user_id = self::factory()->user->create(); 306 grant_super_admin( $user_id ); 307 308 $this->assertFalse( wpmu_delete_user( $user_id ) ); 309 310 if ( isset( $old_global ) ) { 311 $GLOBALS['super_admins'] = $old_global; 312 } 313 } 314 315 /** 316 * @ticket 27205 317 */ 318 function test_granting_super_admins() { 319 if ( isset( $GLOBALS['super_admins'] ) ) { 320 $old_global = $GLOBALS['super_admins']; 321 unset( $GLOBALS['super_admins'] ); 322 } 323 324 $user_id = self::factory()->user->create(); 325 326 $this->assertFalse( is_super_admin( $user_id ) ); 327 $this->assertFalse( revoke_super_admin( $user_id ) ); 328 $this->assertTrue( grant_super_admin( $user_id ) ); 329 $this->assertTrue( is_super_admin( $user_id ) ); 330 $this->assertFalse( grant_super_admin( $user_id ) ); 331 $this->assertTrue( revoke_super_admin( $user_id ) ); 332 333 // None of these operations should set the $super_admins global. 334 $this->assertFalse( isset( $GLOBALS['super_admins'] ) ); 335 336 // Try with two users. 337 $second_user = self::factory()->user->create(); 338 $this->assertTrue( grant_super_admin( $user_id ) ); 339 $this->assertTrue( grant_super_admin( $second_user ) ); 340 $this->assertTrue( is_super_admin( $second_user ) ); 341 $this->assertTrue( is_super_admin( $user_id ) ); 342 $this->assertTrue( revoke_super_admin( $user_id ) ); 343 $this->assertTrue( revoke_super_admin( $second_user ) ); 344 345 if ( isset( $old_global ) ) { 346 $GLOBALS['super_admins'] = $old_global; 347 } 348 } 349 350 public function test_numeric_string_user_id() { 351 $u = self::factory()->user->create(); 352 353 $u_string = (string) $u; 354 $this->assertTrue( wpmu_delete_user( $u_string ) ); 355 $this->assertFalse( get_user_by( 'id', $u ) ); 356 } 357 358 /** 359 * @ticket 33800 360 */ 361 public function test_should_return_false_for_non_numeric_string_user_id() { 362 $this->assertFalse( wpmu_delete_user( 'abcde' ) ); 363 } 364 365 /** 366 * @ticket 33800 367 */ 368 public function test_should_return_false_for_object_user_id() { 369 $u_obj = self::factory()->user->create_and_get(); 370 $this->assertFalse( wpmu_delete_user( $u_obj ) ); 371 $this->assertEquals( $u_obj->ID, username_exists( $u_obj->user_login ) ); 372 } 373 374 /** 375 * @ticket 38356 376 */ 377 public function test_add_user_to_blog_subscriber() { 378 $site_id = self::factory()->blog->create(); 379 $user_id = self::factory()->user->create(); 380 381 add_user_to_blog( $site_id, $user_id, 'subscriber' ); 382 383 switch_to_blog( $site_id ); 384 $user = get_user_by( 'id', $user_id ); 385 restore_current_blog(); 386 387 wpmu_delete_blog( $site_id ); 388 wpmu_delete_user( $user_id ); 389 390 $this->assertContains( 'subscriber', $user->roles ); 391 } 392 393 /** 394 * @ticket 38356 395 */ 396 public function test_add_user_to_blog_invalid_user() { 397 $site_id = self::factory()->blog->create(); 398 399 $result = add_user_to_blog( 73622, $site_id, 'subscriber' ); 400 wpmu_delete_blog( $site_id ); 401 402 $this->assertWPError( $result ); 403 } 404 405 /** 406 * @ticket 41101 407 */ 408 public function test_should_fail_can_add_user_to_blog_filter() { 409 $site_id = self::factory()->blog->create(); 410 $user_id = self::factory()->user->create(); 411 412 add_filter( 'can_add_user_to_blog', '__return_false' ); 413 $result = add_user_to_blog( $site_id, $user_id, 'subscriber' ); 414 415 $this->assertWPError( $result ); 416 } 417 418 /** 419 * @ticket 41101 420 */ 421 public function test_should_succeed_can_add_user_to_blog_filter() { 422 $site_id = self::factory()->blog->create(); 423 $user_id = self::factory()->user->create(); 424 425 add_filter( 'can_add_user_to_blog', '__return_true' ); 426 $result = add_user_to_blog( $site_id, $user_id, 'subscriber' ); 427 428 $this->assertTrue( $result ); 429 } 430 431 /** 432 * @ticket 23016 433 */ 434 public function test_wp_roles_global_is_reset() { 435 global $wp_roles; 436 $role = 'test_global_is_reset'; 437 $role_name = 'Test Global Is Reset'; 438 $blog_id = self::factory()->blog->create(); 439 440 $wp_roles->add_role( $role, $role_name, array() ); 441 442 $this->assertNotEmpty( $wp_roles->get_role( $role ) ); 443 444 switch_to_blog( $blog_id ); 445 446 $this->assertEmpty( $wp_roles->get_role( $role ) ); 447 448 $wp_roles->add_role( $role, $role_name, array() ); 449 450 $this->assertNotEmpty( $wp_roles->get_role( $role ) ); 451 452 restore_current_blog(); 453 454 $this->assertNotEmpty( $wp_roles->get_role( $role ) ); 455 456 $wp_roles->remove_role( $role ); 457 } 458 19 459 } 20 460 21 function tearDown() { 22 global $wpdb; 23 $wpdb->suppress_errors( $this->suppress ); 24 parent::tearDown(); 25 } 26 27 function test_remove_user_from_blog() { 28 $user1 = self::factory()->user->create_and_get(); 29 $user2 = self::factory()->user->create_and_get(); 30 31 $post_id = self::factory()->post->create( array( 'post_author' => $user1->ID ) ); 32 33 remove_user_from_blog( $user1->ID, 1, $user2->ID ); 34 35 $post = get_post( $post_id ); 36 37 $this->assertNotEquals( $user1->ID, $post->post_author ); 38 $this->assertEquals( $user2->ID, $post->post_author ); 39 } 40 41 /** 42 * Test the returned data from get_blogs_of_user() 43 */ 44 function test_get_blogs_of_user() { 45 $user1_id = self::factory()->user->create( array( 'role' => 'administrator' ) ); 46 47 // Maintain a list of 6 total sites and include the primary network site. 48 $blog_ids = self::factory()->blog->create_many( 5, array( 'user_id' => $user1_id ) ); 49 $blog_ids = array_merge( array( 1 ), $blog_ids ); 50 51 // All sites are new and not marked as spam, archived, or deleted. 52 $blog_ids_of_user = array_keys( get_blogs_of_user( $user1_id ) ); 53 54 // User should be a member of the created sites and the network's initial site. 55 $this->assertEquals( $blog_ids, $blog_ids_of_user ); 56 57 $this->assertTrue( remove_user_from_blog( $user1_id, $blog_ids[0] ) ); 58 $this->assertTrue( remove_user_from_blog( $user1_id, $blog_ids[2] ) ); 59 $this->assertTrue( remove_user_from_blog( $user1_id, $blog_ids[4] ) ); 60 61 unset( $blog_ids[0] ); 62 unset( $blog_ids[2] ); 63 unset( $blog_ids[4] ); 64 sort( $blog_ids ); 65 66 $blogs_of_user = get_blogs_of_user( $user1_id, false ); 67 68 // The user should still be a member of all remaining sites. 69 $blog_ids_of_user = array_keys( $blogs_of_user ); 70 $this->assertEquals( $blog_ids, $blog_ids_of_user ); 71 72 // Each site retrieved should match the expected structure. 73 foreach ( $blogs_of_user as $blog_id => $blog ) { 74 $this->assertEquals( $blog_id, $blog->userblog_id ); 75 $this->assertTrue( isset( $blog->userblog_id ) ); 76 $this->assertTrue( isset( $blog->blogname ) ); 77 $this->assertTrue( isset( $blog->domain ) ); 78 $this->assertTrue( isset( $blog->path ) ); 79 $this->assertTrue( isset( $blog->site_id ) ); 80 $this->assertTrue( isset( $blog->siteurl ) ); 81 $this->assertTrue( isset( $blog->archived ) ); 82 $this->assertTrue( isset( $blog->spam ) ); 83 $this->assertTrue( isset( $blog->deleted ) ); 84 } 85 86 // Mark each remaining site as spam, archived, and deleted. 87 update_blog_details( $blog_ids[0], array( 'spam' => 1 ) ); 88 update_blog_details( $blog_ids[1], array( 'archived' => 1 ) ); 89 update_blog_details( $blog_ids[2], array( 'deleted' => 1 ) ); 90 91 // Passing true as the second parameter should retrieve ALL sites, even if marked. 92 $blogs_of_user = get_blogs_of_user( $user1_id, true ); 93 $blog_ids_of_user = array_keys( $blogs_of_user ); 94 $this->assertEquals( $blog_ids, $blog_ids_of_user ); 95 96 // Check if sites are flagged as expected. 97 $this->assertEquals( 1, $blogs_of_user[ $blog_ids[0] ]->spam ); 98 $this->assertEquals( 1, $blogs_of_user[ $blog_ids[1] ]->archived ); 99 $this->assertEquals( 1, $blogs_of_user[ $blog_ids[2] ]->deleted ); 100 101 unset( $blog_ids[0] ); 102 unset( $blog_ids[1] ); 103 unset( $blog_ids[2] ); 104 sort( $blog_ids ); 105 106 // Passing false (the default) as the second parameter should retrieve only good sites. 107 $blog_ids_of_user = array_keys( get_blogs_of_user( $user1_id, false ) ); 108 $this->assertEquals( $blog_ids, $blog_ids_of_user ); 109 } 110 111 /** 112 * @expectedDeprecated is_blog_user 113 */ 114 function test_is_blog_user() { 115 global $wpdb; 116 117 $user1_id = self::factory()->user->create( array( 'role' => 'administrator' ) ); 118 119 $old_current = get_current_user_id(); 120 wp_set_current_user( $user1_id ); 121 122 $this->assertTrue( is_blog_user() ); 123 $this->assertTrue( is_blog_user( get_current_blog_id() ) ); 124 125 $blog_ids = array(); 126 127 $blog_ids = self::factory()->blog->create_many( 1 ); 128 foreach ( $blog_ids as $blog_id ) { 129 $this->assertInternalType( 'int', $blog_id ); 130 $this->assertTrue( is_blog_user( $blog_id ) ); 131 $this->assertTrue( remove_user_from_blog( $user1_id, $blog_id ) ); 132 $this->assertFalse( is_blog_user( $blog_id ) ); 133 } 134 135 wp_set_current_user( $old_current ); 136 } 137 138 function test_is_user_member_of_blog() { 139 global $wpdb; 140 141 $user1_id = self::factory()->user->create( array( 'role' => 'administrator' ) ); 142 $user2_id = self::factory()->user->create( array( 'role' => 'administrator' ) ); 143 144 $old_current = get_current_user_id(); 145 146 $this->assertSame( 0, $old_current ); 147 148 // test for "get current user" when not logged in 149 $this->assertFalse( is_user_member_of_blog() ); 150 151 wp_set_current_user( $user1_id ); 152 $site_id = get_current_blog_id(); 153 154 $this->assertTrue( is_user_member_of_blog() ); 155 $this->assertTrue( is_user_member_of_blog( 0, 0 ) ); 156 $this->assertTrue( is_user_member_of_blog( 0, $site_id ) ); 157 $this->assertTrue( is_user_member_of_blog( $user1_id ) ); 158 $this->assertTrue( is_user_member_of_blog( $user1_id, $site_id ) ); 159 160 $blog_ids = self::factory()->blog->create_many( 1 ); 161 foreach ( $blog_ids as $blog_id ) { 162 $this->assertInternalType( 'int', $blog_id ); 163 164 // Current user gets added to new blogs 165 $this->assertTrue( is_user_member_of_blog( $user1_id, $blog_id ) ); 166 // Other users should not 167 $this->assertFalse( is_user_member_of_blog( $user2_id, $blog_id ) ); 168 169 switch_to_blog( $blog_id ); 170 171 $this->assertTrue( is_user_member_of_blog( $user1_id ) ); 172 $this->assertFalse( is_user_member_of_blog( $user2_id ) ); 173 174 // Remove user 1 from blog 175 $this->assertTrue( remove_user_from_blog( $user1_id, $blog_id ) ); 176 177 // Add user 2 to blog 178 $this->assertTrue( add_user_to_blog( $blog_id, $user2_id, 'subscriber' ) ); 179 180 $this->assertFalse( is_user_member_of_blog( $user1_id ) ); 181 $this->assertTrue( is_user_member_of_blog( $user2_id ) ); 182 183 restore_current_blog(); 184 185 $this->assertFalse( is_user_member_of_blog( $user1_id, $blog_id ) ); 186 $this->assertTrue( is_user_member_of_blog( $user2_id, $blog_id ) ); 187 } 188 189 wpmu_delete_user( $user1_id ); 190 $user = new WP_User( $user1_id ); 191 $this->assertFalse( $user->exists() ); 192 $this->assertFalse( is_user_member_of_blog( $user1_id ) ); 193 194 wp_set_current_user( $old_current ); 195 } 196 197 /** 198 * @ticket 23192 199 */ 200 function test_is_user_spammy() { 201 $user_id = self::factory()->user->create( array( 202 'role' => 'author', 203 'user_login' => 'testuser1', 204 ) ); 205 206 $spam_username = (string) $user_id; 207 $spam_user_id = self::factory()->user->create( array( 208 'role' => 'author', 209 'user_login' => $spam_username, 210 ) ); 211 update_user_status( $spam_user_id, 'spam', '1' ); 212 213 $this->assertTrue( is_user_spammy( $spam_username ) ); 214 $this->assertFalse( is_user_spammy( 'testuser1' ) ); 215 } 216 217 /** 218 * @ticket 20601 219 */ 220 function test_user_member_of_blog() { 221 global $wp_rewrite; 222 223 self::factory()->blog->create(); 224 $user_id = self::factory()->user->create(); 225 self::factory()->blog->create( array( 'user_id' => $user_id ) ); 226 227 $blogs = get_blogs_of_user( $user_id ); 228 $this->assertCount( 2, $blogs ); 229 $first = reset( $blogs )->userblog_id; 230 remove_user_from_blog( $user_id, $first ); 231 232 $blogs = get_blogs_of_user( $user_id ); 233 $second = reset( $blogs )->userblog_id; 234 $this->assertCount( 1, $blogs ); 235 236 switch_to_blog( $first ); 237 $wp_rewrite->init(); 238 239 $this->go_to( get_author_posts_url( $user_id ) ); 240 $this->assertQueryTrue( 'is_404' ); 241 242 switch_to_blog( $second ); 243 $wp_rewrite->init(); 244 245 $this->go_to( get_author_posts_url( $user_id ) ); 246 $this->assertQueryTrue( 'is_author', 'is_archive' ); 247 248 add_user_to_blog( $first, $user_id, 'administrator' ); 249 $blogs = get_blogs_of_user( $user_id ); 250 $this->assertCount( 2, $blogs ); 251 252 switch_to_blog( $first ); 253 $wp_rewrite->init(); 254 255 $this->go_to( get_author_posts_url( $user_id ) ); 256 $this->assertQueryTrue( 'is_author', 'is_archive' ); 257 } 258 259 function test_revoked_super_admin_can_be_deleted() { 260 if ( isset( $GLOBALS['super_admins'] ) ) { 261 $old_global = $GLOBALS['super_admins']; 262 unset( $GLOBALS['super_admins'] ); 263 } 264 265 $user_id = self::factory()->user->create(); 266 grant_super_admin( $user_id ); 267 revoke_super_admin( $user_id ); 268 269 $this->assertTrue( wpmu_delete_user( $user_id ) ); 270 271 if ( isset( $old_global ) ) { 272 $GLOBALS['super_admins'] = $old_global; 273 } 274 } 275 276 function test_revoked_super_admin_is_deleted() { 277 if ( isset( $GLOBALS['super_admins'] ) ) { 278 $old_global = $GLOBALS['super_admins']; 279 unset( $GLOBALS['super_admins'] ); 280 } 281 282 $user_id = self::factory()->user->create(); 283 grant_super_admin( $user_id ); 284 revoke_super_admin( $user_id ); 285 wpmu_delete_user( $user_id ); 286 $user = new WP_User( $user_id ); 287 288 $this->assertFalse( $user->exists(), 'WP_User->exists' ); 289 290 if ( isset( $old_global ) ) { 291 $GLOBALS['super_admins'] = $old_global; 292 } 293 } 294 295 function test_super_admin_cannot_be_deleted() { 296 if ( isset( $GLOBALS['super_admins'] ) ) { 297 $old_global = $GLOBALS['super_admins']; 298 unset( $GLOBALS['super_admins'] ); 299 } 300 301 $user_id = self::factory()->user->create(); 302 grant_super_admin( $user_id ); 303 304 $this->assertFalse( wpmu_delete_user( $user_id ) ); 305 306 if ( isset( $old_global ) ) { 307 $GLOBALS['super_admins'] = $old_global; 308 } 309 } 310 311 /** 312 * @ticket 27205 313 */ 314 function test_granting_super_admins() { 315 if ( isset( $GLOBALS['super_admins'] ) ) { 316 $old_global = $GLOBALS['super_admins']; 317 unset( $GLOBALS['super_admins'] ); 318 } 319 320 $user_id = self::factory()->user->create(); 321 322 $this->assertFalse( is_super_admin( $user_id ) ); 323 $this->assertFalse( revoke_super_admin( $user_id ) ); 324 $this->assertTrue( grant_super_admin( $user_id ) ); 325 $this->assertTrue( is_super_admin( $user_id ) ); 326 $this->assertFalse( grant_super_admin( $user_id ) ); 327 $this->assertTrue( revoke_super_admin( $user_id ) ); 328 329 // None of these operations should set the $super_admins global. 330 $this->assertFalse( isset( $GLOBALS['super_admins'] ) ); 331 332 // Try with two users. 333 $second_user = self::factory()->user->create(); 334 $this->assertTrue( grant_super_admin( $user_id ) ); 335 $this->assertTrue( grant_super_admin( $second_user ) ); 336 $this->assertTrue( is_super_admin( $second_user ) ); 337 $this->assertTrue( is_super_admin( $user_id ) ); 338 $this->assertTrue( revoke_super_admin( $user_id ) ); 339 $this->assertTrue( revoke_super_admin( $second_user ) ); 340 341 if ( isset( $old_global ) ) { 342 $GLOBALS['super_admins'] = $old_global; 343 } 344 } 345 346 public function test_numeric_string_user_id() { 347 $u = self::factory()->user->create(); 348 349 $u_string = (string) $u; 350 $this->assertTrue( wpmu_delete_user( $u_string ) ); 351 $this->assertFalse( get_user_by( 'id', $u ) ); 352 } 353 354 /** 355 * @ticket 33800 356 */ 357 public function test_should_return_false_for_non_numeric_string_user_id() { 358 $this->assertFalse( wpmu_delete_user( 'abcde' ) ); 359 } 360 361 /** 362 * @ticket 33800 363 */ 364 public function test_should_return_false_for_object_user_id() { 365 $u_obj = self::factory()->user->create_and_get(); 366 $this->assertFalse( wpmu_delete_user( $u_obj ) ); 367 $this->assertEquals( $u_obj->ID, username_exists( $u_obj->user_login ) ); 368 } 369 370 /** 371 * @ticket 38356 372 */ 373 public function test_add_user_to_blog_subscriber() { 374 $site_id = self::factory()->blog->create(); 375 $user_id = self::factory()->user->create(); 376 377 add_user_to_blog( $site_id, $user_id, 'subscriber' ); 378 379 switch_to_blog( $site_id ); 380 $user = get_user_by( 'id', $user_id ); 381 restore_current_blog(); 382 383 wpmu_delete_blog( $site_id ); 384 wpmu_delete_user( $user_id ); 385 386 $this->assertContains( 'subscriber', $user->roles ); 387 } 388 389 /** 390 * @ticket 38356 391 */ 392 public function test_add_user_to_blog_invalid_user() { 393 $site_id = self::factory()->blog->create(); 394 395 $result = add_user_to_blog( 73622, $site_id, 'subscriber' ); 396 wpmu_delete_blog( $site_id ); 397 398 $this->assertWPError( $result ); 399 } 400 401 /** 402 * @ticket 41101 403 */ 404 public function test_should_fail_can_add_user_to_blog_filter() { 405 $site_id = self::factory()->blog->create(); 406 $user_id = self::factory()->user->create(); 407 408 add_filter( 'can_add_user_to_blog', '__return_false' ); 409 $result = add_user_to_blog( $site_id, $user_id, 'subscriber' ); 410 411 $this->assertWPError( $result ); 412 } 413 414 /** 415 * @ticket 41101 416 */ 417 public function test_should_succeed_can_add_user_to_blog_filter() { 418 $site_id = self::factory()->blog->create(); 419 $user_id = self::factory()->user->create(); 420 421 add_filter( 'can_add_user_to_blog', '__return_true' ); 422 $result = add_user_to_blog( $site_id, $user_id, 'subscriber' ); 423 424 $this->assertTrue( $result ); 425 } 426 427 /** 428 * @ticket 23016 429 */ 430 public function test_wp_roles_global_is_reset() { 431 global $wp_roles; 432 $role = 'test_global_is_reset'; 433 $role_name = 'Test Global Is Reset'; 434 $blog_id = self::factory()->blog->create(); 435 436 $wp_roles->add_role( $role, $role_name, array() ); 437 438 $this->assertNotEmpty( $wp_roles->get_role( $role ) ); 439 440 switch_to_blog( $blog_id ); 441 442 $this->assertEmpty( $wp_roles->get_role( $role ) ); 443 444 $wp_roles->add_role( $role, $role_name, array() ); 445 446 $this->assertNotEmpty( $wp_roles->get_role( $role ) ); 447 448 restore_current_blog(); 449 450 $this->assertNotEmpty( $wp_roles->get_role( $role ) ); 451 452 $wp_roles->remove_role( $role ); 453 } 454 455 } 456 457 endif ; 461 endif;
Note: See TracChangeset
for help on using the changeset viewer.