Skip to content

Instantly share code, notes, and snippets.

@ykon
Created November 17, 2019 12:50
Show Gist options
  • Save ykon/f300c3d9f287df5121345549a97a1936 to your computer and use it in GitHub Desktop.
Save ykon/f300c3d9f287df5121345549a97a1936 to your computer and use it in GitHub Desktop.
# typed: ignore
require_relative '../mail_header'
describe 'MailHeader' do
it 'split_header_body' do
f = ->(text) { MailHeader.split_header_body(text) }
expect{f.("abcdefghi")}.to raise_error ArgumentError
expect(f.("abc\r\n\r\ndef\r\n\r\nghi")).to eq ["abc", "def\r\n\r\nghi"]
end
it 'unfold_header' do
f = ->(header) { MailHeader.unfold_header(header) }
expect(f.("abcdefghi")).to eq "abcdefghi"
expect(f.("abc\r\n def\r\n\t\t\t ghi\r\njkl")).to eq "abc def ghi\r\njkl"
end
it 'split_field' do
f = ->(line) { MailHeader.split_field(line) }
expect(f.("")).to eq nil
expect(f.("key")).to eq nil
expect(f.("key:")).to eq ["key", nil]
expect(f.("key: ")).to eq ["key", nil]
expect(f.("key: value")).to eq ["key", "value"]
expect(f.("key: value")).to eq ["key", "value"]
expect(f.("key: value")).to eq ["key", "value"]
expect(f.("key: value ")).to eq ["key", "value"]
end
it 'parse_header' do
f = ->(header) { MailHeader.parse_header(header) }
expect{f.("")}.to raise_error ArgumentError
expect(f.("key")).to eq ({})
expect(f.("key: value")).to eq ({"key" => ["value"]})
expect(f.("key: value\r\nkey: value2")).to eq ({"key" => ["value", "value2"]})
expect(f.("key: value\r\nkey2: value")).to eq ({"key" => ["value"], "key2" => ["value"]})
expect(f.("key:\r\nkey2: value")).to eq ({"key" => [nil], "key2" => ["value"]})
expect(f.("key:\r\nkey2: value\r\nkey2: value2")).to eq ({"key" => [nil], "key2" => ["value", "value2"]})
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment