http-cookie 1.0.0.pre8 → 1.0.0.pre9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +2 -2
- data/lib/http/cookie.rb +58 -21
- data/lib/http/cookie/version.rb +1 -1
- data/lib/http/cookie_jar.rb +18 -18
- data/test/test_http_cookie.rb +84 -16
- data/test/test_http_cookie_jar.rb +1 -3
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 53cb4c9e7487abb35fc5566cadc3c2f8afbea819
         | 
| 4 | 
            +
              data.tar.gz: dfa1e8393cc3f71df62e55984196046788942c6d
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 8e232e6d966c1fb49b9e7e6ab50456b955d4b377962f71d570531aa622200ef94031ec602bddea8d2c475e51b20240c85306ff6dc9b874c27453acacaf0ae9cd
         | 
| 7 | 
            +
              data.tar.gz: 188e45b944168d04516707ad503710b938acae9f50a50d61d3351e6e12e936fba53cc0ce26e7ee80b370e18809df95e91160f12ef4c73d760ad4202a8eaa9cb6
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -1,8 +1,8 @@ | |
| 1 | 
            -
            require  | 
| 1 | 
            +
            require 'bundler/gem_tasks'
         | 
| 2 2 | 
             
            require 'rake/testtask'
         | 
| 3 3 |  | 
| 4 4 | 
             
            Rake::TestTask.new(:test) do |test|
         | 
| 5 | 
            -
              test.ruby_opts << '-r./test/simplecov_start.rb' if  | 
| 5 | 
            +
              test.ruby_opts << '-r./test/simplecov_start.rb' if RUBY_VERSION >= '1.9'
         | 
| 6 6 | 
             
              test.pattern = 'test/**/test_*.rb'
         | 
| 7 7 | 
             
              test.verbose = true
         | 
| 8 8 | 
             
            end
         | 
    
        data/lib/http/cookie.rb
    CHANGED
    
    | @@ -14,7 +14,14 @@ if RUBY_VERSION < "1.9.3" | |
| 14 14 | 
             
                URI(URI(''))
         | 
| 15 15 | 
             
              rescue
         | 
| 16 16 | 
             
                def URI(url) # :nodoc:
         | 
| 17 | 
            -
                   | 
| 17 | 
            +
                  case url
         | 
| 18 | 
            +
                  when URI
         | 
| 19 | 
            +
                    url
         | 
| 20 | 
            +
                  when String
         | 
| 21 | 
            +
                    URI.parse(url)
         | 
| 22 | 
            +
                  else
         | 
| 23 | 
            +
                    raise ArgumentError, 'bad argument (expected URI object or URI string)'
         | 
| 24 | 
            +
                  end
         | 
| 18 25 | 
             
                end
         | 
| 19 26 | 
             
              end
         | 
| 20 27 | 
             
            end
         | 
| @@ -102,7 +109,10 @@ class HTTP::Cookie | |
| 102 109 | 
             
              # The origin of the cookie.
         | 
| 103 110 | 
             
              #
         | 
| 104 111 | 
             
              # Setting this will initialize the #domain and #path attribute
         | 
| 105 | 
            -
              # values if unknown yet.
         | 
| 112 | 
            +
              # values if unknown yet.  If the cookie already has a domain value
         | 
| 113 | 
            +
              # set, it is checked against the origin URL to see if the origin is
         | 
| 114 | 
            +
              # allowed to issue a cookie of the domain, and ArgumentError is
         | 
| 115 | 
            +
              # raised if the check fails.
         | 
| 106 116 | 
             
              #
         | 
| 107 117 | 
             
              # :attr_accessor: origin
         | 
| 108 118 |  | 
| @@ -310,14 +320,9 @@ class HTTP::Cookie | |
| 310 320 | 
             
                        end
         | 
| 311 321 | 
             
                      }
         | 
| 312 322 |  | 
| 313 | 
            -
                       | 
| 314 | 
            -
             | 
| 315 | 
            -
             | 
| 316 | 
            -
                        rescue => e
         | 
