Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions rb/lib/selenium/webdriver/bidi/network/cookies.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,13 @@ class BiDi
class Cookies < Hash
def as_json
map do |name, val|
self[:name] = name.to_s
self[:value] = {type: 'string', value: val.to_s}

[compact]
{
name: name.to_s,
value: {
type: 'string',
value: val.to_s
}
}
end
end
end
Expand Down
10 changes: 10 additions & 0 deletions rb/spec/unit/selenium/webdriver/bidi/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
load("//rb/spec:tests.bzl", "rb_unit_test")

[
rb_unit_test(
name = file[:-8],
srcs = [file],
deps = ["//rb/lib/selenium/webdriver:bidi"],
)
for file in glob(["*_spec.rb"])
]
75 changes: 11 additions & 64 deletions rb/spec/unit/selenium/webdriver/bidi/cookies_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,76 +24,23 @@ module Selenium
module WebDriver
class BiDi
describe Cookies do
it 'returns the cookies as json' do
cookies = described_class.new
cookies['key4'] = 'value4'
cookies['session_id'] = 'xyz123'

formatted_cookies = cookies.as_json
expect(formatted_cookies).to be_an(Array)
expect(formatted_cookies.first['key4']).to eq('value4')
expect(formatted_cookies.first['session_id']).to eq('xyz123')
end
let(:cookies) { described_class.new }

it 'serializes the cookies needed for request' do
cookies =
described_class.new(
{
name: 'test',
value: 'value4',
domain: 'example.com',
path: '/path',
size: 1234,
httpOnly: true,
secure: true,
sameSite: 'Strict',
expiry: 1234
}
)
it 'returns cookies formatted as json' do
cookies['session_id'] = 'xyz123'
cookies['user_pref'] = 'dark_mode'

formatted_cookies = cookies.as_json
expect(formatted_cookies).to be_an(Array)
expect(formatted_cookies.size).to eq(1)

request_cookies = formatted_cookies.first
expect(request_cookies[:name]).to eq('test')
expect(request_cookies[:value][:type]).to eq('string')
expect(request_cookies[:value][:value]).to eq('value4')
expect(request_cookies[:domain]).to eq('example.com')
expect(request_cookies[:path]).to eq('/path')
expect(request_cookies[:expiry]).to eq(1234)
expect(request_cookies[:httpOnly]).to be(true)
expect(request_cookies[:secure]).to be(true)
expect(request_cookies[:sameSite]).to eq('Strict')
expect(request_cookies[:size]).to eq(1234)
end
expect(formatted_cookies.size).to eq(2)

it 'serializes the cookies needed for response' do
cookies = described_class.new({
name: 'test',
value: 'bar',
domain: 'localhost',
httpOnly: true,
expiry: '1_000_000',
maxAge: 1_000,
path: '/',
sameSite: 'lax',
secure: false
})
session_cookie = formatted_cookies.find { |c| c[:name] == 'session_id' }
expect(session_cookie).not_to be_nil
expect(session_cookie[:value]).to eq({type: 'string', value: 'xyz123'})

formatted_cookies = cookies.as_json
expect(formatted_cookies).to be_an(Array)
expect(formatted_cookies.size).to eq(1)
response_cookies = formatted_cookies.first
expect(response_cookies[:value][:type]).to eq('string')
expect(response_cookies[:value][:value]).to eq('bar')
expect(response_cookies[:domain]).to eq('localhost')
expect(response_cookies[:path]).to eq('/')
expect(response_cookies[:expiry]).to eq('1_000_000')
expect(response_cookies[:httpOnly]).to be(true)
expect(response_cookies[:secure]).to be(false)
expect(response_cookies[:sameSite]).to eq('lax')
expect(response_cookies[:maxAge]).to eq(1_000)
pref_cookie = formatted_cookies.find { |c| c[:name] == 'user_pref' }
expect(pref_cookie).not_to be_nil
expect(pref_cookie[:value]).to eq({type: 'string', value: 'dark_mode'})
end
end
end
Expand Down
Loading