mirror of
https://github.com/gryf/slack-backup.git
synced 2025-12-17 11:30:25 +01:00
Currently, if message contain shared file, slack-backup will try to download it. If it fail, than empty file will remain, which will be at least confusing. This will mostly happen for shares which are not uploaded to the slack servers. New option will be used to indicate if slack-backup should convert such share as an attachment, or to save the list of URL and their destination in local file system to be download manually by the user.
131 lines
4.2 KiB
Python
131 lines
4.2 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import argparse
|
|
import tempfile
|
|
import os
|
|
import unittest
|
|
|
|
from slack_backup import config
|
|
|
|
|
|
CONF = """\
|
|
[common]
|
|
channels=["one","two", "three"]
|
|
database=dbfname.sqlite
|
|
quiet=1
|
|
verbose=2
|
|
|
|
[generate]
|
|
output=logs
|
|
format=text
|
|
theme=plain
|
|
|
|
[fetch]
|
|
user=someuser@address.com
|
|
password=secret
|
|
team=myteam
|
|
token=xxxx-1111111111-222222222222-333333333333-r4nd0ms7uff
|
|
"""
|
|
|
|
|
|
class TestConfig(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
|
|
fd, self.confname = tempfile.mkstemp()
|
|
os.close(fd)
|
|
|
|
with open(self.confname, 'w') as fobj:
|
|
fobj.write(CONF)
|
|
|
|
def tearDown(self):
|
|
os.unlink(self.confname)
|
|
|
|
def test_config(self):
|
|
|
|
self.assertTrue(os.path.exists(self.confname))
|
|
self.assertTrue(os.path.isfile(self.confname))
|
|
|
|
args = argparse.Namespace()
|
|
args.config = None
|
|
args.parser = 'fetch'
|
|
args.verbose = 2
|
|
|
|
conf = config.Config()
|
|
conf.update(args)
|
|
self.assertDictEqual(vars(args), {'config': None,
|
|
'parser': 'fetch',
|
|
'verbose': 2,
|
|
'quiet': 0,
|
|
'channels': [],
|
|
'database': None,
|
|
'user': None,
|
|
'password': None,
|
|
'team': None,
|
|
'token': None,
|
|
'url_file_to_attachement': False})
|
|
|
|
args = argparse.Namespace()
|
|
args.config = self.confname
|
|
args.parser = 'fetch'
|
|
args.verbose = 2
|
|
args.quiet = None
|
|
args.channels = None
|
|
args.database = None
|
|
args.user = None
|
|
args.password = None
|
|
args.team = None
|
|
args.token = None
|
|
|
|
conf = config.Config()
|
|
conf.update(args)
|
|
|
|
self.assertEqual(conf._options['verbose'], 2)
|
|
self.assertListEqual(conf._options['channels'],
|
|
['one', 'two', 'three'])
|
|
self.assertEqual(conf._options['database'], 'dbfname.sqlite')
|
|
self.assertEqual(conf._options['user'], 'someuser@address.com')
|
|
|
|
self.assertDictEqual(vars(args), {'config': self.confname,
|
|
'parser': 'fetch',
|
|
'verbose': 2,
|
|
'quiet': 0,
|
|
'channels': ['one', 'two', 'three'],
|
|
'database': 'dbfname.sqlite',
|
|
'user': 'someuser@address.com',
|
|
'password': 'secret',
|
|
'team': 'myteam',
|
|
'token': 'xxxx-1111111111-'
|
|
'222222222222-333333333333-'
|
|
'r4nd0ms7uff',
|
|
'url_file_to_attachement': False})
|
|
|
|
# override some conf options with commandline
|
|
args = argparse.Namespace()
|
|
args.config = self.confname
|
|
args.parser = 'fetch'
|
|
args.verbose = None
|
|
args.quiet = 2
|
|
args.channels = ['foo']
|
|
args.database = None
|
|
args.user = 'joe'
|
|
args.password = 'ultricies'
|
|
args.team = ''
|
|
args.token = 'the token'
|
|
|
|
conf = config.Config()
|
|
conf.update(args)
|
|
|
|
self.assertDictEqual(vars(args), {'config': self.confname,
|
|
'parser': 'fetch',
|
|
'verbose': 0,
|
|
'quiet': 2,
|
|
'channels': ['foo'],
|
|
'database': 'dbfname.sqlite',
|
|
'user': 'joe',
|
|
'password': 'ultricies',
|
|
'team': '',
|
|
'token': 'the token',
|
|
'url_file_to_attachement': False})
|