| 317 | 
            -
                          logger.warn("Invalid cookie for the origin: #{origin} (#{e})") if logger
         | 
| 318 | 
            -
                          next
         | 
| 319 | 
            -
                        end
         | 
| 320 | 
            -
                      end
         | 
| 323 | 
            +
                      cookie.origin = origin
         | 
| 324 | 
            +
             | 
| 325 | 
            +
                      cookie.acceptable? or next
         | 
| 321 326 |  | 
| 322 327 | 
             
                      yield cookie if block_given?
         | 
| 323 328 |  | 
| @@ -363,15 +368,28 @@ class HTTP::Cookie | |
| 363 368 |  | 
| 364 369 | 
             
              # See #domain.
         | 
| 365 370 | 
             
              def domain=(domain)
         | 
| 366 | 
            -
                 | 
| 371 | 
            +
                case domain
         | 
| 372 | 
            +
                when nil
         | 
| 373 | 
            +
                  @for_domain = false
         | 
| 374 | 
            +
                  if @origin
         | 
| 375 | 
            +
                    @domain_name = DomainName.new(@origin.host)
         | 
| 376 | 
            +
                    @domain = @domain_name.hostname
         | 
| 377 | 
            +
                  else
         | 
| 378 | 
            +
                    @domain_name = @domain = nil
         | 
| 379 | 
            +
                  end
         | 
| 380 | 
            +
                  return nil
         | 
| 381 | 
            +
                when DomainName
         | 
| 367 382 | 
             
                  @domain_name = domain
         | 
| 368 383 | 
             
                else
         | 
| 369 384 | 
             
                  domain = check_string_type(domain) or
         | 
| 370 385 | 
             
                    raise TypeError, "#{domain.class} is not a String"
         | 
| 371 386 | 
             
                  if domain.start_with?('.')
         | 
| 372 | 
            -
                     | 
| 387 | 
            +
                    for_domain = true
         | 
| 373 388 | 
             
                    domain = domain[1..-1]
         | 
| 374 389 | 
             
                  end
         | 
| 390 | 
            +
                  if domain.empty?
         | 
| 391 | 
            +
                    return self.domain = nil
         | 
| 392 | 
            +
                  end
         | 
| 375 393 | 
             
                  # Do we really need to support this?
         | 
| 376 394 | 
             
                  if domain.match(/\A([^:]+):[0-9]+\z/)
         | 
| 377 395 | 
             
                    domain = $1
         | 
| @@ -379,8 +397,10 @@ class HTTP::Cookie | |
| 379 397 | 
             
                  @domain_name = DomainName.new(domain)
         | 
| 380 398 | 
             
                end
         | 
| 381 399 | 
             
                # RFC 6265 5.3 5.
         | 
| 382 | 
            -
                if  | 
| 400 | 
            +
                if domain_name.domain.nil? # a public suffix or IP address
         | 
| 383 401 | 
             
                  @for_domain = false
         | 
| 402 | 
            +
                else
         | 
| 403 | 
            +
                  @for_domain = for_domain unless for_domain.nil?
         | 
| 384 404 | 
             
                end
         | 
| 385 405 | 
             
                @domain = @domain_name.hostname
         | 
| 386 406 | 
             
              end
         | 
| @@ -419,10 +439,10 @@ class HTTP::Cookie | |
| 419 439 | 
             
                @origin.nil? or
         | 
| 420 440 | 
             
                  raise ArgumentError, "origin cannot be changed once it is set"
         | 
| 421 441 | 
             
                origin = URI(origin)
         | 
| 422 | 
            -
                 | 
| 423 | 
            -
             | 
| 424 | 
            -
             | 
| 425 | 
            -
             | 
| 442 | 
            +
                if URI::HTTP === origin
         | 
| 443 | 
            +
                  self.domain ||= origin.host
         | 
| 444 | 
            +
                  self.path   ||= (origin + './').path
         | 
| 445 | 
            +
                end
         | 
| 426 446 | 
             
                @origin = origin
         | 
| 427 447 | 
             
              end
         | 
