def test_uploader(self, cleandir, shared_datadir, upload_plugin_type): uploaders = [TestUploaderPass(), TestUploaderFail(), TestUploaderRetryPass(), TestUploaderRetryFail()] # Don't mind the name, should only contain 1 plugin upload_plugins = [u for u in uploaders if u.name == upload_plugin_type] if six.PY2 or sys.version_info[1] in [4, 5]: data_dir = str(shared_datadir) else: data_dir = shared_datadir if not os.path.exists(data_dir): os.makedirs(data_dir) with ChDir(data_dir): uploader = Uploader(config=Config(), plugins=upload_plugins) upload_plugin = upload_plugins[0] uploader.set_uploader(upload_plugin_type) assert uploader.uploader.name == upload_plugin_type if 'success' in upload_plugin.name: assert uploader.upload(['/file1']) is True elif 'fail' in upload_plugin.name: assert uploader.upload(['/file2']) is False
def test_set_uploader_fail(self): u = Uploader() u.init({'test': 'test'}) with pytest.raises(UploaderError): u.set_uploader([]) with pytest.raises(UploaderPluginError): u.set_uploader('bad plugin name')
def test_uploader(self, cleandir, shared_datadir, upload_plugin_type): uploaders = [ TestUploaderPass(), TestUploaderFail(), TestUploaderRetryPass(), TestUploaderRetryFail() ] # Don't mind the name, should only contain 1 plugin upload_plugins = [u for u in uploaders if u.name == upload_plugin_type] if six.PY2 or sys.version_info[1] in [4, 5]: data_dir = str(shared_datadir) else: data_dir = shared_datadir if not os.path.exists(data_dir): os.makedirs(data_dir) with ChDir(data_dir): uploader = Uploader(config=Config(), plugins=upload_plugins) upload_plugin = upload_plugins[0] uploader.set_uploader(upload_plugin_type) assert uploader.uploader.name == upload_plugin_type if 'success' in upload_plugin.name: assert uploader.upload(['/file1']) is True elif 'fail' in upload_plugin.name: assert uploader.upload(['/file2']) is False
def test_upload(self, httpbin): class MyUploader(BaseUploader): def init(self, **kwargs): self.file_list = ['test'] def upload_file(self, filename): with open('testfile.txt', 'wb') as f: f.write('this is some text') with open('testfile.txt', 'rb') as f: data = f.read() files = {'file': data} r = requests.post(httpbin.url + '/post', files=files) assert r.json()['files']['file'] == data u = Uploader() u.init({'test': 'test'}) u.uploader = MyUploader() u.uploader.init(test='test') u.upload()
class PyUpdater(object): """Processes, signs & uploads updates Kwargs: config (obj): config object """ def __init__(self, config=None): self.config = Config() # Important to keep this before updating config if config is not None: self.update_config(config) def update_config(self, config): """Updates internal config Args: config (obj): config object """ if not hasattr(config, 'DATA_DIR'): config.DATA_DIR = None if config.DATA_DIR is None: config.DATA_DIR = os.getcwd() self.config.from_object(config) self._update(self.config) def _update(self, config): self.kh = KeyHandler() self.key_importer = KeyImporter() self.ph = PackageHandler(config) self.up = Uploader(config) def setup(self): "Sets up root dir with required PyUpdater folders" self.ph.setup() def process_packages(self, report_errors=False): """Creates hash for updates & adds information about update to version file """ self.ph.process_packages(report_errors) def set_uploader(self, requested_uploader): """Sets upload destination Args: requested_uploader (str): upload service. i.e. s3, scp """ self.up.set_uploader(requested_uploader) def upload(self): "Uploads files in deploy folder" self.up.upload() def get_plugin_names(self): return self.up.get_plugin_names() def import_keypack(self): "Creates signing keys" self.key_importer.start() def sign_update(self): "Signs version file with signing key" self.kh.sign_update()
class PyUpdater(object): """Processes, signs & uploads updates Kwargs: config (obj): config object """ def __init__(self, config=None): self.config = Config() # Important to keep this before updating config if config is not None: self.update_config(config) def update_config(self, config): """Updates internal config Args: config (obj): config object """ if not hasattr(config, 'DATA_DIR'): config.DATA_DIR = None if config.DATA_DIR is None: config.DATA_DIR = os.getcwd() self.config.from_object(config) self._update(self.config) def _update(self, config): self.kh = KeyHandler() self.key_importer = KeyImporter() self.ph = PackageHandler(config) self.up = Uploader(config) def setup(self): """Sets up root dir with required PyUpdater folders""" self.ph.setup() def process_packages(self, report_errors=False): """Creates hash for updates & adds information about update to version file """ self.ph.process_packages(report_errors) def set_uploader(self, requested_uploader, keep=False): """Sets upload destination Args: requested_uploader (str): upload service. i.e. s3, scp keep (bool): False to delete files after upload. True to keep files. Default False. """ self.up.set_uploader(requested_uploader, keep) def upload(self): """Uploads files in deploy folder""" return self.up.upload() def get_plugin_names(self): return self.up.get_plugin_names() def import_keypack(self): """Creates signing keys""" return self.key_importer.start() def sign_update(self): """Signs version file with signing key""" self.kh.sign_update()
def test_set_uploader(self): u = Uploader() u.init({'OBJECT_BUCKET': 'vdpro'}) u.set_uploader('s3') assert u.uploader is not None
def test_fail_no_uploader_set_fail(self, httpbin): with pytest.raises(UploaderError): u = Uploader() u.init({}) u.upload()
class Core(object): """Processes, signs & uploads updates Kwargs: config (obj): config object """ def __init__(self, config=None): self.config = ConfigDict() self.db = Storage() # Important to keep this before updating config if config is not None: self.update_config(config) def update_config(self, config): """Updates internal config Args: config (obj): config object """ if not hasattr(config, 'DATA_DIR'): config.DATA_DIR = None if config.DATA_DIR is None: config.DATA_DIR = os.getcwd() self.config.from_object(config) self._update(self.config) def _update(self, config): self.kh = KeyHandler(config) self.key_importer = KeyImporter() self.ph = PackageHandler(config) self.up = Uploader(config) def setup(self): "Sets up root dir with required PyUpdater folders" self.ph.setup() def process_packages(self): """Creates hash for updates & adds information about update to version file """ self.ph.process_packages() def set_uploader(self, requested_uploader): """Sets upload destination Args: requested_uploader (str): upload service. i.e. s3, scp """ self.up.set_uploader(requested_uploader) def upload(self): "Uploads files in deploy folder" self.up.upload() def import_keypack(self): "Creates signing keys" self.key_importer.start() def sign_update(self): "Signs version file with signing key" self.kh.sign_update()
def _update(self, config): self.kh = KeyHandler(config) self.key_importer = KeyImporter() self.ph = PackageHandler(config) self.up = Uploader(config)
def _update(self, config): self.kh = KeyHandler() self.key_importer = KeyImporter() self.ph = PackageHandler(config) self.up = Uploader(config)
class Core(object): """Processes, signs & uploads updates Kwargs: config (obj): config object """ def __init__(self, config=None, db=None): self.config = TransistionDict() # Important to keep this before updating config if config is not None: self.update_config(config, db) def update_config(self, config, db): """Updates internal config Args: config (obj): config object """ if not hasattr(config, 'DATA_DIR'): config.DATA_DIR = None if config.DATA_DIR is None: config.DATA_DIR = os.getcwd() if db is None: self.db = Storage(config.DATA_DIR) else: self.db = db self.config.from_object(config) self._update(self.config, self.db) def _update(self, config, db): self.kh = KeyHandler(config, db) self.ph = PackageHandler(config, db) self.up = Uploader(config) def setup(self): "Sets up root dir with required PyUpdater folders" self.ph.setup() def process_packages(self): """Creates hash for updates & adds information about update to version file """ self.ph.process_packages() def set_uploader(self, requested_uploader): """Sets upload destination Args: requested_uploader (str): upload service. i.e. s3, scp """ self.up.set_uploader(requested_uploader) def upload(self): "Uploads files in deploy folder" self.up.upload() def make_keys(self, count=3): "Creates signing keys" self.kh.make_keys(count) def revoke_key(self, count): self.kh.revoke_key(count) def get_recent_revoked_key(self): return self.kh.get_recent_revoked_key() def sign_update(self): "Signs version file with signing key" self.kh.sign_update() def get_public_keys(self): "Returns public key" return self.kh.get_public_keys() def print_public_key(self): "Prints public key to console" self.kh.print_public_key()
def _update(self, config, db): self.kh = KeyHandler(config, db) self.ph = PackageHandler(config, db) self.up = Uploader(config)