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
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
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
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'