| 428 448 |  | 
| @@ -514,22 +534,39 @@ class HTTP::Cookie | |
| 514 534 | 
             
              attr_accessor :accessed_at
         | 
| 515 535 |  | 
| 516 536 | 
             
              # Tests if it is OK to accept this cookie if it is sent from a given
         | 
| 517 | 
            -
              # `uri`.
         | 
| 537 | 
            +
              # URI/URL, `uri`.
         | 
| 518 538 | 
             
              def acceptable_from_uri?(uri)
         | 
| 519 539 | 
             
                uri = URI(uri)
         | 
| 520 540 | 
             
                return false unless URI::HTTP === uri && uri.host
         | 
| 521 541 | 
             
                host = DomainName.new(uri.host)
         | 
| 522 542 |  | 
| 523 543 | 
             
                # RFC 6265 5.3
         | 
| 524 | 
            -
                 | 
| 525 | 
            -
             | 
| 526 | 
            -
             | 
| 544 | 
            +
                case
         | 
| 545 | 
            +
                when host.hostname == @domain
         | 
| 546 | 
            +
                  true
         | 
| 547 | 
            +
                when @for_domain  # !host-only-flag
         | 
| 527 548 | 
             
                  host.cookie_domain?(@domain_name)
         | 
| 528 549 | 
             
                else
         | 
| 529 550 | 
             
                  @domain.nil?
         | 
| 530 551 | 
             
                end
         | 
| 531 552 | 
             
              end
         | 
| 532 553 |  | 
| 554 | 
            +
              # Tests if it is OK to accept this cookie considering its origin.
         | 
| 555 | 
            +
              # If either domain or path is missing, raises ArgumentError.  If
         | 
| 556 | 
            +
              # origin is missing, returns true.
         | 
| 557 | 
            +
              def acceptable?
         | 
| 558 | 
            +
                case
         | 
| 559 | 
            +
                when @domain.nil?
         | 
| 560 | 
            +
                  raise ArgumentError, "domain is missing"
         | 
| 561 | 
            +
                when @path.nil?
         | 
| 562 | 
            +
                  raise ArgumentError, "path is missing"
         | 
| 563 | 
            +
                when @origin.nil?
         | 
| 564 | 
            +
                  true
         | 
| 565 | 
            +
                else
         | 
| 566 | 
            +
                  acceptable_from_uri?(@origin)
         | 
| 567 | 
            +
                end
         | 
| 568 | 
            +
              end
         | 
| 569 | 
            +
             | 
| 533 570 | 
             
              # Tests if it is OK to send this cookie to a given `uri`.  A runtime
         | 
| 534 571 | 
             
              # error is raised if the cookie's domain is unknown.
         | 
| 535 572 | 
             
              def valid_for_uri?(uri)
         | 
    
        data/lib/http/cookie/version.rb
    CHANGED
    
    
    
        data/lib/http/cookie_jar.rb
    CHANGED
    
    | @@ -45,17 +45,17 @@ class HTTP::CookieJar | |
| 45 45 | 
             
                @store = other.instance_eval { @store.dup }
         | 
| 46 46 | 
             
              end
         | 
| 47 47 |  | 
| 48 | 
            -
              # Adds a cookie to the jar  | 
| 49 | 
            -
              #  | 
| 50 | 
            -
              # ArgumentError is raised.
         | 
| 48 | 
            +
              # Adds a cookie to the jar if it is acceptable, and returns self in
         | 
| 49 | 
            +
              # any case.  A given cookie must have domain and path attributes
         | 
| 50 | 
            +
              # set, or ArgumentError is raised.
         | 
| 51 51 | 
             
              #
         | 
| 52 52 | 
             
              # ### Compatibility Note for Mechanize::Cookie users
         | 
| 53 53 | 
             
              #
         | 
| 54 54 | 
             
              # In HTTP::Cookie, each cookie object can store its origin URI
         | 
| 55 55 | 
             
              # (cf. #origin).  While the origin URI of a cookie can be set
         | 
| 56 56 | 
             
              # manually by #origin=, one is typically given in its generation.
         | 
