1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
# frozen_string_literal: true
# Released under the MIT License.
# Copyright, 2021-2026, by Samuel Williams.
# Copyright, 2022, by Herrick Fang.
require "protocol/http/header/cookie"
describe Protocol::HTTP::Header::Cookie do
let(:header) {subject.parse(description)}
let(:cookies) {header.to_h}
with "session=123; secure" do
it "can parse cookies" do
expect(cookies).to have_keys("session")
session = cookies["session"]
expect(session).to have_attributes(
name: be == "session",
value: be == "123",
)
expect(session.directives).to have_keys("secure")
end
end
with "session=123; path=/; secure" do
it "can parse cookies" do
session = cookies["session"]
expect(session).to have_attributes(
name: be == "session",
value: be == "123",
directives: be == {"path" => "/", "secure" => true},
)
end
end
with "session=abc123; secure" do
it "can parse cookies" do
expect(cookies).to have_keys("session")
session = cookies["session"]
expect(session).to have_attributes(
name: be == "session",
value: be == "abc123",
)
expect(session.directives).to have_keys("secure")
end
end
with "multiple cookies" do
let(:header) do
cookie = subject.new
cookie << "session=abc123"
cookie << "user_id=42"
cookie << "token=xyz789"
cookie
end
it "joins cookies with semicolons without spaces" do
expect(header.to_s).to be == "session=abc123;user_id=42;token=xyz789"
end
end
end
|