Skip to content

Commit f11c7e5

Browse files
committed
switch from regex matchers to string equality matchers
1 parent b291397 commit f11c7e5

File tree

3 files changed

+18
-24
lines changed

3 files changed

+18
-24
lines changed

lib/secure_headers/headers/cookie.rb

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@
33
module SecureHeaders
44
class CookiesConfigError < StandardError; end
55
class Cookie
6-
SECURE_REGEXP = /;\s*secure\s*(;|$)/i.freeze
7-
HTTPONLY_REGEXP =/;\s*HttpOnly\s*(;|$)/i.freeze
8-
SAMESITE_REGEXP =/;\s*SameSite\s*(;|$)/i.freeze
9-
SAMESITE_LAX_REGEXP =/;\s*SameSite=Lax\s*(;|$)/i.freeze
10-
SAMESITE_STRICT_REGEXP =/;\s*SameSite=Strict\s*(;|$)/i.freeze
116

127
class << self
138
def validate_config!(config)

spec/lib/secure_headers/headers/cookie_spec.rb

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ module SecureHeaders
1111

1212
it "preserves existing attributes" do
1313
cookie = Cookie.new("_session=thisisatest; secure", secure: true)
14-
expect(cookie.to_s).to match(Cookie::SECURE_REGEXP)
14+
expect(cookie.to_s).to eq("_session=thisisatest; secure")
1515
end
1616

1717
it "prevents duplicate flagging of attributes" do
@@ -23,19 +23,19 @@ module SecureHeaders
2323
context "when configured with a boolean" do
2424
it "flags cookies as Secure" do
2525
cookie = Cookie.new(raw_cookie, secure: true)
26-
expect(cookie.to_s).to match(Cookie::SECURE_REGEXP)
26+
expect(cookie.to_s).to eq("_session=thisisatest; secure")
2727
end
2828
end
2929

3030
context "when configured with a Hash" do
3131
it "flags cookies as Secure when whitelisted" do
3232
cookie = Cookie.new(raw_cookie, secure: { only: ["_session"]})
33-
expect(cookie.to_s).to match(Cookie::SECURE_REGEXP)
33+
expect(cookie.to_s).to eq("_session=thisisatest; secure")
3434
end
3535

3636
it "does not flag cookies as Secure when excluded" do
3737
cookie = Cookie.new(raw_cookie, secure: { except: ["_session"] })
38-
expect(cookie.to_s).not_to match(Cookie::SECURE_REGEXP)
38+
expect(cookie.to_s).to eq("_session=thisisatest")
3939
end
4040
end
4141
end
@@ -44,58 +44,58 @@ module SecureHeaders
4444
context "when configured with a boolean" do
4545
it "flags cookies as HttpOnly" do
4646
cookie = Cookie.new(raw_cookie, httponly: true)
47-
expect(cookie.to_s).to match(Cookie::HTTPONLY_REGEXP)
47+
expect(cookie.to_s).to eq("_session=thisisatest; HttpOnly")
4848
end
4949
end
5050

5151
context "when configured with a Hash" do
5252
it "flags cookies as HttpOnly when whitelisted" do
5353
cookie = Cookie.new(raw_cookie, httponly: { only: ["_session"]})
54-
expect(cookie.to_s).to match(Cookie::HTTPONLY_REGEXP)
54+
expect(cookie.to_s).to eq("_session=thisisatest; HttpOnly")
5555
end
5656

5757
it "does not flag cookies as HttpOnly when excluded" do
5858
cookie = Cookie.new(raw_cookie, httponly: { except: ["_session"] })
59-
expect(cookie.to_s).not_to match(Cookie::HTTPONLY_REGEXP)
59+
expect(cookie.to_s).to eq("_session=thisisatest")
6060
end
6161
end
6262
end
6363

6464
context "SameSite cookies" do
6565
it "flags SameSite=Lax" do
6666
cookie = Cookie.new(raw_cookie, samesite: { lax: { only: ["_session"] } })
67-
expect(cookie.to_s).to match(Cookie::SAMESITE_LAX_REGEXP)
67+
expect(cookie.to_s).to eq("_session=thisisatest; SameSite=Lax")
6868
end
6969