| 57 | 
            -
              # To be more specific, HTTP::Cookie.new  | 
| 58 | 
            -
              #  | 
| 57 | 
            +
              # To be more specific, HTTP::Cookie.new takes an `:origin` option
         | 
| 58 | 
            +
              # and HTTP::Cookie.parse takes one via the second argument.
         | 
| 59 59 | 
             
              #
         | 
| 60 60 | 
             
              #   `HTTP::Cookie.parse`.  Compare these:
         | 
| 61 61 | 
             
              #
         | 
| @@ -64,14 +64,10 @@ class HTTP::CookieJar | |
| 64 64 | 
             
              #       jar.add!(cookie)    # no acceptance check is performed
         | 
| 65 65 | 
             
              #
         | 
| 66 66 | 
             
              #       # HTTP::Cookie
         | 
| 67 | 
            -
              #       jar.origin = origin | 
| 67 | 
            +
              #       jar.origin = origin
         | 
| 68 68 | 
             
              #       jar.add(cookie)     # acceptance check is performed
         | 
| 69 69 | 
             
              def add(cookie)
         | 
| 70 | 
            -
                 | 
| 71 | 
            -
                  raise ArgumentError, "a cookie with unknown domain or path cannot be added"
         | 
| 72 | 
            -
                end
         | 
| 73 | 
            -
             | 
| 74 | 
            -
                @store.add(cookie)
         | 
| 70 | 
            +
                @store.add(cookie) if cookie.acceptable?
         | 
| 75 71 | 
             
                self
         | 
| 76 72 | 
             
              end
         | 
| 77 73 | 
             
              alias << add
         | 
| @@ -136,7 +132,11 @@ class HTTP::CookieJar | |
| 136 132 | 
             
                    yield cookie
         | 
| 137 133 | 
             
                  }
         | 
| 138 134 | 
             
                else
         | 
