rack-cache 1.2 → 1.3.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/{COPYING → MIT-LICENSE} +0 -0
- data/README.md +95 -0
- data/lib/rack/cache/cachecontrol.rb +14 -0
- data/lib/rack/cache/context.rb +16 -3
- data/lib/rack/cache/metastore.rb +1 -1
- data/lib/rack/cache/options.rb +4 -6
- data/lib/rack/cache/response.rb +13 -6
- metadata +76 -74
- data/Gemfile +0 -2
- data/README +0 -126
- data/Rakefile +0 -139
- data/TODO +0 -27
- data/doc/configuration.markdown +0 -127
- data/doc/faq.markdown +0 -148
- data/doc/index.markdown +0 -121
- data/doc/layout.html.erb +0 -34
- data/doc/license.markdown +0 -24
- data/doc/rack-cache.css +0 -362
- data/doc/server.ru +0 -34
- data/doc/storage.markdown +0 -164
- data/example/sinatra/app.rb +0 -21
- data/example/sinatra/views/index.erb +0 -44
- data/rack-cache.gemspec +0 -75
- data/test/cache_test.rb +0 -38
- data/test/cachecontrol_test.rb +0 -145
- data/test/context_test.rb +0 -916
- data/test/entitystore_test.rb +0 -268
- data/test/key_test.rb +0 -50
- data/test/metastore_test.rb +0 -338
- data/test/options_test.rb +0 -77
- data/test/pony.jpg +0 -0
- data/test/request_test.rb +0 -19
- data/test/response_test.rb +0 -184
- data/test/spec_setup.rb +0 -232
- data/test/storage_test.rb +0 -94
data/test/cache_test.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
require "#{File.dirname(__FILE__)}/spec_setup"
|
2
|
-
|
3
|
-
def dumb_app(env)
|
4
|
-
body = block_given? ? [yield] : ['Hi']
|
5
|
-
[ 200, {'Content-Type' => 'text/plain'}, body ]
|
6
|
-
end
|
7
|
-
|
8
|
-
describe 'Rack::Cache::new' do
|
9
|
-
before { @app = method(:dumb_app) }
|
10
|
-
|
11
|
-
it 'takes a backend and returns a middleware component' do
|
12
|
-
Rack::Cache.new(@app).
|
13
|
-
should.respond_to :call
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'takes an options Hash' do
|
17
|
-
lambda { Rack::Cache.new(@app, {}) }.
|
18
|
-
should.not.raise(ArgumentError)
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'sets options provided in the options Hash' do
|
22
|
-
object = Rack::Cache.new(@app, :foo => 'bar', 'foo.bar' => 'bling')
|
23
|
-
object.options['foo.bar'].should.equal 'bling'
|
24
|
-
object.options['rack-cache.foo'].should.equal 'bar'
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'takes a block; executes it during initialization' do
|
28
|
-
state, object = 'not invoked', nil
|
29
|
-
instance =
|
30
|
-
Rack::Cache.new @app do |cache|
|
31
|
-
object = cache
|
32
|
-
state = 'invoked'
|
33
|
-
cache.should.respond_to :set
|
34
|
-
end
|
35
|
-
state.should.equal 'invoked'
|
36
|
-
object.should.be.same_as instance
|
37
|
-
end
|
38
|
-
end
|
data/test/cachecontrol_test.rb
DELETED
@@ -1,145 +0,0 @@
|
|
1
|
-
require "#{File.dirname(__FILE__)}/spec_setup"
|
2
|
-
require 'rack/cache/cachecontrol'
|
3
|
-
|
4
|
-
describe 'Rack::Cache::CacheControl' do
|
5
|
-
it 'takes no args and initializes with an empty set of values' do
|
6
|
-
cache_control = Rack::Cache::CacheControl.new
|
7
|
-
cache_control.should.be.empty
|
8
|
-
cache_control.to_s.should.equal ''
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'takes a String and parses it into a Hash when created' do
|
12
|
-
cache_control = Rack::Cache::CacheControl.new('max-age=600, foo')
|
13
|
-
cache_control['max-age'].should.equal '600'
|
14
|
-
cache_control['foo'].should.be.true
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'takes a String with a single name=value pair' do
|
18
|
-
cache_control = Rack::Cache::CacheControl.new('max-age=600')
|
19
|
-
cache_control['max-age'].should.equal '600'
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'takes a String with multiple name=value pairs' do
|
23
|
-
cache_control = Rack::Cache::CacheControl.new('max-age=600, max-stale=300, min-fresh=570')
|
24
|
-
cache_control['max-age'].should.equal '600'
|
25
|
-
cache_control['max-stale'].should.equal '300'
|
26
|
-
cache_control['min-fresh'].should.equal '570'
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'takes a String with a single flag value' do
|
30
|
-
cache_control = Rack::Cache::CacheControl.new('no-cache')
|
31
|
-
cache_control.should.include 'no-cache'
|
32
|
-
cache_control['no-cache'].should.be.true
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'takes a String with a bunch of all kinds of stuff' do
|
36
|
-
cache_control =
|
37
|
-
Rack::Cache::CacheControl.new('max-age=600,must-revalidate,min-fresh=3000,foo=bar,baz')
|
38
|
-
cache_control['max-age'].should.equal '600'
|
39
|
-
cache_control['must-revalidate'].should.be.true
|
40
|
-
cache_control['min-fresh'].should.equal '3000'
|
41
|
-
cache_control['foo'].should.equal 'bar'
|
42
|
-
cache_control['baz'].should.be.true
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'strips leading and trailing spaces from header value' do
|
46
|
-
cache_control = Rack::Cache::CacheControl.new(' public, max-age = 600 ')
|
47
|
-
cache_control.should.include 'public'
|
48
|
-
cache_control.should.include 'max-age'
|
49
|
-
cache_control['max-age'].should.equal '600'
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'strips blank segments' do
|
53
|
-
cache_control = Rack::Cache::CacheControl.new('max-age=600,,max-stale=300')
|
54
|
-
cache_control['max-age'].should.equal '600'
|
55
|
-
cache_control['max-stale'].should.equal '300'
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'removes all directives with #clear' do
|
59
|
-
cache_control = Rack::Cache::CacheControl.new('max-age=600, must-revalidate')
|
60
|
-
cache_control.clear
|
61
|
-
cache_control.should.be.empty
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'converts self into header String with #to_s' do
|
65
|
-
cache_control = Rack::Cache::CacheControl.new
|
66
|
-
cache_control['public'] = true
|
67
|
-
cache_control['max-age'] = '600'
|
68
|
-
cache_control.to_s.split(', ').sort.should.equal ['max-age=600', 'public']
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'sorts alphabetically with boolean directives before value directives' do
|
72
|
-
cache_control = Rack::Cache::CacheControl.new('foo=bar, z, x, y, bling=baz, zoom=zib, b, a')
|
73
|
-
cache_control.to_s.should.equal 'a, b, x, y, z, bling=baz, foo=bar, zoom=zib'
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'responds to #max_age with an integer when max-age directive present' do
|
77
|
-
cache_control = Rack::Cache::CacheControl.new('public, max-age=600')
|
78
|
-
cache_control.max_age.should.equal 600
|
79
|
-
end
|
80
|
-
|
81
|
-
it 'responds to #max_age with nil when no max-age directive present' do
|
82
|
-
cache_control = Rack::Cache::CacheControl.new('public')
|
83
|
-
cache_control.max_age.should.be.nil
|
84
|
-
end
|
85
|
-
|
86
|
-
it 'responds to #shared_max_age with an integer when s-maxage directive present' do
|
87
|
-
cache_control = Rack::Cache::CacheControl.new('public, s-maxage=600')
|
88
|
-
cache_control.shared_max_age.should.equal 600
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'responds to #shared_max_age with nil when no s-maxage directive present' do
|
92
|
-
cache_control = Rack::Cache::CacheControl.new('public')
|
93
|
-
cache_control.shared_max_age.should.be.nil
|
94
|
-
end
|
95
|
-
|
96
|
-
it 'responds to #public? truthfully when public directive present' do
|
97
|
-
cache_control = Rack::Cache::CacheControl.new('public')
|
98
|
-
cache_control.should.be.public
|
99
|
-
end
|
100
|
-
|
101
|
-
it 'responds to #public? non-truthfully when no public directive present' do
|
102
|
-
cache_control = Rack::Cache::CacheControl.new('private')
|
103
|
-
cache_control.should.not.be.public
|
104
|
-
end
|
105
|
-
|
106
|
-
it 'responds to #private? truthfully when private directive present' do
|
107
|
-
cache_control = Rack::Cache::CacheControl.new('private')
|
108
|
-
cache_control.should.be.private
|
109
|
-
end
|
110
|
-
|
111
|
-
it 'responds to #private? non-truthfully when no private directive present' do
|
112
|
-
cache_control = Rack::Cache::CacheControl.new('public')
|
113
|
-
cache_control.should.not.be.private
|
114
|
-
end
|
115
|
-
|
116
|
-
it 'responds to #no_cache? truthfully when no-cache directive present' do
|
117
|
-
cache_control = Rack::Cache::CacheControl.new('no-cache')
|
118
|
-
cache_control.should.be.no_cache
|
119
|
-
end
|
120
|
-
|
121
|
-
it 'responds to #no_cache? non-truthfully when no no-cache directive present' do
|
122
|
-
cache_control = Rack::Cache::CacheControl.new('max-age=600')
|
123
|
-
cache_control.should.not.be.no_cache
|
124
|
-
end
|
125
|
-
|
126
|
-
it 'responds to #must_revalidate? truthfully when must-revalidate directive present' do
|
127
|
-
cache_control = Rack::Cache::CacheControl.new('must-revalidate')
|
128
|
-
cache_control.should.be.must_revalidate
|
129
|
-
end
|
130
|
-
|
131
|
-
it 'responds to #must_revalidate? non-truthfully when no must-revalidate directive present' do
|
132
|
-
cache_control = Rack::Cache::CacheControl.new('max-age=600')
|
133
|
-
cache_control.should.not.be.no_cache
|
134
|
-
end
|
135
|
-
|
136
|
-
it 'responds to #proxy_revalidate? truthfully when proxy-revalidate directive present' do
|
137
|
-
cache_control = Rack::Cache::CacheControl.new('proxy-revalidate')
|
138
|
-
cache_control.should.be.proxy_revalidate
|
139
|
-
end
|
140
|
-
|
141
|
-
it 'responds to #proxy_revalidate? non-truthfully when no proxy-revalidate directive present' do
|
142
|
-
cache_control = Rack::Cache::CacheControl.new('max-age=600')
|
143
|
-
cache_control.should.not.be.no_cache
|
144
|
-
end
|
145
|
-
end
|