about summary refs log tree commit diff
diff options
context:
space:
mode:
authorslice <ryaneft@gmail.com>2019-03-31 22:30:46 -0700
committerEugen Rochko <eugen@zeonfederated.com>2019-04-01 07:30:46 +0200
commit85973f4f37c8b94422f267654018d0d7f88ba32b (patch)
tree76aa1adb9f7543f68af7f1dbeb735386e5c03a97
parentabdf225353dfb9791933b5d2dbcd038dcdb656df (diff)
Improvements to image upload validation and creation (#10431)
* Check if image value is nil? before creating an image

Check if uploaded images aren't nil before creating SiteUpload models
for them.

* Validate presence of file in SiteUpload

* Fix file presence validation

* Fabricate SiteUpload#file

* Add link to Creative Commons license
-rw-r--r--app/models/form/admin_settings.rb2
-rw-r--r--app/models/site_upload.rb1
-rw-r--r--spec/fabricators/assets/TEAPOT6
-rw-r--r--spec/fabricators/assets/utah_teapot.pngbin0 -> 248232 bytes
-rw-r--r--spec/fabricators/site_upload_fabricator.rb1
5 files changed, 9 insertions, 1 deletions
diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb
index 85a6e6dff..d3af8c30f 100644
--- a/app/models/form/admin_settings.rb
+++ b/app/models/form/admin_settings.rb
@@ -67,7 +67,7 @@ class Form::AdminSettings
     KEYS.each do |key|
       value = instance_variable_get("@#{key}")
 
-      if UPLOAD_KEYS.include?(key)
+      if UPLOAD_KEYS.include?(key) && !value.nil?
         upload = SiteUpload.where(var: key).first_or_initialize(var: key)
         upload.update(file: value)
       else
diff --git a/app/models/site_upload.rb b/app/models/site_upload.rb
index 14d683767..cf10b30fc 100644
--- a/app/models/site_upload.rb
+++ b/app/models/site_upload.rb
@@ -18,6 +18,7 @@ class SiteUpload < ApplicationRecord
   has_attached_file :file
 
   validates_attachment_content_type :file, content_type: /\Aimage\/.*\z/
+  validates :file, presence: true
   validates :var, presence: true, uniqueness: true
 
   before_save :set_meta
diff --git a/spec/fabricators/assets/TEAPOT b/spec/fabricators/assets/TEAPOT
new file mode 100644
index 000000000..e624ecb4c
--- /dev/null
+++ b/spec/fabricators/assets/TEAPOT
@@ -0,0 +1,6 @@
+This "Utah teapot" photograph is licensed under the Creative Commons
+Attribution-Share Alike 3.0 Unported license:
+  https://creativecommons.org/licenses/by-sa/3.0/deed.en
+
+Original source of work:
+  https://commons.wikimedia.org/wiki/File:Utah_teapot_simple_2.png
diff --git a/spec/fabricators/assets/utah_teapot.png b/spec/fabricators/assets/utah_teapot.png
new file mode 100644
index 000000000..6708361e5
--- /dev/null
+++ b/spec/fabricators/assets/utah_teapot.png
Binary files differdiff --git a/spec/fabricators/site_upload_fabricator.rb b/spec/fabricators/site_upload_fabricator.rb
index 4a171486f..2efc57e28 100644
--- a/spec/fabricators/site_upload_fabricator.rb
+++ b/spec/fabricators/site_upload_fabricator.rb
@@ -1,2 +1,3 @@
 Fabricator(:site_upload) do
+  file { File.open(File.join(Rails.root, 'spec', 'fabricators', 'assets', 'utah_teapot.png')) }
 end