- Timestamp:
- 10/27/2016 02:56:28 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/rest-api/rest-users-controller.php
r38832 r38975 11 11 */ 12 12 class WP_Test_REST_Users_Controller extends WP_Test_REST_Controller_Testcase { 13 protected static $user; 14 protected static $editor; 15 16 public static function wpSetUpBeforeClass( $factory ) { 17 self::$user = $factory->user->create( array( 18 'role' => 'administrator', 19 ) ); 20 self::$editor = $factory->user->create( array( 21 'role' => 'editor', 22 'user_email' => 'editor@example.com', 23 ) ); 24 } 25 26 public static function wpTearDownAfterClass() { 27 self::delete_user( self::$user ); 28 self::delete_user( self::$editor ); 29 } 30 13 31 /** 14 32 * This function is run before each method … … 16 34 public function setUp() { 17 35 parent::setUp(); 18 19 $this->user = $this->factory->user->create( array(20 'role' => 'administrator',21 ) );22 23 $this->editor = $this->factory->user->create( array(24 'role' => 'editor',25 'user_email' => 'editor@example.com',26 ) );27 28 36 $this->endpoint = new WP_REST_Users_Controller(); 29 37 } … … 47 55 $this->assertEquals( array( 'view', 'embed', 'edit' ), $data['endpoints'][0]['args']['context']['enum'] ); 48 56 // Single 49 $request = new WP_REST_Request( 'OPTIONS', '/wp/v2/users/' . $this->user );57 $request = new WP_REST_Request( 'OPTIONS', '/wp/v2/users/' . self::$user ); 50 58 $response = $this->server->dispatch( $request ); 51 59 $data = $response->get_data(); … … 76 84 77 85 public function test_get_items() { 78 wp_set_current_user( $this->user );86 wp_set_current_user( self::$user ); 79 87 80 88 $request = new WP_REST_Request( 'GET', '/wp/v2/users' ); … … 91 99 92 100 public function test_get_items_with_edit_context() { 93 wp_set_current_user( $this->user );101 wp_set_current_user( self::$user ); 94 102 95 103 $request = new WP_REST_Request( 'GET', '/wp/v2/users' ); … … 114 122 115 123 //test with a user logged in but without sufficient capabilities; capability in question: 'list_users' 116 wp_set_current_user( $this->editor );124 wp_set_current_user( self::$editor ); 117 125 $request = new WP_REST_Request( 'GET', '/wp/v2/users' ); 118 126 $request->set_param( 'context', 'edit' ); … … 128 136 $this->assertEquals( array(), $response->get_data() ); 129 137 130 $this->factory->post->create( array( 'post_author' => $this->editor ) );131 $this->factory->post->create( array( 'post_author' => $this->user, 'post_status' => 'draft' ) );138 $this->factory->post->create( array( 'post_author' => self::$editor ) ); 139 $this->factory->post->create( array( 'post_author' => self::$user, 'post_status' => 'draft' ) ); 132 140 133 141 $request = new WP_REST_Request( 'GET', '/wp/v2/users' ); … … 149 157 */ 150 158 public function test_get_items_pagination_headers() { 151 wp_set_current_user( $this->user );159 wp_set_current_user( self::$user ); 152 160 // Start of the index, including the three existing users 153 161 for ( $i = 0; $i < 47; $i++ ) { … … 211 219 212 220 public function test_get_items_per_page() { 213 wp_set_current_user( $this->user );221 wp_set_current_user( self::$user ); 214 222 for ( $i = 0; $i < 20; $i++ ) { 215 223 $this->factory->user->create( array( 'display_name' => "User {$i}" ) ); … … 225 233 226 234 public function test_get_items_page() { 227 wp_set_current_user( $this->user );235 wp_set_current_user( self::$user ); 228 236 for ( $i = 0; $i < 20; $i++ ) { 229 237 $this->factory->user->create( array( 'display_name' => "User {$i}" ) ); … … 243 251 244 252 public function test_get_items_orderby_name() { 245 wp_set_current_user( $this->user );253 wp_set_current_user( self::$user ); 246 254 $low_id = $this->factory->user->create( array( 'display_name' => 'AAAAA' ) ); 247 255 $mid_id = $this->factory->user->create( array( 'display_name' => 'NNNNN' ) ); … … 264 272 265 273 public function test_get_items_orderby_url() { 266 wp_set_current_user( $this->user );274 wp_set_current_user( self::$user ); 267 275 268 276 $low_id = $this->factory->user->create( array( 'user_url' => 'http://a.com' ) ); … … 290 298 291 299 public function test_get_items_orderby_slug() { 292 wp_set_current_user( $this->user );300 wp_set_current_user( self::$user ); 293 301 294 302 $high_id = $this->factory->user->create( array( 'user_nicename' => 'blogin' ) ); … … 316 324 317 325 public function test_get_items_orderby_email() { 318 wp_set_current_user( $this->user );326 wp_set_current_user( self::$user ); 319 327 320 328 $high_id = $this->factory->user->create( array( 'user_email' => 'bemail@gmail.com' ) ); … … 357 365 358 366 public function test_get_items_offset() { 359 wp_set_current_user( $this->user );367 wp_set_current_user( self::$user ); 360 368 // 2 users created in __construct(), plus default user 361 369 $this->factory->user->create(); … … 375 383 376 384 public function test_get_items_include_query() { 377 wp_set_current_user( $this->user );385 wp_set_current_user( self::$user ); 378 386 $id1 = $this->factory->user->create(); 379 387 $id2 = $this->factory->user->create(); … … 401 409 402 410 public function test_get_items_exclude_query() { 403 wp_set_current_user( $this->user );411 wp_set_current_user( self::$user ); 404 412 $id1 = $this->factory->user->create(); 405 413 $id2 = $this->factory->user->create(); … … 417 425 418 426 public function test_get_items_search() { 419 wp_set_current_user( $this->user );427 wp_set_current_user( self::$user ); 420 428 $request = new WP_REST_Request( 'GET', '/wp/v2/users' ); 421 429 $request->set_param( 'search', 'yololololo' ); … … 441 449 442 450 public function test_get_items_slug_query() { 443 wp_set_current_user( $this->user );451 wp_set_current_user( self::$user ); 444 452 $this->factory->user->create( array( 'display_name' => 'foo', 'user_login' => 'bar' ) ); 445 453 $id2 = $this->factory->user->create( array( 'display_name' => 'Moo', 'user_login' => 'foo' ) ); … … 454 462 // Note: Do not test using editor role as there is an editor role created in testing and it makes it hard to test this functionality. 455 463 public function test_get_items_roles() { 456 wp_set_current_user( $this->user );464 wp_set_current_user( self::$user ); 457 465 $tango = $this->factory->user->create( array( 'display_name' => 'tango', 'role' => 'subscriber' ) ); 458 466 $yolo = $this->factory->user->create( array( 'display_name' => 'yolo', 'role' => 'author' ) ); … … 473 481 $response = $this->server->dispatch( $request ); 474 482 $this->assertErrorResponse( 'rest_user_cannot_view', $response, 401 ); 475 wp_set_current_user( $this->editor );483 wp_set_current_user( self::$editor ); 476 484 $request->set_param( 'roles', 'author' ); 477 485 $response = $this->server->dispatch( $request ); … … 480 488 481 489 public function test_get_items_invalid_roles() { 482 wp_set_current_user( $this->user );490 wp_set_current_user( self::$user ); 483 491 $lolz = $this->factory->user->create( array( 'display_name' => 'lolz', 'role' => 'author' ) ); 484 492 $request = new WP_REST_Request( 'GET', '/wp/v2/users' ); … … 498 506 public function test_get_item() { 499 507 $user_id = $this->factory->user->create(); 500 wp_set_current_user( $this->user );508 wp_set_current_user( self::$user ); 501 509 502 510 $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', $user_id ) ); … … 507 515 508 516 public function test_prepare_item() { 509 wp_set_current_user( $this->user );517 wp_set_current_user( self::$user ); 510 518 $request = new WP_REST_Request; 511 519 $request->set_param( 'context', 'edit' ); … … 516 524 517 525 public function test_get_user_avatar_urls() { 518 wp_set_current_user( $this->user );519 520 $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', $this->editor ) );526 wp_set_current_user( self::$user ); 527 528 $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', self::$editor ) ); 521 529 522 530 $response = $this->server->dispatch( $request ); … … 527 535 $this->assertArrayHasKey( 96, $data['avatar_urls'] ); 528 536 529 $user = get_user_by( 'id', $this->editor );537 $user = get_user_by( 'id', self::$editor ); 530 538 /** 531 539 * Ignore the subdomain, since 'get_avatar_url randomly sets the Gravatar … … 536 544 537 545 public function test_get_user_invalid_id() { 538 wp_set_current_user( $this->user );546 wp_set_current_user( self::$user ); 539 547 $request = new WP_REST_Request( 'GET', '/wp/v2/users/100' ); 540 548 $response = $this->server->dispatch( $request ); … … 544 552 545 553 public function test_get_user_empty_capabilities() { 546 wp_set_current_user( $this->user );554 wp_set_current_user( self::$user ); 547 555 $this->allow_user_to_manage_multisite(); 548 556 … … 560 568 561 569 public function test_get_item_without_permission() { 562 wp_set_current_user( $this->editor );563 564 $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', $this->user ) );570 wp_set_current_user( self::$editor ); 571 572 $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/users/%d', self::$user ) ); 565 573 $response = $this->server->dispatch( $request ); 566 574 … … 623 631 624 632 public function test_get_current_user() { 625 wp_set_current_user( $this->user );633 wp_set_current_user( self::$user ); 626 634 627 635 $request = new WP_REST_Request( 'GET', '/wp/v2/users/me' ); … … 632 640 $headers = $response->get_headers(); 633 641 $this->assertArrayHasKey( 'Location', $headers ); 634 $this->assertEquals( rest_url( 'wp/v2/users/' . $this->user ), $headers['Location'] );642 $this->assertEquals( rest_url( 'wp/v2/users/' . self::$user ), $headers['Location'] ); 635 643 } 636 644 … … 645 653 public function test_create_item() { 646 654 $this->allow_user_to_manage_multisite(); 647 wp_set_current_user( $this->user );655 wp_set_current_user( self::$user ); 648 656 649 657 $params = array( … … 671 679 public function test_json_create_user() { 672 680 $this->allow_user_to_manage_multisite(); 673 wp_set_current_user( $this->user );681 wp_set_current_user( self::$user ); 674 682 675 683 $params = array( … … 688 696 689 697 public function test_create_user_without_permission() { 690 wp_set_current_user( $this->editor );698 wp_set_current_user( self::$editor ); 691 699 692 700 $params = array( … … 706 714 public function test_create_user_invalid_id() { 707 715 $this->allow_user_to_manage_multisite(); 708 wp_set_current_user( $this->user );716 wp_set_current_user( self::$user ); 709 717 710 718 $params = array( … … 725 733 public function test_create_user_invalid_email() { 726 734 $this->allow_user_to_manage_multisite(); 727 wp_set_current_user( $this->user );735 wp_set_current_user( self::$user ); 728 736 729 737 $params = array( … … 743 751 public function test_create_user_invalid_role() { 744 752 $this->allow_user_to_manage_multisite(); 745 wp_set_current_user( $this->user );753 wp_set_current_user( self::$user ); 746 754 747 755 $params = array( … … 769 777 )); 770 778 $this->allow_user_to_manage_multisite(); 771 wp_set_current_user( $this->user );779 wp_set_current_user( self::$user ); 772 780 773 781 $userdata = get_userdata( $user_id ); … … 804 812 $user2 = $this->factory->user->create( array( 'user_login' => 'test_json_user2', 'user_email' => 'testjson2@example.com' ) ); 805 813 $this->allow_user_to_manage_multisite(); 806 wp_set_current_user( $this->user );814 wp_set_current_user( self::$user ); 807 815 808 816 $request = new WP_REST_Request( 'PUT', '/wp/v2/users/' . $user2 ); … … 817 825 $user2 = $this->factory->user->create( array( 'user_login' => 'test_json_user2', 'user_email' => 'testjson2@example.com' ) ); 818 826 $this->allow_user_to_manage_multisite(); 819 wp_set_current_user( $this->user );827 wp_set_current_user( self::$user ); 820 828 821 829 $request = new WP_REST_Request( 'PUT', '/wp/v2/users/' . $user2 ); … … 830 838 $user2 = $this->factory->user->create( array( 'user_login' => 'test_json_user2', 'user_email' => 'testjson2@example.com' ) ); 831 839 $this->allow_user_to_manage_multisite(); 832 wp_set_current_user( $this->user );840 wp_set_current_user( self::$user ); 833 841 834 842 $request = new WP_REST_Request( 'PUT', '/wp/v2/users/' . $user2 ); … … 848 856 )); 849 857 $this->allow_user_to_manage_multisite(); 850 wp_set_current_user( $this->user );858 wp_set_current_user( self::$user ); 851 859 852 860 $params = array( … … 883 891 $user_id = $this->factory->user->create( array( 'role' => 'administrator' ) ); 884 892 885 wp_set_current_user( $this->user );893 wp_set_current_user( self::$user ); 886 894 $this->allow_user_to_manage_multisite(); 887 895 … … 901 909 902 910 public function test_update_user_role_invalid_privilege_escalation() { 903 wp_set_current_user( $this->editor );904 905 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', $this->editor ) );911 wp_set_current_user( self::$editor ); 912 913 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', self::$editor ) ); 906 914 $request->set_param( 'roles', array( 'administrator' ) ); 907 915 $response = $this->server->dispatch( $request ); 908 916 909 917 $this->assertErrorResponse( 'rest_cannot_edit_roles', $response, 403 ); 910 $user = get_userdata( $this->editor );918 $user = get_userdata( self::$editor ); 911 919 $this->assertArrayHasKey( 'editor', $user->caps ); 912 920 $this->assertArrayNotHasKey( 'administrator', $user->caps ); … … 955 963 956 964 public function test_update_user_role_invalid_role() { 957 wp_set_current_user( $this->user );958 $this->allow_user_to_manage_multisite(); 959 960 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', $this->editor ) );965 wp_set_current_user( self::$user ); 966 $this->allow_user_to_manage_multisite(); 967 968 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', self::$editor ) ); 961 969 $request->set_param( 'roles', array( 'BeSharp' ) ); 962 970 $response = $this->server->dispatch( $request ); … … 964 972 $this->assertErrorResponse( 'rest_user_invalid_role', $response, 400 ); 965 973 966 $user = get_userdata( $this->editor );974 $user = get_userdata( self::$editor ); 967 975 $this->assertArrayHasKey( 'editor', $user->caps ); 968 976 $this->assertArrayNotHasKey( 'BeSharp', $user->caps ); … … 970 978 971 979 public function test_update_user_without_permission() { 972 wp_set_current_user( $this->editor );980 wp_set_current_user( self::$editor ); 973 981 974 982 $params = array( … … 978 986 ); 979 987 980 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', $this->user ) );988 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', self::$user ) ); 981 989 $request->add_header( 'content-type', 'application/x-www-form-urlencoded' ); 982 990 $request->set_body_params( $params ); … … 988 996 public function test_update_user_invalid_id() { 989 997 $this->allow_user_to_manage_multisite(); 990 wp_set_current_user( $this->user );998 wp_set_current_user( self::$user ); 991 999 992 1000 $params = array( … … 997 1005 ); 998 1006 999 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', $this->editor ) );1007 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/users/%d', self::$editor ) ); 1000 1008 $request->add_header( 'content-type', 'application/x-www-form-urlencoded' ); 1001 1009 $request->set_body_params( $params ); … … 1009 1017 1010 1018 $this->allow_user_to_manage_multisite(); 1011 wp_set_current_user( $this->user );1019 wp_set_current_user( self::$user ); 1012 1020 1013 1021 $userdata = get_userdata( $user_id ); // cache for later … … 1025 1033 1026 1034 $this->allow_user_to_manage_multisite(); 1027 wp_set_current_user( $this->user );1035 wp_set_current_user( self::$user ); 1028 1036 1029 1037 $userdata = get_userdata( $user_id ); // cache for later … … 1041 1049 1042 1050 $this->allow_user_to_manage_multisite(); 1043 wp_set_current_user( $this->editor );1051 wp_set_current_user( self::$editor ); 1044 1052 1045 1053 $request = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/users/%d', $user_id ) ); … … 1052 1060 public function test_delete_user_invalid_id() { 1053 1061 $this->allow_user_to_manage_multisite(); 1054 wp_set_current_user( $this->user );1062 wp_set_current_user( self::$user ); 1055 1063 1056 1064 $request = new WP_REST_Request( 'DELETE', '/wp/v2/users/100' ); … … 1076 1084 1077 1085 // Delete our test user, and reassign to the new author 1078 wp_set_current_user( $this->user );1086 wp_set_current_user( self::$user ); 1079 1087 $request = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/users/%d', $user_id ) ); 1080 1088 $request['force'] = true; … … 1093 1101 1094 1102 $this->allow_user_to_manage_multisite(); 1095 wp_set_current_user( $this->user );1103 wp_set_current_user( self::$user ); 1096 1104 1097 1105 $request = new WP_REST_Request( 'DELETE', sprintf( '/wp/v2/users/%d', $user_id ) ); … … 1220 1228 1221 1229 // Check for error on update. 1222 $request = new WP_REST_Request( 'POST', sprintf( '/wp/v2/users/%d', $this->user ) );1230 $request = new WP_REST_Request( 'POST', sprintf( '/wp/v2/users/%d', self::$user ) ); 1223 1231 $request->set_body_params( array( 1224 1232 'my_custom_int' => 'returnError', … … 1309 1317 1310 1318 protected function allow_user_to_manage_multisite() { 1311 wp_set_current_user( $this->user );1319 wp_set_current_user( self::$user ); 1312 1320 $user = wp_get_current_user(); 1313 1321
Note: See TracChangeset
for help on using the changeset viewer.