Skip to content
Snippets Groups Projects

Add extra validation in corpus model

Merged Aditya Tiwari requested to merge 345454-add-validation-for-corpus into master
6 files
+ 42
3
Compare changes
  • Side-by-side
  • Inline
Files
6
@@ -6,11 +6,14 @@ module Coverage
@@ -6,11 +6,14 @@ module Coverage
class Corpus < ApplicationRecord
class Corpus < ApplicationRecord
self.table_name = 'coverage_fuzzing_corpuses'
self.table_name = 'coverage_fuzzing_corpuses'
 
ACCEPTED_FORMATS = %w(.zip).freeze
 
belongs_to :package, class_name: 'Packages::Package'
belongs_to :package, class_name: 'Packages::Package'
belongs_to :user, optional: true
belongs_to :user, optional: true
belongs_to :project
belongs_to :project
validate :project_same_as_package_project
validate :project_same_as_package_project
 
validate :validate_file_format, on: :create
scope :by_project_id, -> (project_id) do
scope :by_project_id, -> (project_id) do
joins(:package).where(package: { project_id: project_id })
joins(:package).where(package: { project_id: project_id })
@@ -27,6 +30,17 @@ def project_same_as_package_project
@@ -27,6 +30,17 @@ def project_same_as_package_project
errors.add(:package_id, 'should belong to the associated project')
errors.add(:package_id, 'should belong to the associated project')
end
end
end
end
 
 
def validate_file_format
 
unless ACCEPTED_FORMATS.include? File.extname(first_package_file.file_name)
 
errors.add(:package_id, 'format is not supported')
 
end
 
end
 
 
# Currently we are only supporting one package_file per package for a corpus model.
 
def first_package_file
 
@package_file ||= package.package_files.first
 
end
end
end
end
end
end
end
Loading