Ejemplo n.º 1
0
    def ztest_few_days_syncer(self):
        """
           Test with the Syncer object
        """
        syncer = gmvault.GMVaulter('/tmp/gmail_bk', 'imap.gmail.com', 993,
                                   self.login, self.passwd)

        syncer.sync(imap_req="Since 1-Nov-2011 Before 4-Nov-2011")

        storage_dir = "%s/%s" % ('/tmp/gmail_bk/db', '2011-11')

        gstorer = gmvault.GmailStorer('/tmp/gmail_bk')

        metadata = gmvault.GMVaulter.check_email_on_disk(
            gstorer, 1384313269332005293)

        self.assertEquals(metadata['gm_id'], 1384313269332005293)

        metadata = gmvault.GMVaulter.check_email_on_disk(
            gstorer, 1384403887202624608)

        self.assertEquals(metadata['gm_id'], 1384403887202624608)

        metadata = gmvault.GMVaulter.check_email_on_disk(
            gstorer, 1384486067720566818)

        self.assertEquals(metadata['gm_id'], 1384486067720566818)
Ejemplo n.º 2
0
    def ztest_full_sync_gmv(self):
        """
           full test via the command line
        """
        sys.argv = ['gmvault.py', '--imap-server', 'imap.gmail.com', \
                    '--imap-port', '993', '--imap-request', \
                    'Since 1-Nov-2011 Before 5-Nov-2011', '--email', \
                    self.login, '--passwd', self.passwd]

        gmvault_launcher = gmv_cmd.GMVaultLauncher()

        args = gmvault_launcher.parse_args()

        gmvault_launcher.run(args)

        #check all stored gmail ids
        gstorer = gmvault.GmailStorer(args['db-dir'])

        ids = gstorer.get_all_existing_gmail_ids()

        self.assertEquals(len(ids), 5)

        self.assertEquals(ids, {1384403887202624608L: '2011-11', \
                                1384486067720566818L: '2011-11', \
                                1384313269332005293L: '2011-11', \
                                1384545182050901969L: '2011-11', \
                                1384578279292583731L: '2011-11'})
Ejemplo n.º 3
0
    def test_get_subdir_info(self):
        """
           test get subdir info
        """
        import gmv.gmvault as gmv

        storer = gmv.GmailStorer("/Users/gaubert/gmvault-db")

        storer.init_sub_chats_dir()
Ejemplo n.º 4
0
    def ztest_encrypt_restore_on_gmail(self):
        """
           Doesn't work to be fixed
           clean db disk
           sync with gmail for few emails
           restore them on gmail test
        """

        db_dir = '/tmp/gmail_bk'
        #clean db dir
        delete_db_dir(db_dir)

        credential = {'type': 'passwd', 'value': self.passwd}
        search_req = {
            'type': 'imap',
            'req': "Since 1-Nov-2011 Before 3-Nov-2011"
        }

        use_encryption = True
        syncer = gmvault.GMVaulter(db_dir,
                                   'imap.gmail.com',
                                   993,
                                   self.login,
                                   credential,
                                   read_only_access=True,
                                   use_encryption=use_encryption)

        syncer.sync(imap_req=search_req)

        # check that the email can be read
        gstorer = gmvault.GmailStorer('/tmp/gmail_bk', use_encryption)

        metadata = gmvault.GMVaulter.check_email_on_disk(
            gstorer, 1384313269332005293)

        self.assertEquals(metadata['gm_id'], 1384313269332005293)

        email_meta, email_data = gstorer.unbury_email(1384313269332005293)

        self.assertTrue(
            email_data.startswith("Delivered-To: [email protected]"))

        #print("Email Data = \n%s\n" % (email_data))

        print("Done \n")
Ejemplo n.º 5
0
    def ztest_fix_bug_search_broken_gm_id_and_quarantine(self):
        """
           Search with a gm_id and quarantine it
        """
        db_dir = '/tmp/gmail_bk'

        #clean db dir
        delete_db_dir(db_dir)

        credential = {'type': 'passwd', 'value': self.passwd}
        gs_credential = {'type': 'passwd', 'value': self.gmvault_passwd}
        gstorer = gmvault.GmailStorer(db_dir)
        gimap = imap_utils.GIMAPFetcher('imap.gmail.com', 993, self.login,
                                        credential)

        gimap.connect()

        criteria = {
            'type': 'imap',
            'req': ['X-GM-MSGID 1254269417797093924']
        }  #broken one
        #criteria = ['X-GM-MSGID 1254267782370534098']
        #criteria = ['ALL']
        ids = gimap.search(criteria)

        for the_id in ids:
            res = gimap.fetch(the_id, gimap.GET_ALL_INFO)

            gm_id = gstorer.bury_email(res[the_id], compress=True)

            syncer = gmvault.GMVaulter(db_dir, 'imap.gmail.com', 993,
                                       self.gmvault_login, gs_credential)

            syncer.restore()

        #check that the file has been quarantine
        quarantine_dir = '%s/quarantine' % (db_dir)

        self.assertTrue(
            os.path.exists('%s/1254269417797093924.eml.gz' % (quarantine_dir)))
        self.assertTrue(
            os.path.exists('%s/1254269417797093924.meta' % (quarantine_dir)))
