slimmer 1.1.18 → 1.1.19

Sign up to get free protection for your applications and to get access to all the features.
data/lib/slimmer.rb CHANGED
@@ -27,4 +27,7 @@ module Slimmer
27
27
  autoload :UrlRewriter, 'slimmer/url_rewriter'
28
28
  autoload :HeaderContextInserter, 'slimmer/header_context_inserter'
29
29
  autoload :GoogleAnalyticsConfigurator, 'slimmer/google_analytics_configurator'
30
+
31
+ class TemplateNotFoundException < StandardError; end
32
+ class CouldNotRetrieveTemplate < StandardError; end
30
33
  end
data/lib/slimmer/app.rb CHANGED
@@ -92,27 +92,8 @@ module Slimmer
92
92
  rewritten_body = app_body
93
93
  end
94
94
  rewritten_body = [rewritten_body] unless rewritten_body.respond_to?(:each)
95
- filtered_headers = filter_headers headers
96
95
  logger.debug "Slimmer: Returning final status, headers and body"
97
- [status, filtered_headers, rewritten_body]
98
- end
99
-
100
- def filter_headers(header_hash)
101
- valid_keys = %w{vary set-cookie location content-type expires cache-control www-authenticate last-modified etag}
102
- logger.debug "Slimmer: removing headers except #{valid_keys} from #{header_hash.keys}"
103
- removed_keys = []
104
- header_hash.keys.each do |key|
105
- unless valid_keys.include?(key.downcase)
106
- removed_keys << key
107
- header_hash.delete(key)
108
- end
109
- end
110
- if removed_keys.size > 0
111
- logger.debug "Slimmer: removed #{removed_keys.size} headers: #{removed_keys.inspect}"
112
- else
113
- logger.debug "Slimmer: no headers removed"
114
- end
115
- header_hash
96
+ [status, headers, rewritten_body]
116
97
  end
117
98
  end
118
99
  end
data/lib/slimmer/skin.rb CHANGED
@@ -61,6 +61,10 @@ module Slimmer
61
61
  cache template_name, template
62
62
  logger.debug "Slimmer: Returning evaluated template"
63
63
  template
64
+ rescue OpenURI::HTTPError
65
+ raise TemplateNotFoundException
66
+ rescue Errno::ECONNREFUSED
67
+ raise CouldNotRetrieveTemplate
64
68
  end
65
69
 
66
70
  def template_url template_name
@@ -1,3 +1,3 @@
1
1
  module Slimmer
2
- VERSION = '1.1.18'
2
+ VERSION = '1.1.19'
3
3
  end
data/test/skin_test.rb CHANGED
@@ -20,4 +20,24 @@ class SkinTest < MiniTest::Unit::TestCase
20
20
  template = skin.load_template 'example'
21
21
  assert_equal "<p>this-is-the-prefix</p>", template
22
22
  end
23
+
24
+ def test_should_raise_appropriate_exception_when_template_not_found
25
+ skin = Slimmer::Skin.new "http://example.local/"
26
+ expected_url = "http://example.local/templates/example.html.erb"
27
+ stub_request(:get, expected_url).to_return(:status => '404')
28
+
29
+ assert_raises(Slimmer::TemplateNotFoundException) do
30
+ skin.load_template 'example'
31
+ end
32
+ end
33
+
34
+ def test_should_raise_appropriate_exception_when_cant_reach_template_host
35
+ skin = Slimmer::Skin.new "http://example.local/"
36
+ expected_url = "http://example.local/templates/example.html.erb"
37
+ stub_request(:get, expected_url).to_raise(Errno::ECONNREFUSED)
38
+
39
+ assert_raises(Slimmer::CouldNotRetrieveTemplate) do
40
+ skin.load_template 'example'
41
+ end
42
+ end
23
43
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slimmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.18
4
+ version: 1.1.19
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-01-10 00:00:00.000000000 Z
13
+ date: 2012-01-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri
17
- requirement: &70351908621780 !ruby/object:Gem::Requirement
17
+ requirement: &70164012495200 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 1.5.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70351908621780
25
+ version_requirements: *70164012495200
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rack
28
- requirement: &70351908620040 !ruby/object:Gem::Requirement
28
+ requirement: &70164012494660 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.3.5
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70351908620040
36
+ version_requirements: *70164012494660
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: plek
39
- requirement: &70351908619480 !ruby/object:Gem::Requirement
39
+ requirement: &70164012494160 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 0.1.8
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *70351908619480
47
+ version_requirements: *70164012494160
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: json
50
- requirement: &70351908618940 !ruby/object:Gem::Requirement
50
+ requirement: &70164012493740 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *70351908618940
58
+ version_requirements: *70164012493740
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: null_logger
61
- requirement: &70351908617580 !ruby/object:Gem::Requirement
61
+ requirement: &70164012493260 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0'
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *70351908617580
69
+ version_requirements: *70164012493260
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rake
72
- requirement: &70351908611760 !ruby/object:Gem::Requirement
72
+ requirement: &70164012492300 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: 0.9.2.2
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *70351908611760
80
+ version_requirements: *70164012492300
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: rack-test
83
- requirement: &70351908609820 !ruby/object:Gem::Requirement
83
+ requirement: &70164012491740 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ~>
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: 0.6.1
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *70351908609820
91
+ version_requirements: *70164012491740
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: mocha
94
- requirement: &70351908606800 !ruby/object:Gem::Requirement
94
+ requirement: &70164012491020 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ~>
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: 0.9.12
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *70351908606800
102
+ version_requirements: *70164012491020
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: webmock
105
- requirement: &70351908602140 !ruby/object:Gem::Requirement
105
+ requirement: &70164012488760 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ~>
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: '1.7'
111
111
  type: :development
