Skip to content

Commit d4910a1

Browse files
meetme2meatVirendra Negi
and
Virendra Negi
authored
[rb][cdp] handle empty response headers
* fixes #10574 Co-authored-by: Virendra Negi <virendra.negi@sugarboxnetworks.com>
1 parent aeb2845 commit d4910a1

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

‎rb/lib/selenium/webdriver/devtools/response.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def self.from(id, encoded_body, params)
3535
id: id,
3636
code: params['responseStatusCode'],
3737
body: (Base64.strict_decode64(encoded_body) if encoded_body),
38-
headers: params['responseHeaders'].each_with_object({}) do |header, hash|
38+
headers: params.fetch('responseHeaders', []).each_with_object({}) do |header, hash|
3939
hash[header['name']] = header['value']
4040
end
4141
)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# frozen_string_literal: true
2+
3+
# Licensed to the Software Freedom Conservancy (SFC) under one
4+
# or more contributor license agreements. See the NOTICE file
5+
# distributed with this work for additional information
6+
# regarding copyright ownership. The SFC licenses this file
7+
# to you under the Apache License, Version 2.0 (the
8+
# "License"); you may not use this file except in compliance
9+
# with the License. You may obtain a copy of the License at
10+
#
11+
# http://www.apache.org/licenses/LICENSE-2.0
12+
#
13+
# Unless required by applicable law or agreed to in writing,
14+
# software distributed under the License is distributed on an
15+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16+
# KIND, either express or implied. See the License for the
17+
# specific language governing permissions and limitations
18+
# under the License.
19+
20+
require File.expand_path('../spec_helper', __dir__)
21+
22+
module Selenium
23+
module WebDriver
24+
class DevTools
25+
describe Response do
26+
describe '.from' do
27+
it 'should set the headers correctly' do
28+
params = {'responseHeaders' => [{'name' => 'Connection', 'value' => 'Keep-Alive'}]}
29+
response = Response.from(1, nil, params)
30+
expect(response.headers).to eq({'Connection' => 'Keep-Alive'})
31+
end
32+
33+
it 'should not raise error on empty responseHeaders' do
34+
expect { Response.from(1, nil, {}) }.not_to raise_error
35+
end
36+
end
37+
end # Response
38+
end # DevTools
39+
end # WebDriver
40+
end # Selenium

0 commit comments

Comments
 (0)