Esempio n. 1
0
    def __init__(self, parameters={}):

        self.cab_filename = parameters.get("cab_filename", None)
        self.max_data = parameters.get("max_data", 0)
        self.cabset = parameters.get("cabset", None)
        self.size = 0

        index_in_set = parameters.get("index_in_set", 0)
        cfdata_reserve = parameters.get("cfdata_reserve", 0)
        cfheader_reserve = parameters.get("cfheader_reserve", 0)
        cffolder_reserve = parameters.get("cffolder_reserve", 0)

        if cfheader_reserve != 0 or cffolder_reserve != 0 or cfdata_reserve != 0:
            flags = CFHEADER.cfhdrRESERVE_PRESENT
        else:
            flags = 0x0000

        reserve = {
            'cbCFHeader': cfheader_reserve,
            'cbCFFolder': cffolder_reserve,
            'cbCFData': cfdata_reserve
        }

        self.cfheader = CFHEADER(flags=flags, reserve=reserve)
        self.cfheader.iCabinet = index_in_set

        self.cffolder_list = []
        self.cffile_list = []
        self.cfdata_list = []

        # This is a help for calculating fields, is not part of the specification
        self.folder_id = 0
Esempio n. 2
0
 def test_cffolder_add_file(self):
     reserve = {'cbCFHeader': 0, 'cbCFFolder': 0, 'cbCFData': 0}
     cfheader = CFHEADER(flags=0, reserve=reserve)
     cffolder = CFFOLDER(cfheader=cfheader)
     cffile = CFFILE(cffolder=cffolder, filename="trav.txt")
     cffolder.add_file(cffile)
     self.assertEquals(1, cfheader.cFiles)
Esempio n. 3
0
 def test_cfdata_with_reserve(self):
     data = "this is the data"
     reserve = {'cbCFHeader': 0, 'cbCFFolder': 0, 'cbCFData': 20}
     cfheader = CFHEADER(flags=CFHEADER.cfhdrRESERVE_PRESENT,
                         reserve=reserve)
     cffolder = CFFOLDER(cfheader=cfheader)
     cfdata = CFDATA(cffolder=cffolder, data=data)
     self.assertEquals(20, len(cfdata.abReserve))
     self.assertEquals(len(cfdata), len(repr(cfdata)))
Esempio n. 4
0
 def test_cffolder_add_data(self):
     reserve = {'cbCFHeader': 0, 'cbCFFolder': 0, 'cbCFData': 0}
     cfheader = CFHEADER(flags=0, reserve=reserve)
     cffolder = CFFOLDER(cfheader=cfheader)
     cfdata = CFDATA(data="testdata1")
     cffolder.add_data(cfdata)
     cfdata = CFDATA(data="testdata2")
     cffolder.add_data(cfdata)
     self.assertEquals(2, cffolder.cCFData)
Esempio n. 5
0
    def test_cfheader_signature(self):
        """
        This method checks a cfheader complies with basic specification
        """
        reserve = {'cbCFHeader': 0, 'cbCFFolder': 0, 'cbCFData': 0}
        cfheader = CFHEADER(flags=0, reserve=reserve)

        self.assertEquals("MSCF", cfheader.signature)
        self.assertEquals(0x01, cfheader.versionMajor)
        self.assertEquals(0x03, cfheader.versionMinor)
Esempio n. 6
0
    def test_cfheader_reserve(self):
        """
        This method checks a cfheader actually reserves the bytes that are specified
        """
        bytes_to_reserve = random.randint(1, 30)
        reserve = {
            'cbCFHeader': bytes_to_reserve,
            'cbCFFolder': 0,
            'cbCFData': 0
        }
        cfheader = CFHEADER(flags=CFHEADER.cfhdrRESERVE_PRESENT,
                            reserve=reserve)

        self.assertEquals(CFHEADER.cfhdrRESERVE_PRESENT,
                          cfheader.flags & CFHEADER.cfhdrRESERVE_PRESENT)
        self.assertEquals(bytes_to_reserve, cfheader.cbCFHeader)
        self.assertEquals(bytes_to_reserve, len(cfheader.abReserve))
        self.assertEquals(len(cfheader), len(repr(cfheader)))
Esempio n. 7
0
 def test_cfheader_add_folder(self):
     reserve = {'cbCFHeader': 0, 'cbCFFolder': 0, 'cbCFData': 0}
     cfheader = CFHEADER(flags=0, reserve=reserve)
     cffolder = CFFOLDER(cfheader=cfheader)
     cfheader.add_folder(cffolder)
     self.assertEquals(1, cfheader.cFolders)
Esempio n. 8
0
 def test_cffolder_with_reserve(self):
     reserve = {'cbCFHeader': 0, 'cbCFFolder': 20, 'cbCFData': 0}
     cfheader = CFHEADER(flags=CFHEADER.cfhdrRESERVE_PRESENT,
                         reserve=reserve)
     cffolder = CFFOLDER(cfheader=cfheader)
     self.assertEquals(20, len(cffolder.abReserve))