monkey_forms 0.0.17 → 0.0.18

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.
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ # Specify which ruby versions you wish to run your tests on, each version will be used
2
+ rvm:
3
+ - 1.8.7 # (current default)
4
+ - 1.9.2
5
+ - rbx
6
+ - rbx-2.0
7
+ - ree
8
+ - jruby
9
+ - ruby-head
@@ -4,10 +4,11 @@ require 'zlib'
4
4
  # Saves form as cookie as json+gzip
5
5
  class MonkeyForms::Serializers::GzipCookie
6
6
  def initialize options={}
7
- @cookie_name = options[:name]
8
- @domain = options[:domain]
7
+ @cookie_name = options[:name].to_s
8
+ @domain = options[:domain].to_s
9
9
  @secure = options[:secure]
10
10
  @httponly = options[:httponly]
11
+ @path = (options[:path] || '/').to_s
11
12
  end
12
13
 
13
14
  def load options={}
@@ -16,7 +17,11 @@ class MonkeyForms::Serializers::GzipCookie
16
17
  return result if request.blank?
17
18
  cookie = request.cookies[@cookie_name]
18
19
  return result if cookie.nil? or cookie.empty?
19
- result.merge!(ActiveSupport::JSON.decode(Zlib::Inflate.inflate(cookie)).stringify_keys)
20
+ begin
21
+ result.merge!(ActiveSupport::JSON.decode(Zlib::Inflate.inflate(cookie)).stringify_keys)
22
+ rescue Zlib::DataError
23
+ return result
24
+ end
20
25
  end
21
26
 
22
27
  def save options = {}
@@ -28,7 +33,8 @@ class MonkeyForms::Serializers::GzipCookie
28
33
  cookie_hash = { :value => cookie_json,
29
34
  :httponly => @httponly,
30
35
  :secure => @secure,
31
- :domain => @domain }
36
+ :domain => @domain,
37
+ :path => @path }
32
38
  response.set_cookie(@cookie_name, cookie_hash)
33
39
  end
34
40
  end
@@ -1,3 +1,3 @@
1
1
  module MonkeyForms
2
- VERSION = "0.0.17"
2
+ VERSION = "0.0.18"
3
3
  end
data/lib/monkey_forms.rb CHANGED
@@ -68,6 +68,9 @@ module MonkeyForms
68
68
 
69
69
  self.class.attributes.each do |a|
70
70
  @attributes[a] ||= ""
71
+ if self.class.strip_attributes?
72
+ @attributes[a].strip! if @attributes[a].class == String
73
+ end
71
74
  end
72
75
  end
73
76
  end
@@ -93,7 +96,7 @@ module MonkeyForms
93
96
  @_model_name = (@_form_name.try(:to_s) ||
94
97
  superclass.instance_variable_get(:@_form_name).try(:to_s) ||
95
98
  name.underscore).try(:underscore)
96
- %w( singular human i18n_key partial_path plural ).each do |method|
99
+ %w( singular human i18n_key partial_path plural param_key).each do |method|
97
100
  @_model_name.class_eval do
98
101
  define_method method do
99
102
  self
@@ -112,6 +115,15 @@ module MonkeyForms
112
115
  @form_storage = storage_object
113
116
  end
114
117
 
118
+ def dont_strip_form_attributes!
119
+ @_strip_attributes = false
120
+ end
121
+
122
+ def strip_attributes?
123
+ return true if !defined?(@_strip_attributes)
124
+ return @_strip_attributes
125
+ end
126
+
115
127
  def set_form_attribute_human_names options
116
128
  @_form_attribute_names ||= {}
117
129
  @_form_attribute_names.merge!(options)
@@ -24,6 +24,14 @@ class TestMonkeyForms < MiniTest::Unit::TestCase
24
24
  assert_equal "Joe <joe@tanga.com>", last_response.body
25
25
  end
26
26
 
27
+ def test_form_post_with_bad_cookie
28
+ post "https://test.domain.com/form", :form => { :name => "Joe" }
29
+ set_cookie "order_cookie=bad_value; path=/; domain=test.domain.com; secure"
30
+ post "https://test.domain.com/form", :form => { :name => "Joe" }
31
+ assert_equal 200, last_response.status
32
+ skip "i can't get this test to fail. :("
33
+ end
34
+
27
35
  def test_attribute_name
28
36
  o = OrderForm.new
29
37
  o.valid?
@@ -42,6 +50,7 @@ class TestMonkeyForms < MiniTest::Unit::TestCase
42
50
  assert last_response.headers["Set-Cookie"].include?("HttpOnly")
43
51
  assert last_response.headers["Set-Cookie"].include?("secure")
44
52
  assert last_response.headers["Set-Cookie"].include?("test.domain.com")
53
+ assert last_response.headers["Set-Cookie"].include?("path=/;")
45
54
  end
46
55
 
47
56
  def test_setters_from_inside_form
@@ -117,6 +126,11 @@ class TestMonkeyForms < MiniTest::Unit::TestCase
117
126
  assert_equal "Joe <joe@tanga.com>", o.person
118
127
  end
119
128
 
129
+ def test_can_access_attributes_stripped
130
+ o = OrderForm.new :form => { :email => "joe@tanga.com" , :name => " Joe " }
131
+ assert_equal "Joe <joe@tanga.com>", o.person
132
+ end
133
+
120
134
  def test_array
121
135
  submit_form(:line_items => [ {:id => "previous"}])