| 139 | 
            -
                  HTTP::Cookie.parse(set_cookie, origin, options | 
| 135 | 
            +
                  HTTP::Cookie.parse(set_cookie, origin, options) { |cookie|
         | 
| 136 | 
            +
                    add(cookie)
         | 
| 137 | 
            +
                  }
         | 
| 138 | 
            +
                  # XXX: ruby 1.8 fails to call super from a proc'ized method
         | 
| 139 | 
            +
                  # HTTP::Cookie.parse(set_cookie, origin, options, &method(:add)
         | 
| 140 140 | 
             
                end
         | 
| 141 141 | 
             
              end
         | 
| 142 142 |  | 
| @@ -145,8 +145,8 @@ class HTTP::CookieJar | |
| 145 145 | 
             
              #   jar.save(filename_or_io, format = :yaml, **options)
         | 
| 146 146 | 
             
              #
         | 
| 147 147 | 
             
              # Saves the cookie jar into a file or an IO in the format specified
         | 
| 148 | 
            -
              # and  | 
| 149 | 
            -
              # as an IO, or taken as a filename otherwise.
         | 
| 148 | 
            +
              # and returns self.  If a given object responds to #write it is
         | 
| 149 | 
            +
              # taken as an IO, or taken as a filename otherwise.
         | 
| 150 150 | 
             
              #
         | 
| 151 151 | 
             
              # Available option keywords are below:
         | 
| 152 152 | 
             
              #
         | 
| @@ -211,8 +211,8 @@ class HTTP::CookieJar | |
| 211 211 | 
             
              #   jar.load(filename_or_io, format = :yaml, **options)
         | 
| 212 212 | 
             
              #
         | 
| 213 213 | 
             
              # Loads cookies recorded in a file or an IO in the format specified
         | 
| 214 | 
            -
              # into the jar and  | 
| 215 | 
            -
              # it is taken as an IO, or taken as a filename otherwise.
         | 
| 214 | 
            +
              # into the jar and returns self.  If a given object responds to
         | 
| 215 | 
            +
              # #read it is taken as an IO, or taken as a filename otherwise.
         | 
| 216 216 | 
             
              #
         | 
| 217 217 | 
             
              # Available option keywords are below:
         | 
| 218 218 | 
             
              #
         | 
| @@ -264,13 +264,13 @@ class HTTP::CookieJar | |
| 264 264 | 
             
                self
         | 
| 265 265 | 
             
              end
         | 
| 266 266 |  | 
| 267 | 
            -
              # Clears the cookie jar and  | 
| 267 | 
            +
              # Clears the cookie jar and returns self.
         | 
| 268 268 | 
             
              def clear
         | 
| 269 269 | 
             
                @store.clear
         | 
| 270 270 | 
             
                self
         | 
| 271 271 | 
             
              end
         | 
| 272 272 |  | 
| 273 | 
            -
              # Removes expired cookies and  | 
| 273 | 
            +
              # Removes expired cookies and returns self.
         | 
| 274 274 | 
             
              def cleanup(session = false)
         | 
| 275 275 | 
             
                @store.cleanup session
         | 
| 276 276 | 
             
                self
         | 
    
        data/test/test_http_cookie.rb
    CHANGED
    
    | @@ -450,6 +450,9 @@ class TestHTTPCookie < Test::Unit::TestCase | |
| 450 450 | 
             
                assert_equal 'key', cookie.name
         | 
| 451 451 | 
             
                assert_equal 'value', cookie.value
         | 
| 452 452 | 
             
                assert_equal nil, cookie.expires
         | 
| 453 | 
            +
                assert_raises(ArgumentError) {
         | 
| 454 | 
            +
                  cookie.acceptable?
         | 
| 455 | 
            +
                }
         | 
| 453 456 |  | 
| 454 457 | 
             
                # Minimum unit for the expires attribute is second
         | 
| 455 458 | 
             
                expires = Time.at((Time.now + 3600).to_i)
         | 
| @@ -458,24 +461,39 @@ class TestHTTPCookie < Test::Unit::TestCase | |
| 458 461 | 
             
                assert_equal 'key', cookie.name
         | 
| 459 462 | 
             
                assert_equal 'value', cookie.value
         | 
| 460 463 | 
             
                assert_equal expires, cookie.expires
         | 
| 464 | 
            +
                assert_raises(ArgumentError) {
         | 
| 465 | 
            +
                  cookie.acceptable?
         | 
| 466 | 
            +
                }
         | 
| 461 467 |  | 
| 462 468 | 
             
                cookie = HTTP::Cookie.new(:value => 'value', :name => 'key', :expires => expires.dup)
         | 
| 463 469 | 
             
                assert_equal 'key', cookie.name
         | 
| 464 470 | 
             
                assert_equal 'value', cookie.value
         | 
| 465 471 | 
             
                assert_equal expires, cookie.expires
         | 
| 466 472 | 
             
                assert_equal false, cookie.for_domain?
         | 
| 473 | 
            +
                assert_raises(ArgumentError) {
         | 
| 474 | 
            +
                  # domain and path are missing
         | 
| 475 | 
            +
                  cookie.acceptable?
         | 
| 476 | 
            +
                }
         | 
| 467 477 |  | 
| 468 478 | 
             
                cookie = HTTP::Cookie.new(:value => 'value', :name => 'key', :expires => expires.dup, :domain => '.example.com')
         | 
| 469 479 | 
             
                assert_equal 'key', cookie.name
         | 
| 470 480 | 
             
                assert_equal 'value', cookie.value
         | 
| 471 481 | 
             
                assert_equal expires, cookie.expires
         | 
| 472 482 | 
             
                assert_equal true, cookie.for_domain?
         | 
| 483 | 
            +
                assert_raises(ArgumentError) {
         | 
| 484 | 
            +
                  # path is missing
         | 
| 485 | 
            +
                  cookie.acceptable?
         | 
| 486 | 
            +
                }
         | 
| 473 487 |  | 
| 474 488 | 
             
                cookie = HTTP::Cookie.new(:value => 'value', :name => 'key', :expires => expires.dup, :domain => 'example.com', :for_domain => false)
         | 
| 475 489 | 
             
                assert_equal 'key', cookie.name
         | 
| 476 490 | 
             
                assert_equal 'value', cookie.value
         | 
| 477 491 | 
             
                assert_equal expires, cookie.expires
         | 
| 478 492 | 
             
                assert_equal false, cookie.for_domain?
         | 
| 493 | 
            +
                assert_raises(ArgumentError) {
         | 
| 494 | 
            +
                  # path is missing
         | 
| 495 | 
            +
                  cookie.acceptable?
         | 
| 496 | 
            +
                }
         | 
| 479 497 |  | 
| 480 498 | 
             
                cookie = HTTP::Cookie.new(:value => 'value', :name => 'key', :expires => expires.dup, :domain => 'example.org', :for_domain? => true)
         | 
| 481 499 | 
             
                assert_equal 'key', cookie.name
         | 
| @@ -483,6 +501,10 @@ class TestHTTPCookie < Test::Unit::TestCase | |
| 483 501 | 
             
                assert_equal expires, cookie.expires
         | 
| 484 502 | 
             
                assert_equal 'example.org', cookie.domain
         | 
| 485 503 | 
             
                assert_equal true, cookie.for_domain?
         | 
| 504 | 
            +
                assert_raises(ArgumentError) {
         | 
| 505 | 
            +
                  # path is missing
         | 
| 506 | 
            +
                  cookie.acceptable?
         | 
| 507 | 
            +
                }
         | 
| 486 508 |  | 
| 487 509 | 
             
                assert_raises(ArgumentError) { HTTP::Cookie.new(:name => 'name') }
         | 
| 488 510 | 
             
                assert_raises(ArgumentError) { HTTP::Cookie.new(:value => 'value') }
         | 
| @@ -588,33 +610,49 @@ class TestHTTPCookie < Test::Unit::TestCase | |
| 588 610 | 
             
                  HTTP::Cookie.new(cookie_values(:value => 'bar')))
         | 
