rack-test 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98bb9656717c512790c5f65b20a8f0cfc7c2f14e4d9d98d5069e6e5910b256e5
4
- data.tar.gz: 6305cac1636eef820a082a1431cef2bc24b445b1f902b65c550f976ba84f08e6
3
+ metadata.gz: 2c648ce9c6c053f9168116fa0ff70ac3ce4d6944326cca519fc2f7f1bb3c4f1d
4
+ data.tar.gz: 8c8d8c7b5c41facc400a1f95533af2e94c7c6eb42ed55ba92b5e38689134e3d9
5
5
  SHA512:
6
- metadata.gz: 420e60a08ec2fa5fd92a358d28c0b17e0a943eb30962756360185091753bdd4eb55b7b58005aa84bb1907cfb7e8129166d1aed6282596f45b8b0f42dd1003306
7
- data.tar.gz: b7446d71bf41a0f69b9812e867f7b472488ee0534d6206435b77e8266617486687044a814dd6c085003b823e0e349c83b1ca47ea296f1f23346957d66cbed0bc
6
+ metadata.gz: 5414edd21a3f105513f6068d799fd25fd61672dcd50d0eedbb04b8e05e5224f62f9fcd5014456c99b17ae02c86e38e16077cce27b2c04bcc285214bb49213d45
7
+ data.tar.gz: 5f21ac1f5f8ee2f82d6c3ce65e0cb88ed66e055178c120b935be24a838ee1fc126d1a6070ea4833626e314d631c052748eccdce66db801bfafda01d7bc9c2b42
data/History.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## 2.2.0 / 2024-12-23
2
+
3
+ * Bug fixes:
4
+ * `Rack::Test::Cookie` now parses cookie parameters using a
5
+ case-insensitive approach (Guillaume Malette #349)
6
+
7
+ * Minor enhancements:
8
+ * Arrays of cookies containing a blank cookie are now handled
9
+ correctly when processing responses. (Martin Emde #343)
10
+ * `Rack::Test::UploadedFile` no longer uses a finalizer for named
11
+ paths to close and unlink the created Tempfile. Tempfile itself
12
+ uses a finalizer to close and unlink itself, so there is no
13
+ reason for `Rack::Test::UploadedFile` to do so (Jeremy Evans #338)
14
+
1
15
  ## 2.1.0 / 2023-03-14
2
16
 
3
17
  * Breaking changes:
@@ -12,7 +12,7 @@ module Rack
12
12
 
13
13
  # The name of the cookie, will be a string
14
14
  attr_reader :name
15
-
15
+
16
16
  # The value of the cookie, will be a string or nil if there is no value.
17
17
  attr_reader :value
18
18
 
@@ -28,7 +28,7 @@ module Rack
28
28
  @raw, options = raw.split(/[;,] */n, 2)
29
29
 
30
30
  @name, @value = parse_query(@raw, ';').to_a.first
31
- @options = parse_query(options, ';')
31
+ @options = Hash[parse_query(options, ';').map { |k, v| [k.downcase, v] }]
32
32
 
33
33
  if domain = @options['domain']
34
34
  @exact_domain_match = false
@@ -69,7 +69,7 @@ module Rack
69
69
  # Whether the cookie has the httponly flag, indicating it is not available via
70
70
  # a javascript API.
71
71
  def http_only?
72
- @options.key?('HttpOnly') || @options.key?('httponly')
72
+ @options.key?('httponly')
73
73
  end
74
74
 
75
75
  # The explicit or implicit path for the cookie.
@@ -93,9 +93,8 @@ module Rack
93
93
 
94
94
  uri.host = @default_host if uri.host.nil?
95
95
 
96
- real_domain = domain =~ /^\./ ? domain[1..-1] : domain
97
96
  !!((!secure? || (secure? && uri.scheme == 'https')) &&
98
- uri.host =~ Regexp.new("#{'^' if @exact_domain_match}#{Regexp.escape(real_domain)}$", Regexp::IGNORECASE))
97
+ uri.host =~ Regexp.new("#{'^' if @exact_domain_match}#{Regexp.escape(domain)}$", Regexp::IGNORECASE))
99
98
  end
100
99
 
101
100
  # Cookies that do not match the URI will not be sent in requests to the URI.
@@ -110,11 +109,13 @@ module Rack
110
109
 
111
110
  # A hash of cookie options, including the cookie value, but excluding the cookie name.
112
111
  def to_h
113
- @options.merge(
112
+ hash = @options.merge(
114
113
  'value' => @value,
115
114
  'HttpOnly' => http_only?,
116
115
  'secure' => secure?
117
116
  )
117
+ hash.delete('httponly')
118
+ hash
118
119
  end
119
120
  alias to_hash to_h
120
121
 
@@ -183,12 +184,10 @@ module Rack
183
184
  def merge(raw_cookies, uri = nil)
184
185
  return unless raw_cookies
185
186
 
186
- if raw_cookies.is_a? String
187
- raw_cookies = raw_cookies.split("\n")
188
- raw_cookies.reject!(&:empty?)
189
- end
187
+ raw_cookies = raw_cookies.split("\n") if raw_cookies.is_a? String
190
188
 
191
189
  raw_cookies.each do |raw_cookie|
190
+ next if raw_cookie.empty?
192
191
  cookie = Cookie.new(raw_cookie, uri, @default_host)
193
192
  self << cookie if cookie.valid?(uri)
194
193
  end
@@ -72,18 +72,6 @@ module Rack
72
72
  tempfile.respond_to?(method_name, include_private) || super
73
73
  end
74
74
 
75
- # A proc that can be used as a finalizer to close and unlink the tempfile.
76
- def self.finalize(file)
77
- proc { actually_finalize file }
78
- end
79
-
80
- # Close and unlink the given file, used as a finalizer for the tempfile,
81
- # if the tempfile is backed by a file in the filesystem.
82
- def self.actually_finalize(file)
83
- file.close
84
- file.unlink
85
- end
86
-
87
75
  private
88
76
 
89
77
  # Use the StringIO as the tempfile.
@@ -104,8 +92,6 @@ module Rack
104
92
  @tempfile = Tempfile.new([::File.basename(@original_filename, extension), extension])
105
93
  @tempfile.set_encoding(Encoding::BINARY)
106
94
 
107
- ObjectSpace.define_finalizer(self, self.class.finalize(@tempfile))
108
-
109
95
  FileUtils.copy_file(path, @tempfile.path)
110
96
  end
111
97
  end
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  module Test
3
- VERSION = '2.1.0'.freeze
3
+ VERSION = '2.2.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-test
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Evans
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-03-14 00:00:00.000000000 Z
12
+ date: 2024-12-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
@@ -110,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  requirements: []
113
- rubygems_version: 3.4.6
113
+ rubygems_version: 3.5.22
114
114
  signing_key:
115
115
  specification_version: 4
116
116
  summary: Simple testing API built on Rack