Esempio n. 1
0
    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
Esempio n. 2
0
    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')
Esempio n. 3
0
    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')
Esempio n. 4
0
    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
Esempio n. 5
0
    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()
Esempio n. 6
0
    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()
Esempio n. 7
0
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()
Esempio n. 8
0
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()
Esempio n. 9
0
 def test_set_uploader(self):
     u = Uploader()
     u.init({'OBJECT_BUCKET': 'vdpro'})
     u.set_uploader('s3')
     assert u.uploader is not None
Esempio n. 10
0
 def test_fail_no_uploader_set_fail(self, httpbin):
     with pytest.raises(UploaderError):
         u = Uploader()
         u.init({})
         u.upload()
Esempio n. 11
0
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()
Esempio n. 12
0
 def _update(self, config):
     self.kh = KeyHandler(config)
     self.key_importer = KeyImporter()
     self.ph = PackageHandler(config)
     self.up = Uploader(config)
Esempio n. 13
0
 def _update(self, config):
     self.kh = KeyHandler()
     self.key_importer = KeyImporter()
     self.ph = PackageHandler(config)
     self.up = Uploader(config)
Esempio n. 14
0
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()
Esempio n. 15
0
 def _update(self, config, db):
     self.kh = KeyHandler(config, db)
     self.ph = PackageHandler(config, db)
     self.up = Uploader(config)
Esempio n. 16
0
 def test_fail_no_uploader_set_fail(self, httpbin):
     with pytest.raises(UploaderError):
         u = Uploader()
         u.init({})
         u.upload()
Esempio n. 17
0
 def test_set_uploader(self):
     u = Uploader()
     u.init({'OBJECT_BUCKET': 'vdpro'})
     u.set_uploader('s3')
     assert u.uploader is not None