REFACTOR: Simplify backup version check
Adds specs for inalid version number in metadata file.
Follow-up to c3cd2389fe
This commit is contained in:
parent
135d09d671
commit
68a7ae3091
|
@ -19,11 +19,7 @@ module BackupRestore
|
||||||
def validate
|
def validate
|
||||||
metadata = extract_metadata
|
metadata = extract_metadata
|
||||||
|
|
||||||
if metadata[:version].blank?
|
if !metadata[:version].is_a?(Integer)
|
||||||
raise MetaDataError.new("Version not defined in metadata file.")
|
|
||||||
end
|
|
||||||
|
|
||||||
if !metadata[:version].is_a?(String) && !metadata[:version].is_a?(Integer)
|
|
||||||
raise MetaDataError.new("Version is not in a valid format.")
|
raise MetaDataError.new("Version is not in a valid format.")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -23,52 +23,77 @@ describe BackupRestore::MetaDataHandler do
|
||||||
BackupRestore::MetaDataHandler.new(logger, filename, tmp_directory).validate
|
BackupRestore::MetaDataHandler.new(logger, filename, tmp_directory).validate
|
||||||
end
|
end
|
||||||
|
|
||||||
it "extracts metadata from file when metadata file exists" do
|
context "metadata file" do
|
||||||
metadata = '{"source":"discourse","version":20160329101122}'
|
it "extracts metadata from file when metadata file exists" do
|
||||||
|
metadata = '{"source":"discourse","version":20160329101122}'
|
||||||
|
|
||||||
with_metadata_file(metadata) do |dir|
|
with_metadata_file(metadata) do |dir|
|
||||||
expect(validate_metadata(backup_filename, dir))
|
expect(validate_metadata(backup_filename, dir))
|
||||||
.to include(version: 20160329101122)
|
.to include(version: 20160329101122)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an exception when the metadata file contains invalid JSON" do
|
||||||
|
currupt_metadata = '{"version":20160329101122'
|
||||||
|
|
||||||
|
with_metadata_file(currupt_metadata) do |dir|
|
||||||
|
expect { validate_metadata(backup_filename, dir) }
|
||||||
|
.to raise_error(BackupRestore::MetaDataError)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an exception when the metadata file is empty" do
|
||||||
|
with_metadata_file('') do |dir|
|
||||||
|
expect { validate_metadata(backup_filename, dir) }
|
||||||
|
.to raise_error(BackupRestore::MetaDataError)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an exception when the metadata file contains an invalid version number" do
|
||||||
|
metadata = '{"source":"discourse","version":"1abcdefghijklm"}'
|
||||||
|
|
||||||
|
with_metadata_file(metadata) do |dir|
|
||||||
|
expect { validate_metadata(backup_filename, dir) }
|
||||||
|
.to raise_error(BackupRestore::MetaDataError)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an exception when the metadata file contains an empty version number" do
|
||||||
|
metadata = '{"source":"discourse","version":""}'
|
||||||
|
|
||||||
|
with_metadata_file(metadata) do |dir|
|
||||||
|
expect { validate_metadata(backup_filename, dir) }
|
||||||
|
.to raise_error(BackupRestore::MetaDataError)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it "extracts metadata from filename when metadata file does not exist" do
|
context "filename" do
|
||||||
with_metadata_file(nil) do |dir|
|
it "extracts metadata from filename when metadata file does not exist" do
|
||||||
expect(validate_metadata(backup_filename, dir))
|
with_metadata_file(nil) do |dir|
|
||||||
.to include(version: 20191108000414)
|
expect(validate_metadata(backup_filename, dir))
|
||||||
|
.to include(version: 20191108000414)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
it "raises an exception when the metadata file contains invalid JSON" do
|
it "raises an exception when the filename contains no version number" do
|
||||||
currupt_metadata = '{"version":20160329101122'
|
filename = 'discourse-2019-11-18-143242.tar.gz'
|
||||||
|
|
||||||
with_metadata_file(currupt_metadata) do |dir|
|
expect { validate_metadata(filename, nil) }
|
||||||
expect { validate_metadata(backup_filename, dir) }
|
|
||||||
.to raise_error(BackupRestore::MetaDataError)
|
.to raise_error(BackupRestore::MetaDataError)
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
it "raises an exception when the metadata file is empty" do
|
it "raises an exception when the filename contains an invalid version number" do
|
||||||
with_metadata_file('') do |dir|
|
filename = 'discourse-2019-11-18-143242-v123456789.tar.gz'
|
||||||
expect { validate_metadata(backup_filename, dir) }
|
expect { validate_metadata(filename, nil) }
|
||||||
|
.to raise_error(BackupRestore::MetaDataError)
|
||||||
|
|
||||||
|
filename = 'discourse-2019-11-18-143242-v1abcdefghijklm.tar.gz'
|
||||||
|
expect { validate_metadata(filename, nil) }
|
||||||
.to raise_error(BackupRestore::MetaDataError)
|
.to raise_error(BackupRestore::MetaDataError)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it "raises an exception when the filename contains no version number" do
|
|
||||||
filename = 'discourse-2019-11-18-143242.tar.gz'
|
|
||||||
|
|
||||||
expect { validate_metadata(filename, nil) }
|
|
||||||
.to raise_error(BackupRestore::MetaDataError)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "raises an exception when the filename contains an invalid version number" do
|
|
||||||
filename = 'discourse-2019-11-18-143242-v123456789.tar.gz'
|
|
||||||
|
|
||||||
expect { validate_metadata(filename, nil) }
|
|
||||||
.to raise_error(BackupRestore::MetaDataError)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "raises an exception when the backup's version is newer than the current version" do
|
it "raises an exception when the backup's version is newer than the current version" do
|
||||||
new_backup_filename = 'discourse-2019-11-18-143242-v20191113193141.sql.gz'
|
new_backup_filename = 'discourse-2019-11-18-143242-v20191113193141.sql.gz'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue