def test_sapcar_archive_add_file(self): """Test some basic construction of a SAP CAR archive adding from an existent file""" ar = SAPCARArchive("somefile", "w") ar.add_file(self.test_filename) ar.add_file(self.test_filename, archive_filename=self.test_filename+"two") self.assertEqual("2.01", ar.version) self.assertEqual(2, len(ar.files)) self.assertEqual(2, len(ar.files_names)) self.assertListEqual([self.test_filename, self.test_filename+"two"], ar.files_names) self.assertListEqual([self.test_filename, self.test_filename+"two"], ar.files.keys()) for filename in [self.test_filename, self.test_filename+"two"]: af = ar.open(filename) self.assertEqual(self.test_string, af.read()) af.close() ff = ar.files[filename] self.assertEqual(len(self.test_string), ff.size) self.assertEqual(filename, ff.filename) self.assertTrue(ff.check_checksum()) self.assertEqual(ff.calculate_checksum(self.test_string), ff.checksum) af = ff.open() self.assertEqual(self.test_string, af.read()) af.close()
def test_sapcar_archive_add_file(self): """Test some basic construction of a SAP CAR archive adding from an existent file""" ar = SAPCARArchive(self.test_archive_file, "w") ar.add_file(self.test_filename) ar.add_file(self.test_filename, archive_filename=self.test_filename + "two") self.assertEqual("2.01", ar.version) self.assertEqual(2, len(ar.files)) self.assertEqual(2, len(ar.files_names)) self.assertListEqual([self.test_filename, self.test_filename + "two"], ar.files_names) self.assertListEqual([self.test_filename, self.test_filename + "two"], ar.files.keys()) for filename in [self.test_filename, self.test_filename + "two"]: af = ar.open(filename) self.assertEqual(self.test_string, af.read()) af.close() ff = ar.files[filename] self.assertEqual(len(self.test_string), ff.size) self.assertEqual(filename, ff.filename) self.assertTrue(ff.check_checksum()) self.assertEqual(ff.calculate_checksum(self.test_string), ff.checksum) af = ff.open() self.assertEqual(self.test_string, af.read()) af.close() ar.write() ar.close()
def infect_sar_file(sar_filename, inject_files): """ Receives a SAR file and infects it by adding new files :type sar_filename: string :param sar_filename: name of the SAR file to infect :type inject_files: list of strings :param inject_files: list of files to inject into the SAR file """ sar = SAPCARArchive(sar_filename, "r+") # Add each of the files specified as inject files for filename, archive_filename in inject_files: sar.add_file(filename, archive_filename=archive_filename) # Writes the modified file sar.write()