Ticket #18428: 18428.combo_unittests.2.patch
File 18428.combo_unittests.2.patch, 17.1 KB (added by , 13 years ago) |
---|
-
tests/xmlrpc/wp/deleteUser.php
1 <?php 2 3 /** 4 * @group xmlrpc 5 * @group user 6 */ 7 class TestXMLRPCServer_wp_deleteUser extends WP_XMLRPC_UnitTestCase { 8 9 protected $administrator_id; 10 11 function setUp() { 12 parent::setUp(); 13 14 // to delete users in multisite, you must be a superadmin. 15 // so promote the administrator user to super_admin for these tests 16 $this->administrator_id = $this->make_user_by_role( 'administrator' ); 17 if ( is_multisite() ) 18 grant_super_admin( $this->administrator_id ); 19 } 20 21 function tearDown() { 22 if ( is_multisite() ) 23 revoke_super_admin( $this->administrator_id ); 24 25 parent::tearDown(); 26 } 27 28 function test_invalid_username_password() { 29 $result = $this->myxmlrpcserver->wp_deleteUser( array( 1, 'username', 'password', 1 ) ); 30 $this->assertInstanceOf( 'IXR_Error', $result ); 31 $this->assertEquals( 403, $result->code ); 32 } 33 34 function test_incapable_user() { 35 $this->make_user_by_role( 'author' ); 36 37 $result = $this->myxmlrpcserver->wp_deleteUser( array( 1, 'author', 'author', 1 ) ); 38 $this->assertInstanceOf( 'IXR_Error', $result ); 39 $this->assertEquals( 401, $result->code ); 40 } 41 42 function test_invalid_user() { 43 $result = $this->myxmlrpcserver->wp_deleteUser( array( 1, 'administrator', 'administrator', 3492083940823 ) ); 44 $this->assertInstanceOf( 'IXR_Error', $result ); 45 $this->assertEquals( 404, $result->code ); 46 } 47 48 function test_delete_self() { 49 $result = $this->myxmlrpcserver->wp_deleteUser( array( 1, 'administrator', 'administrator', $this->administrator_id ) ); 50 $this->assertInstanceOf( 'IXR_Error', $result ); 51 $this->assertEquals( 401, $result->code ); 52 } 53 54 function test_invalid_reassign_user() { 55 $author_id = $this->make_user_by_role( 'author' ); 56 57 $result = $this->myxmlrpcserver->wp_deleteUser( array( 1, 'administrator', 'administrator', $author_id, 3908423098423 ) ); 58 $this->assertInstanceOf( 'IXR_Error', $result ); 59 $this->assertEquals( 404, $result->code ); 60 } 61 62 function test_reassign_same() { 63 $author_id = $this->make_user_by_role( 'author' ); 64 65 $result = $this->myxmlrpcserver->wp_deleteUser( array( 1, 'administrator', 'administrator', $author_id, $author_id ) ); 66 $this->assertInstanceOf( 'IXR_Error', $result ); 67 $this->assertEquals( 401, $result->code ); 68 } 69 70 function test_valid_delete() { 71 $user_id = $this->make_user_by_role( 'author' ); 72 73 // make some posts for the user 74 $num_posts = rand( 3, 10 ); 75 $post_ids = $this->factory->post->create_many( $num_posts, array( 'post_author' => $user_id ) ); 76 77 $result = $this->myxmlrpcserver->wp_deleteUser( array( 1, 'administrator', 'administrator', $user_id ) ); 78 $this->assertNotInstanceOf( 'IXR_Error', $result ); 79 80 // verify user was deleted 81 if ( is_multisite() ) { 82 $this->assertEquals( 0, $result['user_status'] ); 83 } else { 84 $this->assertFalse( get_user_by( 'id', $user_id ) ); 85 } 86 87 // since reassign wasn't used, the user's posts should have been trashed 88 foreach ( $post_ids as $post_id ) { 89 $post = get_post( $post_id ); 90 $this->assertEquals( 'trash', $post->post_status ); 91 } 92 } 93 94 function test_valid_delete_reassign() { 95 $user_id = $this->make_user_by_role( 'author' ); 96 $reassign_id = $this->factory->user->create( array( 97 'user_login' => 'author2', 98 'user_pass' => 'author2', 99 'role' => 'author' 100 )); 101 102 // make some posts for the user 103 $num_posts = rand( 3, 10 ); 104 $post_ids = $this->factory->post->create_many( $num_posts, array( 'post_author' => $user_id ) ); 105 106 $result = $this->myxmlrpcserver->wp_deleteUser( array( 1, 'administrator', 'administrator', $user_id, $reassign_id ) ); 107 $this->assertNotInstanceOf( 'IXR_Error', $result ); 108 109 // verify user was deleted 110 if ( is_multisite() ) { 111 $this->assertEquals( 0, $result['user_status'] ); 112 } else { 113 $this->assertFalse( get_user_by( 'id', $user_id ) ); 114 } 115 116 // verify posts were reassigned to other author 117 foreach ( $post_ids as $post_id ) { 118 $post = get_post( $post_id ); 119 $this->assertEquals( $reassign_id, $post->post_author ); 120 $this->assertEquals( 'publish', $post->post_status ); 121 } 122 } 123 } -
tests/xmlrpc/wp/editUser.php
1 <?php 2 3 /** 4 * @group xmlrpc 5 * @group user 6 */ 7 class TestXMLRPCServer_wp_editUser extends WP_XMLRPC_UnitTestCase { 8 9 function test_invalid_username_password() { 10 $result = $this->myxmlrpcserver->wp_editUser( array( 1, 'username', 'password', 1, array() ) ); 11 $this->assertInstanceOf( 'IXR_Error', $result ); 12 $this->assertEquals( 403, $result->code ); 13 } 14 } -
tests/xmlrpc/wp/getUser.php
1 <?php 2 3 /** 4 * @group xmlrpc 5 * @group user 6 */ 7 class TestXMLRPCServer_wp_getUser extends WP_XMLRPC_UnitTestCase { 8 9 function test_invalid_username_password() { 10 $result = $this->myxmlrpcserver->wp_getUser( array( 1, 'username', 'password', 1 ) ); 11 $this->assertInstanceOf( 'IXR_Error', $result ); 12 $this->assertEquals( 403, $result->code ); 13 } 14 15 function test_invalid_user() { 16 $this->make_user_by_role( 'administrator' ); 17 18 $result = $this->myxmlrpcserver->wp_getUser( array( 1, 'administrator', 'administrator', 34902348908234 ) ); 19 $this->assertInstanceOf( 'IXR_Error', $result ); 20 $this->assertEquals( 404, $result->code ); 21 } 22 23 function test_incapable_user() { 24 $this->make_user_by_role( 'subscriber' ); 25 $editor_id = $this->make_user_by_role( 'editor' ); 26 27 $result = $this->myxmlrpcserver->wp_getUser( array( 1, 'subscriber', 'subscriber', $editor_id ) ); 28 $this->assertInstanceOf( 'IXR_Error', $result ); 29 $this->assertEquals( 401, $result->code ); 30 } 31 32 function test_subscriber_self() { 33 $subscriber_id = $this->make_user_by_role( 'subscriber' ); 34 35 $result = $this->myxmlrpcserver->wp_getUser( array( 1, 'subscriber', 'subscriber', $subscriber_id ) ); 36 $this->assertNotInstanceOf( 'IXR_Error', $result ); 37 $this->assertEquals( $subscriber_id, $result['user_id'] ); 38 } 39 40 function test_valid_user() { 41 $this->make_user_by_role( 'administrator' ); 42 43 $registered_date = strtotime( '-1 day' ); 44 $user_data = array( 45 'user_login' => 'getusertestuser', 46 'user_pass' => rand_str(), 47 'first_name' => rand_str(), 48 'last_name' => rand_str(), 49 'description' => rand_str( 100 ), 50 'user_email' => 'getUserTestUser@example.com', 51 'nickname' => rand_str(), 52 'user_nicename' => rand_str(), 53 'display_name' => rand_str(), 54 'user_url' => 'http://www.example.com/testuser', 55 'role' => 'author', 56 'aim' => rand_str(), 57 'user_registered' => strftime( "%Y-%m-%d %H:%M:%S", $registered_date ) 58 ); 59 $user_id = wp_insert_user( $user_data ); 60 61 $result = $this->myxmlrpcserver->wp_getUser( array( 1, 'administrator', 'administrator', $user_id ) ); 62 $this->assertNotInstanceOf( 'IXR_Error', $result ); 63 64 // check data types 65 $this->assertInternalType( 'string', $result['user_id'] ); 66 $this->assertStringMatchesFormat( '%d', $result['user_id'] ); 67 $this->assertInternalType( 'string', $result['username'] ); 68 $this->assertInternalType( 'string', $result['first_name'] ); 69 $this->assertInternalType( 'string', $result['last_name'] ); 70 $this->assertInstanceOf( 'IXR_Date', $result['registered'] ); 71 $this->assertInternalType( 'string', $result['bio'] ); 72 $this->assertInternalType( 'string', $result['email'] ); 73 $this->assertInternalType( 'string', $result['nickname'] ); 74 $this->assertInternalType( 'string', $result['nicename'] ); 75 $this->assertInternalType( 'string', $result['url'] ); 76 $this->assertInternalType( 'string', $result['display_name'] ); 77 $this->assertInternalType( 'array', $result['capabilities'] ); 78 $this->assertInternalType( 'array', $result['roles'] ); 79 $this->assertInternalType( 'array', $result['user_contacts'] ); 80 81 // check expected values 82 $this->assertEquals( $user_id, $result['user_id'] ); 83 $this->assertEquals( $user_data['user_login'], $result['username'] ); 84 $this->assertEquals( $user_data['first_name'], $result['first_name'] ); 85 $this->assertEquals( $user_data['last_name'], $result['last_name'] ); 86 $this->assertEquals( $registered_date, $result['registered']->getTimestamp() ); 87 $this->assertEquals( $user_data['description'], $result['bio'] ); 88 $this->assertEquals( $user_data['user_email'], $result['email'] ); 89 $this->assertEquals( $user_data['nickname'], $result['nickname'] ); 90 $this->assertEquals( $user_data['user_nicename'], $result['nicename'] ); 91 $this->assertEquals( $user_data['user_url'], $result['url'] ); 92 $this->assertEquals( $user_data['display_name'], $result['display_name'] ); 93 $this->assertArrayHasKey( $user_data['role'], $result['capabilities'] ); 94 $this->assertEquals( 1, $result['capabilities'][$user_data['role']] ); 95 $this->assertEquals( $user_data['user_login'], $result['username'] ); 96 $this->assertContains( $user_data['role'], $result['roles'] ); 97 $this->assertArrayHasKey( 'aim', $result['user_contacts'] ); 98 $this->assertEquals( $user_data['aim'], $result['user_contacts']['aim'] ); 99 100 wp_delete_user( $user_id ); 101 } 102 103 function test_no_fields() { 104 $editor_id = $this->make_user_by_role( 'editor' ); 105 $this->make_user_by_role( 'administrator' ); 106 107 $result = $this->myxmlrpcserver->wp_getUser( array( 1, 'administrator', 'administrator', $editor_id, array() ) ); 108 $this->assertNotInstanceOf( 'IXR_Error', $result ); 109 $this->assertEquals( $editor_id, $result['user_id'] ); 110 111 $expected_fields = array( 'user_id' ); 112 $this->assertEquals( $expected_fields, array_keys( $result ) ); 113 } 114 115 function test_basic_fields() { 116 $editor_id = $this->make_user_by_role( 'editor' ); 117 $this->make_user_by_role( 'administrator' ); 118 119 $result = $this->myxmlrpcserver->wp_getUser( array( 1, 'administrator', 'administrator', $editor_id, array( 'basic' ) ) ); 120 $this->assertNotInstanceOf( 'IXR_Error', $result ); 121 $this->assertEquals( $editor_id, $result['user_id'] ); 122 123 $expected_fields = array( 'user_id', 'username', 'email', 'registered', 'display_name', 'nicename' ); 124 $this->assertEquals( sort( $expected_fields ), sort( array_keys( $result ) ) ); 125 } 126 127 function test_arbitrary_fields() { 128 $editor_id = $this->make_user_by_role( 'editor' ); 129 $this->make_user_by_role( 'administrator' ); 130 131 $fields = array( 'email', 'bio', 'user_contacts' ); 132 133 $result = $this->myxmlrpcserver->wp_getUser( array( 1, 'administrator', 'administrator', $editor_id, $fields ) ); 134 $this->assertNotInstanceOf( 'IXR_Error', $result ); 135 $this->assertEquals( $editor_id, $result['user_id'] ); 136 137 $expected_fields = array_merge( array( 'user_id' ), $fields ); 138 $this->assertEquals( sort( $expected_fields ), sort( array_keys( $result ) ) ); 139 } 140 } -
tests/xmlrpc/wp/getUserInfo.php
1 <?php 2 3 /** 4 * @group xmlrpc 5 * @group user 6 */ 7 class TestXMLRPCServer_wp_getUserInfo extends WP_XMLRPC_UnitTestCase { 8 9 function test_invalid_username_password() { 10 $result = $this->myxmlrpcserver->wp_getUserInfo( array( 1, 'username', 'password' ) ); 11 $this->assertInstanceOf( 'IXR_Error', $result ); 12 $this->assertEquals( 403, $result->code ); 13 } 14 15 function test_subscriber() { 16 $subscriber_id = $this->make_user_by_role( 'subscriber' ); 17 18 $result = $this->myxmlrpcserver->wp_getUserInfo( array( 1, 'subscriber', 'subscriber' ) ); 19 $this->assertNotInstanceOf( 'IXR_Error', $result ); 20 $this->assertEquals( $subscriber_id, $result['user_id'] ); 21 $this->assertContains( 'subscriber', $result['roles'] ); 22 } 23 24 function test_administrator() { 25 $administrator_id = $this->make_user_by_role( 'administrator' ); 26 27 $result = $this->myxmlrpcserver->wp_getUserInfo( array( 1, 'administrator', 'administrator' ) ); 28 $this->assertNotInstanceOf( 'IXR_Error', $result ); 29 $this->assertEquals( $administrator_id, $result['user_id'] ); 30 $this->assertContains( 'administrator', $result['roles'] ); 31 } 32 33 function test_arbitrary_fields() { 34 $editor_id = $this->make_user_by_role( 'editor' ); 35 36 $fields = array( 'email', 'bio', 'user_contacts' ); 37 38 $result = $this->myxmlrpcserver->wp_getUserInfo( array( 1, 'editor', 'editor', $fields ) ); 39 $this->assertNotInstanceOf( 'IXR_Error', $result ); 40 $this->assertEquals( $editor_id, $result['user_id'] ); 41 42 $expected_fields = array_merge( array( 'user_id' ), $fields ); 43 $this->assertEquals( sort( $expected_fields ), sort( array_keys( $result ) ) ); 44 } 45 } -
tests/xmlrpc/wp/getUsers.php
1 <?php 2 3 /** 4 * @group xmlrpc 5 * @group user 6 */ 7 class TestXMLRPCServer_wp_getUsers extends WP_XMLRPC_UnitTestCase { 8 9 function test_invalid_username_password() { 10 $results = $this->myxmlrpcserver->wp_getUsers( array( 1, 'username', 'password' ) ); 11 $this->assertInstanceOf( 'IXR_Error', $results ); 12 $this->assertEquals( 403, $results->code ); 13 } 14 15 function test_incapable_user() { 16 $this->make_user_by_role( 'subscriber' ); 17 18 $results = $this->myxmlrpcserver->wp_getUsers( array( 1, 'subscriber', 'subscriber' ) ); 19 $this->assertInstanceOf( 'IXR_Error', $results ); 20 $this->assertEquals( 401, $results->code ); 21 } 22 23 function test_capable_user() { 24 $this->make_user_by_role( 'administrator' ); 25 26 $results = $this->myxmlrpcserver->wp_getUsers( array( 1, 'administrator', 'administrator' ) ); 27 $this->assertNotInstanceOf( 'IXR_Error', $results ); 28 } 29 30 function test_invalid_role() { 31 $this->make_user_by_role( 'administrator' ); 32 33 $filter = array( 'role' => rand_str() ); 34 $results = $this->myxmlrpcserver->wp_getUsers( array( 1, 'administrator', 'administrator', $filter ) ); 35 $this->assertInstanceOf( 'IXR_Error', $results ); 36 $this->assertEquals( 403, $results->code ); 37 } 38 39 function test_role_filter() { 40 $author_id = $this->make_user_by_role( 'author' ); 41 $editor_id = $this->make_user_by_role( 'editor' ); 42 $administrator_id = $this->make_user_by_role( 'administrator' ); 43 44 // test a single role ('editor') 45 $filter = array( 'role' => 'editor' ); 46 $results = $this->myxmlrpcserver->wp_getUsers( array( 1, 'administrator', 'administrator', $filter ) ); 47 $this->assertNotInstanceOf( 'IXR_Error', $results ); 48 $this->assertCount( 1, $results ); 49 $this->assertEquals( $editor_id, $results[0]['user_id'] ); 50 51 // test 'authors', which should return all non-subscribers 52 // (see 'who' => 'authors' param to WP_User_Query) 53 $filter2 = array( 'role' => 'authors' ); 54 $results2 = $this->myxmlrpcserver->wp_getUsers( array( 1, 'administrator', 'administrator', $filter2 ) ); 55 $this->assertNotInstanceOf( 'IXR_Error', $results2 ); 56 $this->assertCount( 3, array_intersect( array( $author_id, $editor_id, $administrator_id ), wp_list_pluck( $results2, 'user_id' ) ) ); 57 } 58 59 function test_paging_filters() { 60 $this->make_user_by_role( 'administrator' ); 61 $this->factory->user->create_many( 13 ); 62 63 $user_ids = get_users( array( 'fields' => 'ID' ) ); 64 65 $users_found = array(); 66 $page_size = floor( count( $user_ids ) / 3 ); 67 68 $filter = array( 'number' => $page_size, 'offset' => 0 ); 69 do { 70 $presults = $this->myxmlrpcserver->wp_getUsers( array( 1, 'administrator', 'administrator', $filter ) ); 71 foreach ( $presults as $user ) { 72 $users_found[] = $user['user_id']; 73 } 74 $filter['offset'] += $page_size; 75 } while ( count( $presults ) > 0 ); 76 77 // verify that $user_ids matches $users_found 78 $this->assertEquals( 0, count( array_diff( $user_ids, $users_found ) ) ); 79 } 80 81 function test_order_filters() { 82 $this->make_user_by_role( 'administrator' ); 83 84 $filter = array( 'orderby' => 'email', 'order' => 'ASC' ); 85 $results = $this->myxmlrpcserver->wp_getUsers( array( 1, 'administrator', 'administrator', $filter ) ); 86 $this->assertNotInstanceOf( 'IXR_Error', $results ); 87 88 $last_email = ''; 89 foreach ( $results as $user ) { 90 $this->assertLessThanOrEqual( 0, strcmp( $last_email, $user['email'] ) ); 91 $last_email = $user['email']; 92 } 93 } 94 } 95 No newline at end of file -
tests/xmlrpc/wp/newUser.php
1 <?php 2 3 /** 4 * @group xmlrpc 5 * @group user 6 */ 7 class TestXMLRPCServer_wp_newUser extends WP_XMLRPC_UnitTestCase { 8 9 function test_invalid_username_password() { 10 $result = $this->myxmlrpcserver->wp_newUser( array( 1, 'username', 'password', array() ) ); 11 $this->assertInstanceOf( 'IXR_Error', $result ); 12 $this->assertEquals( 403, $result->code ); 13 } 14 }