cookie_cutter 0.3.4 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +1 -1
- data/cookie_cutter.gemspec +4 -4
- data/lib/cookie_cutter/cookie.rb +18 -0
- data/lib/cookie_cutter/cookie_registry.rb +23 -0
- data/lib/cookie_cutter/test_support/stubs.rb +2 -2
- data/lib/cookie_cutter/version.rb +1 -1
- data/spec/base_spec.rb +16 -0
- data/spec/cookie_registry_spec.rb +28 -0
- metadata +28 -42
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3eeaa96820553e14150a41c1846012869792ab90aad9862bb58d138fbeb558ad
|
4
|
+
data.tar.gz: b5184f8c9d5264389266d7963cfe92254b62491027d149361e6e00f17b7469f6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5695bf9d898efbf72174d124b190472934c0e15039adc5d233d79e76140ce96f195df5dfe27929876b56696b71d14365c4f9eb49c80d4032cb38b01e8d537d67
|
7
|
+
data.tar.gz: 1fe0e333feb02c9e27e6d4f0e0aa16d0feefe691e98504e1d5f2087287d61abf573a9d69556ec7d6d29bb4e9a015fb53ff6e108710a3d55a7cabf4b1abec1510
|
data/Gemfile
CHANGED
data/cookie_cutter.gemspec
CHANGED
@@ -15,8 +15,8 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = CookieCutter::VERSION
|
17
17
|
|
18
|
-
gem.add_development_dependency 'activesupport' #for date helpers
|
19
|
-
gem.add_development_dependency 'rake'
|
20
|
-
gem.add_development_dependency 'rspec'
|
21
|
-
gem.add_development_dependency 'rspec-mocks'
|
18
|
+
gem.add_development_dependency 'activesupport', '~> 3.2.22' #for date helpers
|
19
|
+
gem.add_development_dependency 'rake', '~> 10.5'
|
20
|
+
gem.add_development_dependency 'rspec', '~> 2.14.1'
|
21
|
+
gem.add_development_dependency 'rspec-mocks', '~> 2.14.6'
|
22
22
|
end
|
data/lib/cookie_cutter/cookie.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'cookie_cutter/cookie_attribute'
|
2
|
+
require 'cookie_cutter/cookie_registry'
|
2
3
|
|
3
4
|
module CookieCutter
|
4
5
|
module Cookie
|
@@ -12,6 +13,7 @@ module CookieCutter
|
|
12
13
|
|
13
14
|
def store_as(name)
|
14
15
|
@cookie_name = name
|
16
|
+
ensure_registered
|
15
17
|
end
|
16
18
|
|
17
19
|
attr_reader :cookie_domain
|
@@ -50,6 +52,14 @@ module CookieCutter
|
|
50
52
|
@secure ? true : false
|
51
53
|
end
|
52
54
|
|
55
|
+
def multi_valued
|
56
|
+
@multi_valued = true
|
57
|
+
end
|
58
|
+
|
59
|
+
def multi_valued?
|
60
|
+
@multi_valued || attributes.any?
|
61
|
+
end
|
62
|
+
|
53
63
|
def http_only
|
54
64
|
@http_only = true
|
55
65
|
add_handler do |cookie|
|
@@ -67,6 +77,7 @@ module CookieCutter
|
|
67
77
|
|
68
78
|
def has_attribute(attribute_name, options={})
|
69
79
|
raise "CookieCutter value names must by symbols. #{attribute_name} is not a symbol" unless attribute_name.is_a?(Symbol)
|
80
|
+
ensure_registered
|
70
81
|
#make value and value= private when the cookie has one or more named values
|
71
82
|
private :value, :value=, :set_value
|
72
83
|
|
@@ -89,6 +100,7 @@ module CookieCutter
|
|
89
100
|
|
90
101
|
def add_handler(&block)
|
91
102
|
handlers << block
|
103
|
+
ensure_registered
|
92
104
|
end
|
93
105
|
|
94
106
|
def handlers
|
@@ -98,6 +110,12 @@ module CookieCutter
|
|
98
110
|
def attributes
|
99
111
|
@attributes ||= []
|
100
112
|
end
|
113
|
+
|
114
|
+
private
|
115
|
+
|
116
|
+
def ensure_registered
|
117
|
+
CookieRegistry.instance.register self
|
118
|
+
end
|
101
119
|
end
|
102
120
|
|
103
121
|
def self.included(klass)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'singleton'
|
2
|
+
|
3
|
+
module CookieCutter
|
4
|
+
class CookieRegistry
|
5
|
+
include Singleton
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@cookies = Set.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def register(cookie_class)
|
12
|
+
@cookies.add cookie_class
|
13
|
+
end
|
14
|
+
|
15
|
+
def all
|
16
|
+
@cookies
|
17
|
+
end
|
18
|
+
|
19
|
+
def clear
|
20
|
+
@cookies.clear
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/spec/base_spec.rb
CHANGED
@@ -17,6 +17,11 @@ class MultiValuedCookie < CookieCutter::Base
|
|
17
17
|
has_attribute :value2, store_as: 'val2'
|
18
18
|
end
|
19
19
|
|
20
|
+
class MultiValuedCookieWithoutAttribute < CookieCutter::Base
|
21
|
+
store_as :mvcwa
|
22
|
+
multi_valued
|
23
|
+
end
|
24
|
+
|
20
25
|
describe CookieCutter::Base do
|
21
26
|
let(:cookie_jar) { CookieCutter::TestSupport::FakeCookieJar.new }
|
22
27
|
it 'should not update the cookie_jar when no value is set' do
|
@@ -161,6 +166,9 @@ describe CookieCutter::Base do
|
|
161
166
|
single_value_cookie = SingleValuedCookie.new(CookieCutter::TestSupport::FakeCookieJar.new({ svc: "preset value" }))
|
162
167
|
single_value_cookie.value.should == "preset value"
|
163
168
|
end
|
169
|
+
it 'is not multivalued' do
|
170
|
+
SingleValuedCookie.multi_valued?.should be_false
|
171
|
+
end
|
164
172
|
end
|
165
173
|
describe 'multi-valued cookie' do
|
166
174
|
let(:multi_valued_cookie) { MultiValuedCookie.new(cookie_jar) }
|
@@ -183,6 +191,9 @@ describe CookieCutter::Base do
|
|
183
191
|
multi_valued_cookie.value2 = "myval2"
|
184
192
|
cookie_jar[:mvc][:val2].should == "myval2"
|
185
193
|
end
|
194
|
+
it "is multivalued" do
|
195
|
+
MultiValuedCookie.multi_valued?.should be_true
|
196
|
+
end
|
186
197
|
describe 'attribute metadata' do
|
187
198
|
it "should provide attributes array" do
|
188
199
|
MultiValuedCookie.attributes.length.should == 2
|
@@ -197,4 +208,9 @@ describe CookieCutter::Base do
|
|
197
208
|
end
|
198
209
|
end
|
199
210
|
end
|
211
|
+
describe 'multi-valued cookie without attribute' do
|
212
|
+
it 'is multivalued' do
|
213
|
+
MultiValuedCookieWithoutAttribute.multi_valued?.should be_true
|
214
|
+
end
|
215
|
+
end
|
200
216
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'cookie_cutter/base'
|
3
|
+
require 'cookie_cutter/cookie_registry'
|
4
|
+
|
5
|
+
describe CookieCutter::CookieRegistry do
|
6
|
+
before do
|
7
|
+
CookieCutter::CookieRegistry.instance.clear
|
8
|
+
class MyCookie < CookieCutter::Base
|
9
|
+
store_as 'my'
|
10
|
+
end
|
11
|
+
class MyOtherCookie < CookieCutter::Base
|
12
|
+
store_as 'other'
|
13
|
+
end
|
14
|
+
class DynamicCookie < CookieCutter::Base
|
15
|
+
# no store_as
|
16
|
+
has_attribute :foo
|
17
|
+
end
|
18
|
+
end
|
19
|
+
let :registered_cookies do
|
20
|
+
CookieCutter::CookieRegistry.instance.all
|
21
|
+
end
|
22
|
+
it 'all cookies are registered' do
|
23
|
+
registered_cookies.length.should == 3
|
24
|
+
registered_cookies.should include(MyCookie)
|
25
|
+
registered_cookies.should include(MyOtherCookie)
|
26
|
+
registered_cookies.should include(DynamicCookie)
|
27
|
+
end
|
28
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cookie_cutter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Andy Alm
|
@@ -10,72 +9,64 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2022-05-17 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: activesupport
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
|
-
- -
|
18
|
+
- - "~>"
|
21
19
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
20
|
+
version: 3.2.22
|
23
21
|
type: :development
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
|
-
- -
|
25
|
+
- - "~>"
|
29
26
|
- !ruby/object:Gem::Version
|
30
|
-
version:
|
27
|
+
version: 3.2.22
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: rake
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
|
-
- -
|
32
|
+
- - "~>"
|
37
33
|
- !ruby/object:Gem::Version
|
38
|
-
version: '
|
34
|
+
version: '10.5'
|
39
35
|
type: :development
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
|
-
- -
|
39
|
+
- - "~>"
|
45
40
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
41
|
+
version: '10.5'
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: rspec
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
|
-
- -
|
46
|
+
- - "~>"
|
53
47
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
48
|
+
version: 2.14.1
|
55
49
|
type: :development
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
52
|
requirements:
|
60
|
-
- -
|
53
|
+
- - "~>"
|
61
54
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
55
|
+
version: 2.14.1
|
63
56
|
- !ruby/object:Gem::Dependency
|
64
57
|
name: rspec-mocks
|
65
58
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
59
|
requirements:
|
68
|
-
- -
|
60
|
+
- - "~>"
|
69
61
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
62
|
+
version: 2.14.6
|
71
63
|
type: :development
|
72
64
|
prerelease: false
|
73
65
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
66
|
requirements:
|
76
|
-
- -
|
67
|
+
- - "~>"
|
77
68
|
- !ruby/object:Gem::Version
|
78
|
-
version:
|
69
|
+
version: 2.14.6
|
79
70
|
description: Provides a way to define the structure, lifetime, and other properties
|
80
71
|
of a cookie all in one place.
|
81
72
|
email:
|
@@ -84,8 +75,8 @@ executables: []
|
|
84
75
|
extensions: []
|
85
76
|
extra_rdoc_files: []
|
86
77
|
files:
|
87
|
-
- .gitignore
|
88
|
-
- .travis.yml
|
78
|
+
- ".gitignore"
|
79
|
+
- ".travis.yml"
|
89
80
|
- Gemfile
|
90
81
|
- LICENSE
|
91
82
|
- README.md
|
@@ -95,41 +86,36 @@ files:
|
|
95
86
|
- lib/cookie_cutter/base.rb
|
96
87
|
- lib/cookie_cutter/cookie.rb
|
97
88
|
- lib/cookie_cutter/cookie_attribute.rb
|
89
|
+
- lib/cookie_cutter/cookie_registry.rb
|
98
90
|
- lib/cookie_cutter/test_support.rb
|
99
91
|
- lib/cookie_cutter/test_support/fake_cookie_jar.rb
|
100
92
|
- lib/cookie_cutter/test_support/stubs.rb
|
101
93
|
- lib/cookie_cutter/version.rb
|
102
94
|
- spec/base_spec.rb
|
95
|
+
- spec/cookie_registry_spec.rb
|
103
96
|
homepage: http://github.com/gettyimages/cookie_cutter
|
104
97
|
licenses: []
|
98
|
+
metadata: {}
|
105
99
|
post_install_message:
|
106
100
|
rdoc_options: []
|
107
101
|
require_paths:
|
108
102
|
- lib
|
109
103
|
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
-
none: false
|
111
104
|
requirements:
|
112
|
-
- -
|
105
|
+
- - ">="
|
113
106
|
- !ruby/object:Gem::Version
|
114
107
|
version: '0'
|
115
|
-
segments:
|
116
|
-
- 0
|
117
|
-
hash: 2405927852129059589
|
118
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
109
|
requirements:
|
121
|
-
- -
|
110
|
+
- - ">="
|
122
111
|
- !ruby/object:Gem::Version
|
123
112
|
version: '0'
|
124
|
-
segments:
|
125
|
-
- 0
|
126
|
-
hash: 2405927852129059589
|
127
113
|
requirements: []
|
128
|
-
|
129
|
-
rubygems_version: 1.8.24
|
114
|
+
rubygems_version: 3.3.10
|
130
115
|
signing_key:
|
131
|
-
specification_version:
|
116
|
+
specification_version: 4
|
132
117
|
summary: Provides a way to define the structure, lifetime, and other properties of
|
133
118
|
a cookie all in one place.
|
134
119
|
test_files:
|
135
120
|
- spec/base_spec.rb
|
121
|
+
- spec/cookie_registry_spec.rb
|