File: cookie.rb

package info (click to toggle)
ruby-protocol-http 0.59.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 864 kB
  • sloc: ruby: 7,612; makefile: 4
file content (63 lines) | stat: -rw-r--r-- 1,486 bytes parent folder | download
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