コード例 #1
0
 def test_merge_and_extract_existing_file_js(self, tmp_path):
     with patch.object(Downloader, "__init__", lambda a, b, c: None):
         downloader = Downloader('', '')
         downloader.log_verbose = False
         downloader.num_merged_files = 0
         downloader.num_added_files = 0
         downloader.log_verbose = False
         downloader.files_not_downloaded = []
         downloader.pack_content = {
             entity: list()
             for entity in CONTENT_ENTITIES_DIRS
         }
         js_custom_content_object = {
             'id':
             'SumoLogic',
             'name':
             'SumoLogic',
             'path':
             'demisto_sdk/commands/download/tests/tests_data/custom_content/integration-DummyJSIntegration'
             '.yml',
             'entity':
             'Integrations',
             'type':
             'integration',
             'file_ending':
             'yml',
             'exist_in_pack':
             True,
             'code_lang':
             'javascript'
         }
         downloader.merge_and_extract_existing_file(
             js_custom_content_object)
コード例 #2
0
    def test_merge_and_extract_existing_file_corrupted_dir(
            self, tmp_path, mocker, capsys):
        """
        Given
            - The integration exist in output pack, the directory is corrupted
            (i.e. a file is missing, for example: the image file)

        When
            - An integration about to be downloaded

        Then
            - Ensure integration is downloaded successfully
        """
        env = Environment(tmp_path)
        mocker.patch.object(Downloader,
                            'get_corresponding_pack_file_object',
                            return_value={})
        with patch.object(Downloader, "__init__", lambda a, b, c: None):
            downloader = Downloader('', '')
            downloader.output_pack_path = env.PACK_INSTANCE_PATH
            downloader.log_verbose = False
            downloader.pack_content = env.PACK_CONTENT
            downloader.run_format = False
            downloader.num_merged_files = 0
            downloader.num_added_files = 0
            downloader.log_verbose = False
            downloader.merge_and_extract_existing_file(
                env.INTEGRATION_CUSTOM_CONTENT_OBJECT)
            stdout, _ = capsys.readouterr()
            assert 'Merged' in stdout
コード例 #3
0
    def test_merge_existing_file(self, custom_content_object, ending, method, instance_path, fields):
        env_guard = EnvironmentGuardian()
        test_answer = True

        with patch.object(Downloader, "__init__", lambda a, b, c: None):
            downloader = Downloader('', '')
            ryaml = YAML()
            ryaml.preserve_quotes = True
            downloader.pack_content = PACK_CONTENT
            downloader.run_format = False
            downloader.num_merged_files = 0
            downloader.num_added_files = 0
            downloader.log_verbose = False
            downloader.merge_existing_file(custom_content_object, ending)
            test_answer = test_answer and os.path.isfile(instance_path)
            file_data = method(instance_path)
            for field in fields:
                if file_data.get(field):
                    test_answer = test_answer and True
                else:
                    test_answer = False
            if ending == 'yml':
                task_4_name = file_data['tasks']['4']['task']['name']
                test_answer = test_answer and task_4_name == 'Done TEST'

        env_guard.restore_environment('test_merge_existing_file')
        assert test_answer
コード例 #4
0
    def test_merge_and_extract_existing_file(self, tmp_path):
        env = Environment(tmp_path)

        with patch.object(Downloader, "__init__", lambda a, b, c: None):
            downloader = Downloader('', '')
            ryaml = YAML()
            ryaml.preserve_quotes = True
            downloader.log_verbose = False
            downloader.pack_content = env.PACK_CONTENT
            downloader.run_format = False
            downloader.num_merged_files = 0
            downloader.num_added_files = 0
            downloader.log_verbose = False
            downloader.merge_and_extract_existing_file(
                env.INTEGRATION_CUSTOM_CONTENT_OBJECT)
            paths = [
                file['path']
                for file in env.INTEGRATION_PACK_OBJECT['Test Integration']
            ]
            for path in paths:
                assert os.path.isfile(path)
            yml_data = get_yaml(
                env.INTEGRATION_PACK_OBJECT['Test Integration'][2]['path'])
            for field in DELETED_YML_FIELDS_BY_DEMISTO:
                obj = yml_data
                dotted_path_list = field.split('.')
                for path_part in dotted_path_list:
                    if path_part != dotted_path_list[-1]:
                        obj = obj.get(path_part)
                    else:
                        if obj.get(path_part):
                            assert True
                        else:
                            assert False
            with open(
                    env.INTEGRATION_PACK_OBJECT['Test Integration'][5]['path'],
                    'r') as description_file:
                description_data = description_file.read()
            assert 'Test Integration Long Description TEST' in description_data
            with open(
                    env.INTEGRATION_PACK_OBJECT['Test Integration'][0]['path'],
                    'r') as code_file:
                code_data = code_file.read()
            assert 'TEST' in code_data
コード例 #5
0
    def test_merge_existing_file(self, tmp_path):
        env = Environment(tmp_path)
        parameters = [{
            'custom_content_object': env.PLAYBOOK_CUSTOM_CONTENT_OBJECT,
            'ending': 'yml',
            'method': get_yaml,
            'instance_path': env.PLAYBOOK_INSTANCE_PATH,
            'fields': ['fromversion', 'toversion']
        }, {
            'custom_content_object': env.LAYOUT_CUSTOM_CONTENT_OBJECT,
            'ending': 'json',
            'method': get_json,
            'instance_path': env.LAYOUT_INSTANCE_PATH,
            'fields': ['fromVersion', 'toVersion']
        }]

        with patch.object(Downloader, "__init__", lambda a, b, c: None):
            downloader = Downloader('', '')
            ryaml = YAML()
            ryaml.preserve_quotes = True
            downloader.pack_content = env.PACK_CONTENT
            downloader.run_format = False
            downloader.num_merged_files = 0
            downloader.num_added_files = 0
            downloader.log_verbose = False
            for param in parameters:
                downloader.merge_existing_file(param['custom_content_object'],
                                               param['ending'])
                assert os.path.isfile(param['instance_path'])
                file_data = param['method'](param['instance_path'])
                for field in param['fields']:
                    if file_data.get(field):
                        assert True
                    else:
                        assert False
                if param['ending'] == 'yml':
                    task_4_name = file_data['tasks']['4']['task']['name']
                    assert task_4_name == 'Done TEST'