|
| 1 | +require_relative '../../lib/AppleBackupFile.rb' |
| 2 | + |
| 3 | +describe AppleBackupFile, :expensive => true do |
| 4 | + before(:context) do |
| 5 | + TEST_OUTPUT_DIR.mkpath |
| 6 | + end |
| 7 | + after(:context) do |
| 8 | + TEST_OUTPUT_DIR.rmtree |
| 9 | + end |
| 10 | + |
| 11 | + let(:valid_backup) { AppleBackupFile.new(TEST_FORMATTING_FILE, TEST_OUTPUT_DIR) } |
| 12 | + |
| 13 | + context "validations" do |
| 14 | + it "validates a NoteStore.sqlite file", :missing_data => !TEST_FORMATTING_FILE_EXIST do |
| 15 | + expect(valid_backup.valid?).to be true |
| 16 | + end |
| 17 | + |
| 18 | + it "fails to validate a non-NoteStore sqlite file", :missing_data => !TEST_FALSE_SQLITE_FILE_EXIST do |
| 19 | + backup = AppleBackupFile.new(TEST_FALSE_SQLITE_FILE, TEST_OUTPUT_DIR) |
| 20 | + expect(backup.valid?).to be false |
| 21 | + end |
| 22 | + |
| 23 | + it "fails to validate a non-sqlite file", :missing_data => !TEST_README_FILE_EXIST do |
| 24 | + backup = AppleBackupFile.new(TEST_README_FILE, TEST_OUTPUT_DIR) |
| 25 | + expect(backup.valid?).to be false |
| 26 | + end |
| 27 | + |
| 28 | + it "fails to validate an itunes backup folder", :missing_data => !TEST_ITUNES_DIR_EXIST do |
| 29 | + backup = AppleBackupFile.new(TEST_ITUNES_DIR, TEST_OUTPUT_DIR) |
| 30 | + expect(backup.valid?).to be false |
| 31 | + end |
| 32 | + |
| 33 | + it "fails to validate a physical backup folder", :missing_data => !TEST_PHYSICAL_DIR_EXIST do |
| 34 | + backup = AppleBackupFile.new(TEST_PHYSICAL_DIR, TEST_OUTPUT_DIR) |
| 35 | + expect(backup.valid?).to be false |
| 36 | + end |
| 37 | + |
| 38 | + it "fails to validate a mac backup folder", :missing_data => !TEST_MAC_DIR_EXIST do |
| 39 | + backup = AppleBackupFile.new(TEST_MAC_DIR, TEST_OUTPUT_DIR) |
| 40 | + expect(backup.valid?).to be false |
| 41 | + end |
| 42 | + end |
| 43 | + |
| 44 | + context "versions" do |
| 45 | + |
| 46 | + it "correctly identifies all major versions" do |
| 47 | + # To do: acquire iOS 11 sample for here |
| 48 | + TEST_FILE_VERSIONS.each_pair do |version, version_file| |
| 49 | + backup = AppleBackupFile.new(version_file, TEST_OUTPUT_DIR) |
| 50 | + expect(backup.note_stores[0].version.version_number).to be version |
| 51 | + end |
| 52 | + end |
| 53 | + end |
| 54 | + |
| 55 | + context "files", :missing_data => !TEST_FORMATTING_FILE_EXIST do |
| 56 | + it "does not try to assert where a file is" do |
| 57 | + backup = AppleBackupFile.new(TEST_FORMATTING_FILE, TEST_OUTPUT_DIR) |
| 58 | + expect(valid_backup.get_real_file_path("NoteStore.sqlite")).to be nil |
| 59 | + end |
| 60 | + end |
| 61 | + |
| 62 | + context "note stores", :missing_data => !TEST_FORMATTING_FILE_EXIST do |
| 63 | + it "knows how to find just a modern note store" do |
| 64 | + expect(valid_backup.note_stores.length).to be 1 |
| 65 | + end |
| 66 | + end |
| 67 | +end |
0 commit comments