7070
it "flags SameSite=Lax when configured with a boolean" do
7171
cookie = Cookie.new(raw_cookie, samesite: { lax: true})
72-
expect(cookie.to_s).to match(Cookie::SAMESITE_LAX_REGEXP)
72+
expect(cookie.to_s).to eq("_session=thisisatest; SameSite=Lax")
7373
end
7474

7575
it "does not flag cookies as SameSite=Lax when excluded" do
7676
cookie = Cookie.new(raw_cookie, samesite: { lax: { except: ["_session"] } })
77-
expect(cookie.to_s).not_to match(Cookie::SAMESITE_LAX_REGEXP)
77+
expect(cookie.to_s).to eq("_session=thisisatest")
7878
end
7979

8080
it "flags SameSite=Strict" do
8181
cookie = Cookie.new(raw_cookie, samesite: { strict: { only: ["_session"] } })
82-
expect(cookie.to_s).to match(Cookie::SAMESITE_STRICT_REGEXP)
82+
expect(cookie.to_s).to eq("_session=thisisatest; SameSite=Strict")
8383
end
8484

8585
it "does not flag cookies as SameSite=Strict when excluded" do
8686
cookie = Cookie.new(raw_cookie, samesite: { strict: { except: ["_session"] } })
87-
expect(cookie.to_s).not_to match(Cookie::SAMESITE_STRICT_REGEXP)
87+
expect(cookie.to_s).to eq("_session=thisisatest")
8888
end
8989

9090
it "flags SameSite=Strict when configured with a boolean" do
9191
cookie = Cookie.new(raw_cookie, samesite: { strict: true})
92-
expect(cookie.to_s).to match(Cookie::SAMESITE_STRICT_REGEXP)
92+
expect(cookie.to_s).to eq("_session=thisisatest; SameSite=Strict")
9393
end
9494

9595
it "flags properly when both lax and strict are configured" do
9696
raw_cookie = "_session=thisisatest"
9797
cookie = Cookie.new(raw_cookie, samesite: { strict: { only: ["_session"] }, lax: { only: ["_additional_session"] } })
98-
expect(cookie.to_s).to match(Cookie::SAMESITE_STRICT_REGEXP)
98+
expect(cookie.to_s).to eq("_session=thisisatest; SameSite=Strict")
9999
end
100100

101101
it "ignores configuration if the cookie is already flagged" do

spec/lib/secure_headers/middleware_spec.rb

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ module SecureHeaders
4646
end
4747
request = Rack::Request.new("HTTPS" => "on")
4848
_, env = cookie_middleware.call request.env
49-
expect(env['Set-Cookie']).to match(SecureHeaders::Cookie::SECURE_REGEXP)
49+
expect(env['Set-Cookie']).to eq("foo=bar; secure")
5050
end
5151
end
5252

@@ -57,7 +57,7 @@ module SecureHeaders
5757
end
5858
request = Rack::Request.new("HTTPS" => "on")
5959
_, env = cookie_middleware.call request.env
60-
expect(env['Set-Cookie']).not_to match(SecureHeaders::Cookie::SECURE_REGEXP)
60+
expect(env['Set-Cookie']).to eq("foo=bar")
6161
end
6262
end
6363
end
@@ -68,8 +68,7 @@ module SecureHeaders
6868
request = Rack::Request.new("HTTPS" => "on")
6969
_, env = cookie_middleware.call request.env
7070

71-
expect(env['Set-Cookie']).to match(SecureHeaders::Cookie::SECURE_REGEXP)
72-
expect(env['Set-Cookie']).to match(SecureHeaders::Cookie::HTTPONLY_REGEXP)
71+
expect(env['Set-Cookie']).to eq("foo=bar; secure; HttpOnly")
7372
end
7473

7574
it "flags cookies with a combination of SameSite configurations" do
@@ -88,7 +87,7 @@ module SecureHeaders
8887

8988
request = Rack::Request.new("HTTPS" => "off")
9089
_, env = cookie_middleware.call request.env
91-
expect(env['Set-Cookie']).not_to match(SecureHeaders::Cookie::SECURE_REGEXP)
90+
expect(env['Set-Cookie']).to eq("foo=bar")
9291
end
9392
end
9493
end

0 commit comments

Comments
 (0)