Ejemplo n.º 6
0
    def ztest_gmvault_store_gzip_email_and_read(
            self):  #pylint:disable-msg=C0103
        """
           Retrieve emails store them it on disk and read it
        """
        storage_dir = '/tmp/gmail_bk'
        gmvault_utils.delete_all_under(storage_dir)
        gimap = imap_utils.GIMAPFetcher('imap.gmail.com', 993, self.login,
                                        self.passwd)

        gstorer = gmvault.GmailStorer(storage_dir)

        gimap.connect()

        criteria = ['Before 1-Oct-2006']
        #criteria = ['ALL']
        ids = gimap.search(criteria)

        #get 30 emails
        for index in range(9, 20):

            print("retrieve email index %d\n" % (index))
            the_id = ids[index]

            res = gimap.fetch(the_id, gimap.GET_ALL_INFO)

            gm_id = gstorer.bury_email(res[the_id], compress=True)

            print("restore email index %d\n" % (index))
            metadata, data = gstorer.unbury_email(gm_id)

            self.assertEquals(res[the_id][gimap.GMAIL_ID], metadata['gm_id'])
            self.assertEquals(res[the_id][gimap.EMAIL_BODY], data)
            self.assertEquals(res[the_id][gimap.GMAIL_THREAD_ID],
                              metadata['thread_ids'])

            labels = []
            for label in res[the_id][gimap.GMAIL_LABELS]:
                labels.append(label)

            self.assertEquals(labels, metadata['labels'])
Ejemplo n.º 7
0
    def ztest_delete_sync_gmv(self):
        """
           delete sync via command line
        """
        gmv_cmd.init_logging()

        #first request to have the extra dirs
        sys.argv = ['gmvault.py', '--imap-server', 'imap.gmail.com', \
                    '--imap-port', '993', '--imap-request', \
                    'Since 1-Nov-2011 Before 7-Nov-2011', \
                    '--email', self.login, \
                    '--passwd', self.passwd, '--db-dir', '/tmp/new-db-1']

        gmvault_launcher = gmv_cmd.GMVaultLauncher()

        args = gmvault_launcher.parse_args()

        gmvault_launcher.run(args)

        #second requests so all files after the 5 should disappear
        sys.argv = ['gmvault.py', '--imap-server', 'imap.gmail.com', \
                    '--imap-port', '993', '--imap-request', \
                    'Since 1-Nov-2011 Before 5-Nov-2011', '--email', self.login, \
                    '--passwd', self.passwd, '--db-dir', '/tmp/new-db-1', '--db-cleaning', 'yes']

        args = gmvault_launcher.parse_args()
        gmvault_launcher.run(args)

        #check all stored gmail ids
        gstorer = gmvault.GmailStorer(args['db-dir'])

        ids = gstorer.get_all_existing_gmail_ids()

        self.assertEquals(len(ids), 5)

        self.assertEquals(ids, {1384403887202624608L: '2011-11', \
                                1384486067720566818L: '2011-11', \
                                1384313269332005293L: '2011-11', \
                                1384545182050901969L: '2011-11', \
                                1384578279292583731L: '2011-11'})
Ejemplo n.º 8
0
    def ztest_gmvault_compress_retrieve_email_store_and_read(
            self):  #pylint:disable-msg=C0103
        """
           Activate compression and retrieve an email store it on disk and read it
        """
        storage_dir = '/tmp/gmail_bk'
        gmvault_utils.delete_all_under(storage_dir)

        gimap = imap_utils.GIMAPFetcher('imap.gmail.com', 993, self.login,
                                        self.passwd)

        gstorer = gmvault.GmailStorer(storage_dir)

        gimap.connect()

        gimap.enable_compression()

        criteria = ['Before 1-Oct-2006']
        #criteria = ['ALL']
        ids = gimap.search(criteria)

        the_id = ids[124]

        res = gimap.fetch(the_id, gimap.GET_ALL_INFO)

        gm_id = gstorer.bury_email(res[the_id])

        metadata, data = gstorer.unbury_email(gm_id)

        self.assertEquals(res[the_id][gimap.GMAIL_ID], metadata['gm_id'])
        self.assertEquals(res[the_id][gimap.EMAIL_BODY], data)
        self.assertEquals(res[the_id][gimap.GMAIL_THREAD_ID],
                          metadata['thread_ids'])

        labels = []
        for label in res[the_id][gimap.GMAIL_LABELS]:
            labels.append(label)

        self.assertEquals(labels, metadata['labels'])