예제 #1
0
    def test_add_dir_fo(self):
        marfile = os.path.join(self.tmpdir, 'test.mar')
        dirname = os.path.dirname(__file__)
        with MarFile(None, fileobj=open(marfile, "wb")) as m:
            m.add(dirname)

        # List out the files in dirname so we can compare
        my_files = []
        for root, dirs, files in os.walk(dirname):
            for f in files:
                my_files.append(os.path.join(root, f))

        with MarFile(None, fileobj=open(marfile, "rb")) as m:
            self.assertEquals(len(m.members), len(my_files))
            for member in m.members:
                self.assertTrue(member.name in my_files)
                self.assertEquals(member.size, os.path.getsize(member.name))
                self.assertEquals(member.flags,
                                  os.stat(member.name).st_mode & 0o777)

                extracted = m.extract(member, self.tmpdir)
                self.assertNotEquals(extracted, member.name)
                self.assertEquals(
                    open(extracted, 'rb').read(),
                    open(member.name, 'rb').read())
예제 #2
0
    def test_add_fo(self):
        marfile = os.path.join(self.tmpdir, 'test.mar')
        with MarFile(None, fileobj=open(marfile, "wb")) as m:
            m.add(__file__)

        with MarFile(None, fileobj=open(marfile, "rb")) as m:
            self.assertEquals(len(m.members), 1)
            self.assertEquals(m.members[0].size, os.path.getsize(__file__))
            self.assertEquals(m.members[0].flags,
                              os.stat(__file__).st_mode & 0o777)
            extracted = m.extract(m.members[0], self.tmpdir)
            self.assertEquals(
                open(extracted, 'rb').read(),
                open(__file__, 'rb').read())
예제 #3
0
    def test_additional_info_fo(self):
        marfile = os.path.join(self.tmpdir, 'test.mar')
        with MarFile(None, fileobj=open(marfile, "wb")) as m:
            info = AdditionalInfo.from_info({
                'MARChannelName': 'test1',
                'ProductVersion': '123'
            })
            m.additional_info.append(info)
            m.add(__file__)

        with MarFile(None, fileobj=open(marfile, "rb")) as m:
            self.assertEquals(len(m.additional_info), 1)
            self.assertEquals(m.additional_info[0].name, 'PRODUCT INFORMATION')
            self.assertEquals(m.additional_info[0].info, {
                'MARChannelName': 'test1',
                'ProductVersion': '123'
            })
예제 #4
0
def verify_signature(mar, signature):
    log.info("Checking %s signature", mar)
    m = MarFile(mar, signature_versions=[(1, signature)])
    m.verify_signatures()
예제 #5
0
 def test_extractall_fileobj(self):
     self.check_extractall(MarFile(None, fileobj=open(TEST_MAR, "rb")))
예제 #6
0
 def test_extractall_name(self):
     self.check_extractall(MarFile(TEST_MAR))
예제 #7
0
 def test_list_fo(self):
     self.check_list(MarFile(None, fileobj=open(TEST_MAR, 'rb')))
예제 #8
0
 def test_list_name(self):
     self.check_list(MarFile(TEST_MAR))
예제 #9
0
 def test_verify_fo(self):
     """Check that our test mar fileobject is signed correctly"""
     marfile = MarFile(name=TEST_MAR,
                       fileobj=open(TEST_MAR, "rb"),
                       signature_versions=[(1, TEST_KEY)])
     marfile.verify_signatures()
예제 #10
0
 def test_verify(self):
     """Check that our test mar is signed correctly"""
     marfile = MarFile(TEST_MAR, signature_versions=[(1, TEST_KEY)])
     marfile.verify_signatures()