| 589 611 | 
             
              end
         | 
| 590 612 |  | 
| 591 | 
            -
              def  | 
| 613 | 
            +
              def test_new_tld_domain
         | 
| 592 614 | 
             
                url = URI 'http://rubyforge.org/'
         | 
| 593 615 |  | 
| 594 | 
            -
                 | 
| 595 | 
            -
             | 
| 596 | 
            -
                 | 
| 597 | 
            -
                 | 
| 598 | 
            -
             | 
| 599 | 
            -
                 | 
| 616 | 
            +
                tld_cookie1 = HTTP::Cookie.new(cookie_values(:domain => 'org', :origin => url))
         | 
| 617 | 
            +
                assert_equal false, tld_cookie1.for_domain?
         | 
| 618 | 
            +
                assert_equal 'org', tld_cookie1.domain
         | 
| 619 | 
            +
                assert_equal false, tld_cookie1.acceptable?
         | 
| 620 | 
            +
             | 
| 621 | 
            +
                tld_cookie2 = HTTP::Cookie.new(cookie_values(:domain => '.org', :origin => url))
         | 
| 622 | 
            +
                assert_equal false, tld_cookie1.for_domain?
         | 
| 623 | 
            +
                assert_equal 'org', tld_cookie2.domain
         | 
| 624 | 
            +
                assert_equal false, tld_cookie2.acceptable?
         | 
| 625 | 
            +
              end
         | 
| 626 | 
            +
             | 
| 627 | 
            +
              def test_new_tld_domain_from_tld
         | 
| 628 | 
            +
                url = URI 'http://org/'
         | 
| 629 | 
            +
             | 
| 630 | 
            +
                tld_cookie1 = HTTP::Cookie.new(cookie_values(:domain => 'org', :origin => url))
         | 
| 631 | 
            +
                assert_equal false, tld_cookie1.for_domain?
         | 
| 632 | 
            +
                assert_equal 'org', tld_cookie1.domain
         | 
| 633 | 
            +
                assert_equal true, tld_cookie1.acceptable?
         | 
