WordPress.org

Make WordPress Core

Ticket #37768: 37768.diff

File 37768.diff, 1.7 KB (added by swissspidy, 4 years ago)
  • src/wp-includes/class-http.php

    diff --git src/wp-includes/class-http.php src/wp-includes/class-http.php
    index d3a8937..976acec 100644
    class WP_Http { 
    433433                foreach ( $cookies as $name => $value ) {
    434434                        if ( $value instanceof WP_Http_Cookie ) {
    435435                                $cookie_jar[ $value->name ] = new Requests_Cookie( $value->name, $value->value, $value->get_attributes() );
    436                         } elseif ( is_string( $value ) ) {
    437                                 $cookie_jar[ $name ] = new Requests_Cookie( $name, $value );
     436                        } elseif ( is_scalar( $value ) ) {
     437                                $cookie_jar[ $name ] = new Requests_Cookie( $name, (string) $value );
    438438                        }
    439439                }
    440440
  • tests/phpunit/tests/http/http.php

    diff --git tests/phpunit/tests/http/http.php tests/phpunit/tests/http/http.php
    index 74eda29..ed0b9ee 100644
    class Tests_HTTP_HTTP extends WP_UnitTestCase { 
    118118                $this->assertEquals( array_keys( $wp_header_to_desc ), array_values( $constants ) );
    119119
    120120        }
     121
     122        /**
     123         * @ticket 37768
     124         */
     125        public function test_normalize_cookies_scalar_values() {
     126                $http = _wp_http_get_object();
     127
     128                $cookies = array(
     129                        'x'   => 'foo',
     130                        'y'   => 2,
     131                        'z'   => 0.45,
     132                        'foo' => array( 'bar' ),
     133                );
     134
     135                $cookie_jar = $http->normalize_cookies( array(
     136                        'x'   => 'foo',
     137                        'y'   => 2,
     138                        'z'   => 0.45,
     139                        'foo' => array( 'bar' ),
     140                ) );
     141
     142                $this->assertInstanceOf( 'Requests_Cookie_Jar', $cookie_jar );
     143
     144                foreach( array_keys( $cookies ) as $cookie ) {
     145                        if ( 'foo' === $cookie ) {
     146                                $this->assertFalse( isset( $cookie_jar[ $cookie ] ) );
     147                        } else {
     148                                $this->assertInstanceOf( 'Requests_Cookie', $cookie_jar[ $cookie ] );
     149                        }
     150                }
     151        }
    121152}