Changeset 37476 for trunk/tests/phpunit/tests/customize/manager.php
- Timestamp:
- 05/20/2016 09:09:40 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/customize/manager.php
r37040 r37476 124 124 $bar_setting = $manager->get_setting( 'bar' ); 125 125 $this->assertEquals( 'post_value_bar_default', $manager->post_value( $bar_setting, 'post_value_bar_default' ), 'Expected post_value($bar_setting, $default) to return $default since no value supplied in $_POST[customized][bar]' ); 126 } 127 128 /** 129 * Test the WP_Customize_Manager::post_value() method for a setting value that fails validation. 130 * 131 * @ticket 34893 132 */ 133 function test_invalid_post_value() { 134 $default_value = 'foo_default'; 135 $setting = $this->manager->add_setting( 'foo', array( 136 'validate_callback' => array( $this, 'filter_customize_validate_foo' ), 137 'sanitize_callback' => array( $this, 'filter_customize_sanitize_foo' ), 138 ) ); 139 $this->assertEquals( $default_value, $this->manager->post_value( $setting, $default_value ) ); 140 $this->assertEquals( $default_value, $setting->post_value( $default_value ) ); 141 142 $post_value = 'bar'; 143 $this->manager->set_post_value( 'foo', $post_value ); 144 $this->assertEquals( strtoupper( $post_value ), $this->manager->post_value( $setting, $default_value ) ); 145 $this->assertEquals( strtoupper( $post_value ), $setting->post_value( $default_value ) ); 146 147 $this->manager->set_post_value( 'foo', 'return_wp_error_in_sanitize' ); 148 $this->assertEquals( $default_value, $this->manager->post_value( $setting, $default_value ) ); 149 $this->assertEquals( $default_value, $setting->post_value( $default_value ) ); 150 151 $this->manager->set_post_value( 'foo', 'return_null_in_sanitize' ); 152 $this->assertEquals( $default_value, $this->manager->post_value( $setting, $default_value ) ); 153 $this->assertEquals( $default_value, $setting->post_value( $default_value ) ); 154 155 $post_value = '<script>evil</script>'; 156 $this->manager->set_post_value( 'foo', $post_value ); 157 $this->assertEquals( $default_value, $this->manager->post_value( $setting, $default_value ) ); 158 $this->assertEquals( $default_value, $setting->post_value( $default_value ) ); 159 } 160 161 /** 162 * Filter customize_validate callback. 163 * 164 * @param mixed $value Value. 165 * @return string|WP_Error 166 */ 167 function filter_customize_sanitize_foo( $value ) { 168 if ( 'return_null_in_sanitize' === $value ) { 169 $value = null; 170 } elseif ( is_string( $value ) ) { 171 $value = strtoupper( $value ); 172 if ( false !== stripos( $value, 'return_wp_error_in_sanitize' ) ) { 173 $value = new WP_Error( 'invalid_value_in_sanitize', __( 'Invalid value.' ), array( 'source' => 'filter_customize_sanitize_foo' ) ); 174 } 175 } 176 return $value; 177 } 178 179 /** 180 * Filter customize_validate callback. 181 * 182 * @param WP_Error $validity Validity. 183 * @param mixed $value Value. 184 * @return WP_Error 185 */ 186 function filter_customize_validate_foo( $validity, $value ) { 187 if ( false !== stripos( $value, '<script' ) ) { 188 $validity->add( 'invalid_value_in_validate', __( 'Invalid value.' ), array( 'source' => 'filter_customize_validate_foo' ) ); 189 } 190 return $validity; 191 } 192 193 /** 194 * Test WP_Customize_Manager::validate_setting_values(). 195 * 196 * @see WP_Customize_Manager::validate_setting_values() 197 */ 198 function test_validate_setting_values() { 199 $default_value = 'foo_default'; 200 $setting = $this->manager->add_setting( 'foo', array( 201 'validate_callback' => array( $this, 'filter_customize_validate_foo' ), 202 'sanitize_callback' => array( $this, 'filter_customize_sanitize_foo' ), 203 ) ); 204 205 $post_value = 'bar'; 206 $this->manager->set_post_value( 'foo', $post_value ); 207 $this->assertEmpty( $this->manager->validate_setting_values( $this->manager->unsanitized_post_values() ) ); 208 209 $this->manager->set_post_value( 'foo', 'return_wp_error_in_sanitize' ); 210 $invalid_settings = $this->manager->validate_setting_values( $this->manager->unsanitized_post_values() ); 211 $this->assertCount( 1, $invalid_settings ); 212 $this->assertArrayHasKey( $setting->id, $invalid_settings ); 213 $this->assertInstanceOf( 'WP_Error', $invalid_settings[ $setting->id ] ); 214 $error = $invalid_settings[ $setting->id ]; 215 $this->assertEquals( 'invalid_value_in_sanitize', $error->get_error_code() ); 216 $this->assertEquals( array( 'source' => 'filter_customize_sanitize_foo' ), $error->get_error_data() ); 217 218 $this->manager->set_post_value( 'foo', 'return_null_in_sanitize' ); 219 $invalid_settings = $this->manager->validate_setting_values( $this->manager->unsanitized_post_values() ); 220 $this->assertCount( 1, $invalid_settings ); 221 $this->assertArrayHasKey( $setting->id, $invalid_settings ); 222 $this->assertInstanceOf( 'WP_Error', $invalid_settings[ $setting->id ] ); 223 $this->assertNull( $invalid_settings[ $setting->id ]->get_error_data() ); 224 225 $post_value = '<script>evil</script>'; 226 $this->manager->set_post_value( 'foo', $post_value ); 227 $invalid_settings = $this->manager->validate_setting_values( $this->manager->unsanitized_post_values() ); 228 $this->assertCount( 1, $invalid_settings ); 229 $this->assertArrayHasKey( $setting->id, $invalid_settings ); 230 $this->assertInstanceOf( 'WP_Error', $invalid_settings[ $setting->id ] ); 231 $error = $invalid_settings[ $setting->id ]; 232 $this->assertEquals( 'invalid_value_in_validate', $error->get_error_code() ); 233 $this->assertEquals( array( 'source' => 'filter_customize_validate_foo' ), $error->get_error_data() ); 126 234 } 127 235 … … 417 525 $this->assertContains( 'var _wpCustomizeSettings =', $content ); 418 526 $this->assertContains( '"blogname"', $content ); 527 $this->assertContains( '"type":"option"', $content ); 419 528 $this->assertContains( '_wpCustomizeSettings.controls', $content ); 420 529 $this->assertContains( '_wpCustomizeSettings.settings', $content );
Note: See TracChangeset
for help on using the changeset viewer.