diff --git a/rb/lib/selenium/webdriver/bidi/network/cookies.rb b/rb/lib/selenium/webdriver/bidi/network/cookies.rb index da7da344a589e..c2432844404eb 100644 --- a/rb/lib/selenium/webdriver/bidi/network/cookies.rb +++ b/rb/lib/selenium/webdriver/bidi/network/cookies.rb @@ -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 diff --git a/rb/spec/unit/selenium/webdriver/bidi/BUILD.bazel b/rb/spec/unit/selenium/webdriver/bidi/BUILD.bazel new file mode 100644 index 0000000000000..7b01c0fc5d000 --- /dev/null +++ b/rb/spec/unit/selenium/webdriver/bidi/BUILD.bazel @@ -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"]) +] diff --git a/rb/spec/unit/selenium/webdriver/bidi/cookies_spec.rb b/rb/spec/unit/selenium/webdriver/bidi/cookies_spec.rb index 582d946276989..b8539abf5e8a0 100644 --- a/rb/spec/unit/selenium/webdriver/bidi/cookies_spec.rb +++ b/rb/spec/unit/selenium/webdriver/bidi/cookies_spec.rb @@ -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