cookie_cutter 0.3.4 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in cookie_cutter.gemspec
4
4
  gemspec
@@ -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
@@ -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
@@ -4,8 +4,8 @@ module CookieCutter
4
4
  module TestSupport
5
5
  module Stubs
6
6
  module Finders
7
- def find(*args)
8
- new(TestSupport::FakeCookieJar.find)
7
+ def find(request, options={})
8
+ new(TestSupport::FakeCookieJar.find, options)
9
9
  end
10
10
  end
11
11
 
@@ -1,3 +1,3 @@
1
1
  module CookieCutter
2
- VERSION = "0.3.4"
2
+ VERSION = "0.4.0"
3
3
  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.3.4
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: 2014-01-31 00:00:00.000000000 Z
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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
- rubyforge_project:
129
- rubygems_version: 1.8.24
114
+ rubygems_version: 3.3.10
130
115
  signing_key:
131
- specification_version: 3
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