| 634 | 
            +
             | 
| 635 | 
            +
                tld_cookie2 = HTTP::Cookie.new(cookie_values(:domain => '.org', :origin => url))
         | 
| 636 | 
            +
                assert_equal false, tld_cookie1.for_domain?
         | 
| 637 | 
            +
                assert_equal 'org', tld_cookie2.domain
         | 
| 638 | 
            +
                assert_equal true, tld_cookie2.acceptable?
         | 
| 600 639 | 
             
              end
         | 
| 601 640 |  | 
| 602 641 | 
             
              def test_fall_back_rules_for_local_domains
         | 
| 603 642 | 
             
                url = URI 'http://www.example.local'
         | 
| 604 643 |  | 
| 605 | 
            -
                 | 
| 606 | 
            -
             | 
| 607 | 
            -
                }
         | 
| 644 | 
            +
                tld_cookie = HTTP::Cookie.new(cookie_values(:domain => '.local', :origin => url))
         | 
| 645 | 
            +
                assert_equal false, tld_cookie.acceptable?
         | 
| 608 646 |  | 
| 609 647 | 
             
                sld_cookie = HTTP::Cookie.new(cookie_values(:domain => '.example.local', :origin => url))
         | 
| 648 | 
            +
                assert_equal true, sld_cookie.acceptable?
         | 
| 610 649 | 
             
              end
         | 
| 611 650 |  | 
| 612 651 | 
             
              def test_new_rejects_cookies_with_ipv4_address_subdomain
         | 
| 613 652 | 
             
                url = URI 'http://192.168.0.1/'
         | 
| 614 653 |  | 
| 615 | 
            -
                 | 
| 616 | 
            -
             | 
| 617 | 
            -
                }
         | 
| 654 | 
            +
                cookie = HTTP::Cookie.new(cookie_values(:domain => '.0.1', :origin => url))
         | 
| 655 | 
            +
                assert_equal false, cookie.acceptable?
         | 
| 618 656 | 
             
              end
         | 
| 619 657 |  | 
| 620 658 | 
             
              def test_path
         | 
| @@ -669,17 +707,39 @@ class TestHTTPCookie < Test::Unit::TestCase | |
| 669 707 | 
             
                  end
         | 
| 670 708 | 
             
                }
         | 
| 671 709 | 
             
                assert 'example.com', cookie.domain
         | 
| 710 | 
            +
             | 
| 711 | 
            +
                url = URI 'http://rubyforge.org/'
         | 
| 712 | 
            +
             | 
| 713 | 
            +
                [nil, '', '.'].each { |d|
         | 
| 714 | 
            +
                  cookie = HTTP::Cookie.new('Foo', 'Bar', :path => '/')
         | 
| 715 | 
            +
                  cookie.domain = d
         | 
| 716 | 
            +
                  assert_equal nil, cookie.domain, "domain=#{d.inspect}"
         | 
| 717 | 
            +
                  assert_equal nil, cookie.domain_name, "domain=#{d.inspect}"
         | 
| 718 | 
            +
                  assert_raises(ArgumentError) {
         | 
| 719 | 
            +
                    cookie.acceptable?
         | 
| 720 | 
            +
                  }
         | 
| 721 | 
            +
             | 
| 722 | 
            +
                  cookie = HTTP::Cookie.new('Foo', 'Bar', :path => '/')
         | 
| 723 | 
            +
                  cookie.origin = url
         | 
| 724 | 
            +
                  cookie.domain = d
         | 
| 725 | 
            +
                  assert_equal url.host, cookie.domain, "domain=#{d.inspect}"
         | 
| 726 | 
            +
                  assert_equal true, cookie.acceptable?, "domain=#{d.inspect}"
         | 
| 727 | 
            +
                }
         | 
| 672 728 | 
             
              end
         | 
| 673 729 |  | 
| 674 730 | 
             
              def test_origin=
         | 
| 675 731 | 
             
                url = URI.parse('http://example.com/path/')
         | 
| 676 732 |  | 
| 677 733 | 
             
                cookie = HTTP::Cookie.new('a', 'b')
         | 
