Example #1
0
    def test_project_registers_updated_config(self):
        self.config.endpoints_store.__getitem__ = MagicMock(
            return_value='https://google.com')
        self.config.api.get_build = MagicMock(
            return_value={'data': {
                'status': 'COMPLETED'
            }})
        simple_project = os.path.join(__tests_root__, 'res/simple-project')
        working_dir = tempfile.mkdtemp()
        config_file = os.path.join(working_dir, 'mason.yml')
        command = RegisterProjectCommand(self.config, simple_project,
                                         working_dir)

        command.run()
        with open(config_file) as f:
            yml = yaml.safe_load(f)

        self.assertDictEqual(
            yml, {
                'os': {
                    'name': 'project-id2',
                    'version': 2,
                    'configurations': {
                        'mason-management': {
                            'disable_keyguard': True
                        }
                    }
                },
                'apps': [{
                    'name': 'Dummy app',
                    'package_name': 'com.supercilex.test',
                    'version_code': 384866
                }]
            })
Example #2
0
    def test_project_registers_updated_complex_config(self):
        self.config.endpoints_store.__getitem__ = MagicMock(
            return_value='https://google.com')
        self.config.api.get_build = MagicMock(
            return_value={'data': {
                'status': 'COMPLETED'
            }})
        self.config.api.get_latest_artifact = MagicMock(
            return_value={'version': '41'})
        self.config.api.get_highest_artifact = MagicMock(
            return_value={'version': '41'})
        complex_project = os.path.join(__tests_root__, 'res/complex-project')
        working_dir = tempfile.mkdtemp()
        config_file = os.path.join(working_dir, 'config3.yml')
        command = RegisterProjectCommand(self.config, complex_project,
                                         working_dir)

        command.run()
        with open(config_file) as f:
            yml = yaml.safe_load(f)

        self.assertDictEqual(
            yml, {
                'os': {
                    'name': 'project-id3',
                    'version': 42,
                    'configurations': {
                        'mason-management': {
                            'disable_keyguard': True
                        }
                    }
                },
                'apps': [{
                    'name': 'Testy Testeron',
                    'package_name': 'com.example.app1',
                    'version_code': 1
                }, {
                    'name': 'Dummy app',
                    'package_name': 'com.supercilex.test',
                    'version_code': 384866
                }, {
                    'name': 'Testy Testeron',
                    'package_name': 'com.example.app2',
                    'version_code': 41
                }],
                'media': {
                    'bootanimation': {
                        'name': 'anim-1',
                        'version': 42
                    },
                    'splash': {
                        'name': 'splash-1',
                        'version': 42
                    }
                }
            })
Example #3
0
    def test_project_registers_successfully(self):
        self.config.endpoints_store.__getitem__ = MagicMock(return_value='https://google.com')
        self.config.api.get_build = MagicMock(return_value={'data': {'status': 'COMPLETED'}})
        simple_project = os.path.join(__tests_root__, 'res', 'simple-project')
        apk_file = os.path.join(__tests_root__, 'res', 'simple-project', 'v1.apk')
        working_dir = tempfile.mkdtemp()
        config_file = os.path.join(working_dir, 'mason.yml')
        command = RegisterProjectCommand(self.config, simple_project, working_dir)

        command.run()

        self.config.api.upload_artifact.assert_has_calls([
            call(apk_file, Apk.parse(self.config, apk_file)),
            call(config_file, OSConfig.parse(self.config, config_file))
        ])
        self.config.api.start_build.assert_called_with('project-id2', '2', None)
Example #4
0
def register_project(config, context):
    """
    Register whole projects.

      CONTEXT pointing the project directory. Defaults to the current directory.

    \b
    Example:
      $ mason register project

    \b
    Full docs: https://docs.bymason.com/mason-cli/#mason-register-project
    """

    from cli.internal.commands.register import RegisterProjectCommand
    command = RegisterProjectCommand(config, context)
    command.run()
Example #5
0
    def test_project_registers_latest_app_version_when_remote_nonexistent(self):
        self.config.endpoints_store.__getitem__ = MagicMock(return_value='https://google.com')
        self.config.api.get_build = MagicMock(return_value={'data': {'status': 'COMPLETED'}})
        self.config.api.get_latest_artifact = MagicMock(return_value=None)
        project_dir = tempfile.mkdtemp()
        working_dir = tempfile.mkdtemp()
        config_file = os.path.join(working_dir, 'mason.yml')
        command = RegisterProjectCommand(self.config, project_dir, working_dir)

        shutil.copytree(
            os.path.join(__tests_root__, 'res', 'simple-project'),
            project_dir,
            dirs_exist_ok=True
        )
        with open(os.path.join(project_dir, 'mason.yml'), 'w') as f:
            f.write("""
                    os:
                      name: test-project
                      version: 1
                    apps:
                      - name: Dummy app
                        package_name: com.supercilex.test
                        version_code: latest
                """)

        command.run()
        with open(config_file) as f:
            yml = yaml.safe_load(f)

        self.assertDictEqual(yml, {
            'os': {
                'name': 'test-project',
                'version': 1
            },
            'apps': [{
                'name': 'Dummy app',
                'package_name': 'com.supercilex.test',
                'version_code': 384866
            }]
        })