112
112
  prerelease: false
113
- version_requirements: *70351908602140
113
+ version_requirements: *70164012488760
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: therubyracer
116
- requirement: &70351908599800 !ruby/object:Gem::Requirement
116
+ requirement: &70164012488340 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ! '>='
@@ -121,7 +121,7 @@ dependencies:
121
121
  version: '0'
122
122
  type: :development
123
123
  prerelease: false
124
- version_requirements: *70351908599800
124
+ version_requirements: *70164012488340
125
125
  description: Rack middleware for skinning pages using a specific template
126
126
  email:
127
127
  - bengriffiths@gmail.com
@@ -157,7 +157,6 @@ files:
157
157
  - test/fixtures/500.html.erb
158
158
  - test/fixtures/wrapper.html.erb
159
159
  - test/google_analytics_test.rb
160
- - test/header_filtering_test.rb
161
160
  - test/headers_test.rb
162
161
  - test/processors/body_inserter_test.rb
163
162
  - test/processors/header_context_inserter_test.rb
@@ -177,12 +176,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
176
  - - ! '>='
178
177
  - !ruby/object:Gem::Version
179
178
  version: '0'
179
+ segments:
180
+ - 0
181
+ hash: -1615013662764741884
180
182
  required_rubygems_version: !ruby/object:Gem::Requirement
181
183
  none: false
182
184
  requirements:
183
185
  - - ! '>='
184
186
  - !ruby/object:Gem::Version
185
187
  version: '0'
188
+ segments:
189
+ - 0
190
+ hash: -1615013662764741884
186
191
  requirements: []
187
192
  rubyforge_project: slimmer
188
193
  rubygems_version: 1.8.11
@@ -194,7 +199,6 @@ test_files:
194
199
  - test/fixtures/500.html.erb
195
200
  - test/fixtures/wrapper.html.erb
196
201
  - test/google_analytics_test.rb
197
- - test/header_filtering_test.rb
198
202
  - test/headers_test.rb
199
203
  - test/processors/body_inserter_test.rb
200
204
  - test/processors/header_context_inserter_test.rb
@@ -1,20 +0,0 @@
1
- require "test_helper"
2
-
3
- class HeaderFilteringTest < SlimmerIntegrationTest
4
- ALLOWED_HEADERS = ["Vary", "Set-Cookie", "Location", "Content-Type", "Expires", "Cache-Control", "WWW-Authenticate", "Last-Modified", "ETag"]
5
- FORBIDDEN_HEADERS = ["Anything-Else"]
6
-
7
- given_response 200, %{Anything}, (ALLOWED_HEADERS + FORBIDDEN_HEADERS).inject({}) {|memo, header| memo[header] = header.downcase; memo}
8
-
9
- def test_allows_whitelisted_headers
10
- ALLOWED_HEADERS.each do |header|
11
- assert last_response.headers.keys.include?(header)
12
- end
13
- end
14
-
15
- def test_filters_other_headers
16
- FORBIDDEN_HEADERS.each do |header|
17
- refute last_response.headers.keys.include?(header)
18
- end
19
- end
20
- end