Skip to content

Commit

Permalink
refactor: mv Extensions remove_and_replace! testcase
Browse files Browse the repository at this point in the history
refactor: using each_value
  • Loading branch information
thekuwayama committed Apr 18, 2024
1 parent 5fb4478 commit 44b567c
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 38 deletions.
5 changes: 3 additions & 2 deletions lib/tttls1.3/message/extensions.rb
Expand Up @@ -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

Expand Down
36 changes: 0 additions & 36 deletions spec/ech_spec.rb
Expand Up @@ -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
36 changes: 36 additions & 0 deletions spec/extensions_spec.rb
Expand Up @@ -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

0 comments on commit 44b567c

Please sign in to comment.