| 734 | 
            +
                assert_raises(ArgumentError) {
         | 
| 735 | 
            +
                  cookie.origin = 123
         | 
| 736 | 
            +
                }
         | 
| 678 737 | 
             
                cookie.origin = url
         | 
| 679 738 | 
             
                assert_equal '/path/', cookie.path
         | 
| 680 739 | 
             
                assert_equal 'example.com', cookie.domain
         | 
| 681 740 | 
             
                assert_equal false, cookie.for_domain
         | 
| 682 741 | 
             
                assert_raises(ArgumentError) {
         | 
| 742 | 
            +
                  # cannot change the origin once set
         | 
| 683 743 | 
             
                  cookie.origin = URI.parse('http://www.example.com/')
         | 
| 684 744 | 
             
                }
         | 
| 685 745 |  | 
| @@ -689,13 +749,21 @@ class TestHTTPCookie < Test::Unit::TestCase | |
| 689 749 | 
             
                assert_equal 'example.com', cookie.domain
         | 
| 690 750 | 
             
                assert_equal true, cookie.for_domain
         | 
| 691 751 | 
             
                assert_raises(ArgumentError) {
         | 
| 752 | 
            +
                  # cannot change the origin once set
         | 
| 692 753 | 
             
                  cookie.origin = URI.parse('http://www.example.com/')
         | 
| 693 754 | 
             
                }
         | 
| 694 755 |  | 
| 695 756 | 
             
                cookie = HTTP::Cookie.new('a', 'b', :domain => '.example.com')
         | 
| 696 | 
            -
                 | 
| 697 | 
            -
             | 
| 698 | 
            -
             | 
| 757 | 
            +
                cookie.origin = URI.parse('http://example.org/')
         | 
| 758 | 
            +
                assert_equal false, cookie.acceptable?
         | 
| 759 | 
            +
             | 
| 760 | 
            +
                cookie = HTTP::Cookie.new('a', 'b', :domain => '.example.com')
         | 
| 761 | 
            +
                cookie.origin = 'file:///tmp/test.html'
         | 
| 762 | 
            +
                assert_equal nil, cookie.path
         | 
| 763 | 
            +
             | 
| 764 | 
            +
                cookie = HTTP::Cookie.new('a', 'b', :domain => '.example.com', :path => '/')
         | 
| 765 | 
            +
                cookie.origin = 'file:///tmp/test.html'
         | 
| 766 | 
            +
                assert_equal false, cookie.acceptable?
         | 
| 699 767 | 
             
              end
         | 
| 700 768 |  | 
| 701 769 | 
             
              def test_acceptable_from_uri?
         | 
| @@ -284,9 +284,7 @@ module TestHTTPCookieJar | |
| 284 284 | 
             
                def test_cookies_no_host
         | 
| 285 285 | 
             
                  url = URI 'file:///path/'
         | 
| 286 286 |  | 
| 287 | 
            -
                   | 
| 288 | 
            -
                    @jar.add(HTTP::Cookie.new(cookie_values(:origin => url)))
         | 
| 289 | 
            -
                  }
         | 
| 287 | 
            +
                  @jar.add(HTTP::Cookie.new(cookie_values(:origin => url)))
         | 
| 290 288 |  | 
| 291 289 | 
             
                  assert_equal(0, @jar.cookies(url).length)
         | 
| 292 290 | 
             
                end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: http-cookie
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0.0. | 
| 4 | 
            +
              version: 1.0.0.pre9
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Akinori MUSHA
         | 
| @@ -11,7 +11,7 @@ authors: | |
| 11 11 | 
             
            autorequire: 
         | 
| 12 12 | 
             
            bindir: bin
         | 
| 13 13 | 
             
            cert_chain: []
         | 
| 14 | 
            -
            date: 2013-03 | 
| 14 | 
            +
            date: 2013-04-03 00:00:00.000000000 Z
         | 
| 15 15 | 
             
            dependencies:
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 17 17 | 
             
              name: domain_name
         |