WordPress.org

Make WordPress Core

Ticket #18438: term_unittests_new-edit.2.patch

File term_unittests_new-edit.2.patch, 12.1 KB (added by markoheijnen, 6 years ago)
  • wp-testcase/test-xmlrpc-api/test_wp_editTerm.php

     
     1<?php
     2include_once(ABSPATH . 'wp-admin/includes/admin.php');
     3include_once(ABSPATH . WPINC . '/class-IXR.php');
     4include_once(ABSPATH . WPINC . '/class-wp-xmlrpc-server.php');
     5
     6class TestXMLRPCServer_wp_editTerm extends WPTestCase {
     7        var $user_ids = array();
     8        var $term_ids = array();
     9
     10        var $parent_term;
     11        var $child_term;
     12        var $post_tag;
     13
     14        function setUp() {
     15                parent::setUp();
     16                // keep track of users we create
     17                $this->user_ids = array();
     18                $this->_flush_roles();
     19
     20                $this->orig_users = get_users_of_blog();
     21                add_filter( 'pre_option_enable_xmlrpc', '__return_true' );
     22
     23                $this->_make_user( 'subscriber', 'subscriber', 'subscriber' );
     24                $this->_make_user( 'contributor', 'contributor', 'contributor' );
     25                $this->_make_user( 'author', 'author', 'author' );
     26                $this->_make_user( 'editor', 'editor', 'editor' );
     27
     28                $this->parent_term = wp_insert_term( 'parent' , 'category' );
     29                $this->child_term = wp_insert_term( 'child' , 'category' );
     30                $this->post_tag = wp_insert_term( 'test' , 'post_tag' );
     31
     32                $this->myxmlrpcserver = new wp_xmlrpc_server();
     33        }
     34
     35        function tearDown() {
     36                parent::tearDown();
     37                // delete any users that were created during tests
     38                foreach ($this->user_ids as $id)
     39                        wp_delete_user($id);
     40
     41                wp_delete_term( $this->parent_term['term_id'], 'category' );
     42                wp_delete_term( $this->child_term['term_id'], 'category' );
     43                wp_delete_term( $this->post_tag['term_id'], 'post_tag' );
     44
     45                remove_filter( 'pre_option_enable_xmlrpc', '__return_true' );
     46        }
     47
     48        function _flush_roles() {
     49                // we want to make sure we're testing against the db, not just in-memory data
     50                // this will flush everything and reload it from the db
     51                unset( $GLOBALS['wp_user_roles'] );
     52        }
     53
     54
     55        function test_invalid_username_password() {
     56                $result = $this->myxmlrpcserver->wp_editTerm( array( 1, 'username', 'password' ) );
     57                $this->assertInstanceOf( 'IXR_Error', $result );
     58                $this->assertEquals( 403, $result->code );
     59        }
     60
     61        function test_empty_taxonomy() {
     62                $result = $this->myxmlrpcserver->wp_editTerm( array( 1, 'subscriber', 'subscriber' ) );
     63                $this->assertInstanceOf( 'IXR_Error', $result );
     64                $this->assertEquals( 403, $result->code );
     65                $this->assertEquals( __( 'Invalid taxonomy.' ), $result->message );
     66        }
     67
     68        function test_invalid_taxonomy() {
     69                $result = $this->myxmlrpcserver->wp_editTerm( array( 1, 'subscriber', 'subscriber', $this->parent_term['term_id'], array( 'taxonomy' => 'not_existing' ) ) );
     70                $this->assertInstanceOf( 'IXR_Error', $result );
     71                $this->assertEquals( 403, $result->code );
     72                $this->assertEquals( __( 'Invalid taxonomy.' ), $result->message );
     73        }
     74
     75        function test_incapable_user() {
     76                $result = $this->myxmlrpcserver->wp_editTerm( array( 1, 'subscriber', 'subscriber', $this->parent_term['term_id'], array( 'taxonomy' => 'category' ) ) );
     77                $this->assertInstanceOf( 'IXR_Error', $result );
     78                $this->assertEquals( 401, $result->code );
     79                $this->assertEquals( __( 'You are not allowed to edit terms in this taxonomy.' ), $result->message );
     80        }
     81
     82        function test_term_not_exists() {
     83                $result = $this->myxmlrpcserver->wp_editTerm( array( 1, 'editor', 'editor', 9999, array( 'taxonomy' => 'category' ) ) );
     84                $this->assertInstanceOf( 'IXR_Error', $result );
     85                $this->assertEquals( 404, $result->code );
     86                $this->assertEquals(  __( 'Invalid term ID.' ), $result->message );
     87        }
     88
     89        function test_empty_term() {
     90                $result = $this->myxmlrpcserver->wp_editTerm( array( 1, 'editor', 'editor', '', array( 'taxonomy' => 'category' ) ) );
     91                $this->assertInstanceOf( 'IXR_Error', $result );
     92                $this->assertEquals( 500, $result->code );
     93                $this->assertEquals( __('Empty Term'), $result->message );
     94        }
     95
     96        function test_empty_term_name() {
     97                $result = $this->myxmlrpcserver->wp_editTerm( array( 1, 'editor', 'editor', $this->parent_term['term_id'], array( 'taxonomy' => 'category', 'name' => '' ) ) );
     98                $this->assertInstanceOf( 'IXR_Error', $result );
     99                $this->assertEquals( 403, $result->code );
     100                $this->assertEquals( __( 'The term name cannot be empty.' ), $result->message );
     101        }
     102
     103        function test_parent_for_nonhierarchical() {
     104                $result = $this->myxmlrpcserver->wp_editTerm( array( 1, 'editor', 'editor', $this->post_tag['term_id'], array( 'taxonomy' => 'post_tag', 'parent' => $this->parent_term['term_id'] ) ) );
     105                $this->assertInstanceOf( 'IXR_Error', $result );
     106                $this->assertEquals( 403, $result->code );
     107                $this->assertEquals( __( 'This taxonomy is not hierarchical.' ), $result->message );
     108        }
     109
     110        function test_parent_empty() {
     111                $result = $this->myxmlrpcserver->wp_editTerm( array( 1, 'editor', 'editor', $this->child_term['term_id'], array( 'taxonomy' => 'category', 'parent' => '', 'name' => 'test' ) ) );
     112                $this->assertInstanceOf( 'IXR_Error', $result );
     113                $this->assertEquals( 500, $result->code );
     114                $this->assertEquals( __('Empty Term'), $result->message );
     115        }
     116
     117        function test_parent_invalid() {
     118                $result = $this->myxmlrpcserver->wp_editTerm( array( 1, 'editor', 'editor', $this->child_term['term_id'], array( 'taxonomy' => 'category', 'parent' => 'dasda', 'name' => 'test' ) ) );
     119                $this->assertInstanceOf( 'IXR_Error', $result );
     120                $this->assertEquals( 500, $result->code );
     121        }
     122
     123        function test_parent_not_existing() {
     124                $result = $this->myxmlrpcserver->wp_editTerm( array( 1, 'editor', 'editor', $this->child_term['term_id'], array( 'taxonomy' => 'category', 'parent' => 9999, 'name' => 'test' ) ) );
     125                $this->assertInstanceOf( 'IXR_Error', $result );
     126                $this->assertEquals( 403, $result->code );
     127                $this->assertEquals( __( 'Invalid parent term ID.' ), $result->message );
     128        }
     129
     130        function test_parent_duplicate_slug() {
     131                $result = $this->myxmlrpcserver->wp_editTerm( array( 1, 'editor', 'editor', $this->child_term['term_id'], array( 'taxonomy' => 'category', 'slug' => 'parent' ) ) );
     132                $this->assertInstanceOf( 'IXR_Error', $result );
     133                $this->assertEquals( 500, $result->code );
     134                $this->assertEquals( htmlspecialchars( sprintf( __('The slug &#8220;%s&#8221; is already in use by another term'), 'parent' ) ), $result->message );
     135        }
     136
     137        function test_edit_all_fields() {
     138                $fields = array( 'taxonomy' => 'category', 'name' => 'Child 2', 'parent' => $this->parent_term['term_id'], 'description' => 'Child term', 'slug' => 'child_2' );
     139                $result = $this->myxmlrpcserver->wp_editTerm( array( 1, 'editor', 'editor', $this->child_term['term_id'], $fields ) );
     140                $this->assertNotInstanceOf( 'IXR_Error', $result );
     141        }
     142}
     143 No newline at end of file
  • wp-testcase/test-xmlrpc-api/test_wp_newTerm.php

     
     1<?php
     2include_once(ABSPATH . 'wp-admin/includes/admin.php');
     3include_once(ABSPATH . WPINC . '/class-IXR.php');
     4include_once(ABSPATH . WPINC . '/class-wp-xmlrpc-server.php');
     5
     6class TestXMLRPCServer_wp_newTerm extends WPTestCase {
     7        var $user_ids = array();
     8        var $term_ids = array();
     9        var $parent_term;
     10
     11        function setUp() {
     12                parent::setUp();
     13                // keep track of users we create
     14                $this->user_ids = array();
     15                $this->term_ids = array();
     16                $this->_flush_roles();
     17
     18                $this->orig_users = get_users_of_blog();
     19                add_filter( 'pre_option_enable_xmlrpc', '__return_true' );
     20
     21                $this->_make_user( 'subscriber', 'subscriber', 'subscriber' );
     22                $this->_make_user( 'contributor', 'contributor', 'contributor' );
     23                $this->_make_user( 'author', 'author', 'author' );
     24                $this->_make_user( 'editor', 'editor', 'editor' );
     25
     26                $this->parent_term = wp_insert_term( 'parent' , 'category' );
     27
     28                $this->myxmlrpcserver = new wp_xmlrpc_server();
     29        }
     30
     31        function tearDown() {
     32                parent::tearDown();
     33                // delete any users that were created during tests
     34                foreach ( $this->user_ids as $id )
     35                        wp_delete_user($id);
     36
     37                wp_delete_term( $this->parent_term, 'category' );
     38                foreach ( $this->term_ids as $term_id )
     39                        wp_delete_term( $term_id, 'category' );
     40
     41                remove_filter( 'pre_option_enable_xmlrpc', '__return_true' );
     42        }
     43
     44        function _flush_roles() {
     45                // we want to make sure we're testing against the db, not just in-memory data
     46                // this will flush everything and reload it from the db
     47                unset( $GLOBALS['wp_user_roles'] );
     48        }
     49
     50        function test_invalid_username_password() {
     51                $result = $this->myxmlrpcserver->wp_newTerm( array( 1, 'username', 'password' ) );
     52                $this->assertInstanceOf( 'IXR_Error', $result );
     53                $this->assertEquals( 403, $result->code );
     54        }
     55
     56        function test_empty_taxonomy() {
     57                $result = $this->myxmlrpcserver->wp_newTerm( array( 1, 'subscriber', 'subscriber' ) );
     58                $this->assertInstanceOf( 'IXR_Error', $result );
     59                $this->assertEquals( 403, $result->code );
     60                $this->assertEquals( __( 'Invalid taxonomy.' ), $result->message );
     61        }
     62
     63        function test_invalid_taxonomy() {
     64                $result = $this->myxmlrpcserver->wp_newTerm( array( 1, 'subscriber', 'subscriber', array( 'taxonomy' => 'not_existing' ) ) );
     65                $this->assertInstanceOf( 'IXR_Error', $result );
     66                $this->assertEquals( 403, $result->code );
     67                $this->assertEquals( __( 'Invalid taxonomy.' ), $result->message );
     68        }
     69
     70        function test_incapable_user() {
     71                $result = $this->myxmlrpcserver->wp_newTerm( array( 1, 'subscriber', 'subscriber', array( 'taxonomy' => 'category' ) ) );
     72                $this->assertInstanceOf( 'IXR_Error', $result );
     73                $this->assertEquals( 401, $result->code );
     74                $this->assertEquals( __( 'You are not allowed to create terms in this taxonomy.' ), $result->message );
     75        }
     76
     77        function test_empty_term() {
     78                $result = $this->myxmlrpcserver->wp_newTerm( array( 1, 'editor', 'editor', array( 'taxonomy' => 'category', 'name' => '' ) ) );
     79                $this->assertInstanceOf( 'IXR_Error', $result );
     80                $this->assertEquals( 403, $result->code );
     81                $this->assertEquals( __( 'The term name cannot be empty.' ), $result->message );
     82        }
     83
     84        function test_parent_for_nonhierarchical() {
     85                $result = $this->myxmlrpcserver->wp_newTerm( array( 1, 'editor', 'editor', array( 'taxonomy' => 'post_tag', 'parent' => $this->parent_term, 'name' => 'test' ) ) );
     86                $this->assertInstanceOf( 'IXR_Error', $result );
     87                $this->assertEquals( 403, $result->code );
     88                $this->assertEquals( __( 'This taxonomy is not hierarchical.' ), $result->message );
     89        }
     90
     91        function test_parent_invalid() {
     92                $result = $this->myxmlrpcserver->wp_newTerm( array( 1, 'editor', 'editor', array( 'taxonomy' => 'category', 'parent' => 'dasda', 'name' => 'test' ) ) );
     93                $this->assertInstanceOf( 'IXR_Error', $result );
     94                $this->assertEquals( 500, $result->code );
     95        }
     96
     97        function test_parent_not_existing() {
     98                $result = $this->myxmlrpcserver->wp_newTerm( array( 1, 'editor', 'editor', array( 'taxonomy' => 'category', 'parent' => 9999, 'name' => 'test' ) ) );
     99                $this->assertInstanceOf( 'IXR_Error', $result );
     100                $this->assertEquals( 500, $result->code );
     101                $this->assertEquals( __( 'Parent term does not exist.' ), $result->message );
     102        }
     103
     104
     105        function test_add_term() {
     106                $result = $this->myxmlrpcserver->wp_newTerm( array( 1, 'editor', 'editor', array( 'taxonomy' => 'category', 'name' => 'test' ) ) );
     107                $this->assertNotInstanceOf( 'IXR_Error', $result );
     108                $this->assertStringMatchesFormat( '%d', $result );
     109
     110                $term_ids[] = $result;
     111        }
     112
     113        function test_add_term_with_parent() {
     114                $result  = $this->myxmlrpcserver->wp_newTerm( array( 1, 'editor', 'editor', array( 'taxonomy' => 'category', 'parent' => $this->parent_term, 'name' => 'test' ) ) );
     115                $this->assertNotInstanceOf( 'IXR_Error', $result );
     116                $this->assertStringMatchesFormat( '%d', $result );
     117
     118                $term_ids[] = $result;
     119        }
     120
     121        function test_add_term_with_all() {
     122                $taxonomy = array( 'taxonomy' => 'category', 'parent' => $this->parent_term, 'name' => 'test_all', 'description' => 'Test all', 'slug' => 'test_all' );
     123                $result  = $this->myxmlrpcserver->wp_newTerm( array( 1, 'editor', 'editor', $taxonomy ) );
     124                $this->assertNotInstanceOf( 'IXR_Error', $result );
     125                $this->assertStringMatchesFormat( '%d', $result );
     126
     127                $term_ids[] = $result;
     128        }
     129}
     130 No newline at end of file