file_validators 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/README.md +0 -1
- data/lib/file_validators/validators/file_content_type_validator.rb +1 -1
- data/lib/file_validators/validators/file_size_validator.rb +1 -1
- data/lib/file_validators/version.rb +1 -1
- data/spec/integration/file_content_type_validation_integration_spec.rb +12 -2
- data/spec/integration/file_size_validator_integration_spec.rb +12 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 862ed2a30f76ed277f22f80773319c3627f991dd
|
4
|
+
data.tar.gz: c434e6754743f0f6cd819992a0d4475bc5fc8176
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33426eed1c228b06716a841826221a4f6cb87ed508cc1c58c745ff432c5a18915d8230e5d227146d6a4642488baf3f9e5d4c326b947de7bbb5e6cf8b5d221efc
|
7
|
+
data.tar.gz: b0b2f36ce62fc8dd9f93fff6ac65a5a6440499893c3ac09e8a8f053914f89d9180e6a9999c570d49382265688f15ffe7bce10d92809bd012e78573119760afa5
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -142,7 +142,6 @@ of the files. It also detects media type spoofing (see more in [security](#secur
|
|
142
142
|
`:relaxed` mode uses file name to detect the content type using `mime-types` gem.
|
143
143
|
If mode option is not set then the validator uses form supplied content type.
|
144
144
|
```ruby
|
145
|
-
# string
|
146
145
|
validates :avatar, file_content_type: { allow: 'image/jpeg', mode: :strict }
|
147
146
|
validates :avatar, file_content_type: { allow: 'image/jpeg', mode: :relaxed }
|
148
147
|
```
|
@@ -12,6 +12,7 @@ module ActiveModel
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def validate_each(record, attribute, value)
|
15
|
+
value = JSON.parse(value) if value.is_a?(String)
|
15
16
|
unless value.blank?
|
16
17
|
mode = option_value(record, :mode)
|
17
18
|
content_type = get_content_type(value, mode)
|
@@ -63,7 +64,6 @@ module ActiveModel
|
|
63
64
|
file_name = get_file_name(value)
|
64
65
|
MIME::Types.type_for(file_name).first
|
65
66
|
else
|
66
|
-
value = JSON.parse(value) if value.is_a?(String)
|
67
67
|
value = OpenStruct.new(value) if value.is_a?(Hash)
|
68
68
|
value.content_type
|
69
69
|
end
|
@@ -13,9 +13,9 @@ module ActiveModel
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def validate_each(record, attribute, value)
|
16
|
+
value = JSON.parse(value) if value.is_a?(String)
|
16
17
|
unless value.blank?
|
17
18
|
options.slice(*CHECKS.keys).each do |option, option_value|
|
18
|
-
value = JSON.parse(value) if value.is_a?(String)
|
19
19
|
value = OpenStruct.new(value) if value.is_a?(Hash)
|
20
20
|
option_value = option_value.call(record) if option_value.is_a?(Proc)
|
21
21
|
unless valid_size?(value.size, option, option_value)
|
@@ -342,6 +342,11 @@ describe 'File Content Type integration with ActiveModel' do
|
|
342
342
|
before { subject.avatar = "{\"filename\":\"img140910_88338.jpg\",\"content_type\":\"image/jpeg\",\"size\":13150}" }
|
343
343
|
it { is_expected.to be_valid }
|
344
344
|
end
|
345
|
+
|
346
|
+
context 'empty json string' do
|
347
|
+
before { subject.avatar = "{}" }
|
348
|
+
it { is_expected.to be_valid }
|
349
|
+
end
|
345
350
|
end
|
346
351
|
|
347
352
|
context 'image data as hash' do
|
@@ -355,12 +360,17 @@ describe 'File Content Type integration with ActiveModel' do
|
|
355
360
|
subject { Person.new }
|
356
361
|
|
357
362
|
context 'for invalid content type' do
|
358
|
-
before { subject.avatar = { "filename"
|
363
|
+
before { subject.avatar = { "filename" => "img140910_88338.GIF", "content_type" => "image/gif", "size" => 13150 } }
|
359
364
|
it { is_expected.not_to be_valid }
|
360
365
|
end
|
361
366
|
|
362
367
|
context 'for valid content type' do
|
363
|
-
before { subject.avatar = { "filename"
|
368
|
+
before { subject.avatar = { "filename" => "img140910_88338.jpg", "content_type" => "image/jpeg", "size" => 13150 } }
|
369
|
+
it { is_expected.to be_valid }
|
370
|
+
end
|
371
|
+
|
372
|
+
context 'empty hash' do
|
373
|
+
before { subject.avatar = {} }
|
364
374
|
it { is_expected.to be_valid }
|
365
375
|
end
|
366
376
|
end
|
@@ -226,6 +226,11 @@ describe 'File Size Validator integration with ActiveModel' do
|
|
226
226
|
before { subject.avatar = "{\"filename\":\"img140910_88338.GIF\",\"content_type\":\"image/gif\",\"size\":33150}" }
|
227
227
|
it { is_expected.to be_valid }
|
228
228
|
end
|
229
|
+
|
230
|
+
context 'empty json string' do
|
231
|
+
before { subject.avatar = "{}" }
|
232
|
+
it { is_expected.to be_valid }
|
233
|
+
end
|
229
234
|
end
|
230
235
|
|
231
236
|
context 'image data as hash' do
|
@@ -239,12 +244,17 @@ describe 'File Size Validator integration with ActiveModel' do
|
|
239
244
|
subject { Person.new }
|
240
245
|
|
241
246
|
context 'when file size is less than the specified size' do
|
242
|
-
before { subject.avatar = { "filename"
|
247
|
+
before { subject.avatar = { "filename" => "img140910_88338.GIF", "content_type" => "image/gif", "size" => 13150 } }
|
243
248
|
it { is_expected.not_to be_valid }
|
244
249
|
end
|
245
250
|
|
246
251
|
context 'when file size within the specified size' do
|
247
|
-
before { subject.avatar = { "filename"
|
252
|
+
before { subject.avatar = { "filename" => "img140910_88338.GIF", "content_type" => "image/gif", "size" => 33150 } }
|
253
|
+
it { is_expected.to be_valid }
|
254
|
+
end
|
255
|
+
|
256
|
+
context 'empty hash' do
|
257
|
+
before { subject.avatar = {} }
|
248
258
|
it { is_expected.to be_valid }
|
249
259
|
end
|
250
260
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: file_validators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ahmad Musaffa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|