122
136
  attributes = submit_form(:line_items => [ {:id => "new"}])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monkey_forms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.0.18
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-07-03 00:00:00.000000000 -07:00
13
- default_executable:
12
+ date: 2011-09-14 00:00:00.000000000Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: activemodel
17
- requirement: &2162256400 !ruby/object:Gem::Requirement
16
+ requirement: &70272335220300 !ruby/object:Gem::Requirement
18
17
  none: false
19
18
  requirements:
20
19
  - - ! '>='
@@ -22,10 +21,10 @@ dependencies:
22
21
  version: '0'
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *2162256400
24
+ version_requirements: *70272335220300
26
25
  - !ruby/object:Gem::Dependency
27
26
  name: minitest
28
- requirement: &2162255960 !ruby/object:Gem::Requirement
27
+ requirement: &70272335219740 !ruby/object:Gem::Requirement
29
28
  none: false
30
29
  requirements:
31
30
  - - ! '>='
@@ -33,10 +32,10 @@ dependencies:
33
32
  version: '0'
34
33
  type: :development
35
34
  prerelease: false
36
- version_requirements: *2162255960
35
+ version_requirements: *70272335219740
37
36
  - !ruby/object:Gem::Dependency
38
37
  name: rake
39
- requirement: &2162255100 !ruby/object:Gem::Requirement
38
+ requirement: &70272335219240 !ruby/object:Gem::Requirement
40
39
  none: false
41
40
  requirements:
42
41
  - - ! '>='
@@ -44,10 +43,10 @@ dependencies:
44
43
  version: '0'
45
44
  type: :development
46
45
  prerelease: false
47
- version_requirements: *2162255100
46
+ version_requirements: *70272335219240
48
47
  - !ruby/object:Gem::Dependency
49
48
  name: sinatra
50
- requirement: &2162254500 !ruby/object:Gem::Requirement
49
+ requirement: &70272335218620 !ruby/object:Gem::Requirement
51
50
  none: false
52
51
  requirements:
53
52
  - - ! '>='
@@ -55,10 +54,10 @@ dependencies:
55
54
  version: '0'
56
55
  type: :development
57
56
  prerelease: false
58
- version_requirements: *2162254500
57
+ version_requirements: *70272335218620
59
58
  - !ruby/object:Gem::Dependency
60
59
  name: rack-test
61
- requirement: &2162253900 !ruby/object:Gem::Requirement
60
+ requirement: &70272335217960 !ruby/object:Gem::Requirement
62
61
  none: false
63
62
  requirements:
64
63
  - - ! '>='
@@ -66,10 +65,10 @@ dependencies:
66
65
  version: '0'
67
66
  type: :development
68
67
  prerelease: false
69
- version_requirements: *2162253900
68
+ version_requirements: *70272335217960
70
69
  - !ruby/object:Gem::Dependency
71
70
  name: shotgun
72
- requirement: &2162253440 !ruby/object:Gem::Requirement
71
+ requirement: &70272335217120 !ruby/object:Gem::Requirement
73
72
  none: false
74
73
  requirements:
75
74
  - - ! '>='
@@ -77,10 +76,10 @@ dependencies:
77
76
  version: '0'
78
77
  type: :development
79
78
  prerelease: false
80
- version_requirements: *2162253440
79
+ version_requirements: *70272335217120
81
80
  - !ruby/object:Gem::Dependency
82
81
  name: haml
83
- requirement: &2162252820 !ruby/object:Gem::Requirement
82
+ requirement: &70272335216360 !ruby/object:Gem::Requirement
84
83
  none: false
85
84
  requirements:
86
85
  - - ! '>='
@@ -88,10 +87,10 @@ dependencies:
88
87
  version: '0'
89
88
  type: :development
90
89
  prerelease: false
91
- version_requirements: *2162252820
90
+ version_requirements: *70272335216360
92
91
  - !ruby/object:Gem::Dependency
93
92
  name: msgpack
94
- requirement: &2162252360 !ruby/object:Gem::Requirement
93
+ requirement: &70272335215640 !ruby/object:Gem::Requirement
95
94
  none: false
96
95
  requirements:
97
96
  - - ! '>='
@@ -99,7 +98,7 @@ dependencies:
99
98
  version: '0'
100
99
  type: :development
101
100
  prerelease: false
102
- version_requirements: *2162252360
101
+ version_requirements: *70272335215640
103
102
  description: Helps make complex forms
104
103
  email:
105
104
  - joe@tanga.com
@@ -108,6 +107,7 @@ extensions: []
108
107
  extra_rdoc_files: []
109
108
  files:
110
109
  - .gitignore
110
+ - .travis.yml
111
111
  - BUGS
112
112
  - Gemfile
113
113
  - NOTES
@@ -150,7 +150,6 @@ files:
150
150
  - test/sinatra/sample_sinatra.rb
151
151
  - test/sinatra/views/form.haml
152
152
  - test/test_monkey_forms.rb
153
- has_rdoc: true
154
153
  homepage: https://github.com/joevandyk/monkey_forms
155
154
  licenses: []
156
155
  post_install_message:
@@ -165,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
165
164
  version: '0'
166
165
  segments:
167
166
  - 0
168
- hash: -258444513416663442
167
+ hash: 1638740973580231578
169
168
  required_rubygems_version: !ruby/object:Gem::Requirement
170
169
  none: false
171
170
  requirements:
@@ -174,10 +173,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
174
173
  version: '0'
175
174
  segments:
176
175
  - 0
177
- hash: -258444513416663442
176
+ hash: 1638740973580231578
178
177
  requirements: []
179
178
  rubyforge_project: monkey_forms
180
- rubygems_version: 1.6.2
179
+ rubygems_version: 1.8.10
181
180
  signing_key:
182
181
  specification_version: 3
183
182
  summary: Helps make complex forms