From 44b567cc809122dd94785a93322fd527e800778b Mon Sep 17 00:00:00 2001 From: thekuwayama Date: Thu, 18 Apr 2024 04:38:01 +0900 Subject: [PATCH] refactor: mv Extensions remove_and_replace! testcase refactor: using each_value --- lib/tttls1.3/message/extensions.rb | 5 +++-- spec/ech_spec.rb | 36 ------------------------------ spec/extensions_spec.rb | 36 ++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 38 deletions(-) diff --git a/lib/tttls1.3/message/extensions.rb b/lib/tttls1.3/message/extensions.rb index 53f6ddb..3d45734 100644 --- a/lib/tttls1.3/message/extensions.rb +++ b/lib/tttls1.3/message/extensions.rb @@ -124,11 +124,12 @@ def remove_and_replace!(outer_extensions) clear replaced = Message::Extensions.new - tmp1.each { |_, v| self << v; replaced << v } - tmp2.each { |_, v| self << v } + tmp1.each_value { |v| self << v; replaced << v } + tmp2.each_value { |v| self << v } replaced << Message::Extension::ECHOuterExtensions.new(tmp2.keys) \ unless tmp2.keys.empty? + replaced end diff --git a/spec/ech_spec.rb b/spec/ech_spec.rb index 23b159f..69a89d1 100644 --- a/spec/ech_spec.rb +++ b/spec/ech_spec.rb @@ -119,40 +119,4 @@ .to eq padding_encoded_ch_inner.length end end - - context 'removing and replacing extensions from EncodedClientHelloInner' do - let(:extensions) do - extensions, = Client.new(nil, 'localhost').send(:gen_ch_extensions) - extensions - end - - let(:no_key_share_exs) do - Extensions.new( - extensions.filter { |k, _| k != ExtensionType::KEY_SHARE }.values - ) - end - - it 'should be equal remove_and_replace! with []' do - cloned = extensions.clone - expect(extensions.remove_and_replace!([])) - .to eq cloned - end - - it 'should be equal remove_and_replace! with [key_share]' do - expected = extensions.filter { |k, _| k != ExtensionType::KEY_SHARE } - expected[ExtensionType::ECH_OUTER_EXTENSIONS] = \ - Extension::ECHOuterExtensions.new([ExtensionType::KEY_SHARE]) - got = extensions.remove_and_replace!([ExtensionType::KEY_SHARE]) - expect(got.keys).to eq expected.keys - expect(got[ExtensionType::ECH_OUTER_EXTENSIONS].outer_extensions) - .to eq expected[ExtensionType::ECH_OUTER_EXTENSIONS].outer_extensions - end - - it 'should be equal remove_and_replace! with no key_share extensions' \ - ' & [key_share]' do - cloned = no_key_share_exs.clone - expect(no_key_share_exs.remove_and_replace!([ExtensionType::KEY_SHARE])) - .to eq cloned - end - end end diff --git a/spec/extensions_spec.rb b/spec/extensions_spec.rb index b0b9ded..96fa546 100644 --- a/spec/extensions_spec.rb +++ b/spec/extensions_spec.rb @@ -182,4 +182,40 @@ .to raise_error(ErrorAlerts) end end + + context 'removing and replacing extensions from EncodedClientHelloInner' do + let(:extensions) do + extensions, = Client.new(nil, 'localhost').send(:gen_ch_extensions) + extensions + end + + let(:no_key_share_exs) do + Extensions.new( + extensions.filter { |k, _| k != ExtensionType::KEY_SHARE }.values + ) + end + + it 'should be equal remove_and_replace! with []' do + cloned = extensions.clone + expect(extensions.remove_and_replace!([])) + .to eq cloned + end + + it 'should be equal remove_and_replace! with [key_share]' do + expected = extensions.filter { |k, _| k != ExtensionType::KEY_SHARE } + expected[ExtensionType::ECH_OUTER_EXTENSIONS] = \ + Extension::ECHOuterExtensions.new([ExtensionType::KEY_SHARE]) + got = extensions.remove_and_replace!([ExtensionType::KEY_SHARE]) + expect(got.keys).to eq expected.keys + expect(got[ExtensionType::ECH_OUTER_EXTENSIONS].outer_extensions) + .to eq expected[ExtensionType::ECH_OUTER_EXTENSIONS].outer_extensions + end + + it 'should be equal remove_and_replace! with no key_share extensions' \ + ' & [key_share]' do + cloned = no_key_share_exs.clone + expect(no_key_share_exs.remove_and_replace!([ExtensionType::KEY_SHARE])) + .to eq cloned + end + end end