def test_flatten_scan_minimal(self): test_json = self.get_test_loc('json2csv/minimal.json') scan = json2csv.load_scan(test_json) headers = OrderedDict([ ('info', []), ('license', []), ('copyright', []), ('email', []), ('url', []), ('package', []), ]) result = list(json2csv.flatten_scan(scan, headers)) expected_headers = OrderedDict([ ('info', ['Resource', 'scan_errors']), ('license', [ 'license__key', 'license__score', 'license__short_name', 'license__category', 'license__owner', 'license__homepage_url', 'license__text_url', 'license__dejacode_url', 'license__spdx_license_key', 'license__spdx_url', 'start_line', 'end_line' ]), ('copyright', ['copyright', 'copyright_holder']), ('email', []), ('url', []), ('package', []) ]) assert expected_headers == headers expected = self.get_test_loc('json2csv/minimal.json-expected') expected = json.load(codecs.open(expected, encoding='utf-8'), object_pairs_hook=OrderedDict) assert expected == result
def test_key_ordering(self): test_json = self.get_test_loc('json2csv/key_order.json') scan = json2csv.load_scan(test_json) headers = OrderedDict([ ('info', []), ('license', []), ('copyright', []), ('email', []), ('url', []), ('package', []), ]) result = list(json2csv.flatten_scan(scan, headers)) expected_headers = OrderedDict([('info', [ 'Resource', 'type', 'name', 'extension', 'date', 'size', 'sha1', 'md5', 'files_count', 'mime_type', 'file_type', 'programming_language', 'is_binary', 'is_text', 'is_archive', 'is_media', 'is_source', 'is_script', 'scan_errors' ]), ('license', []), ('copyright', []), ('email', []), ('url', []), ('package', [])]) assert expected_headers == headers expected = [ OrderedDict([('Resource', '/code/srp_vfy.c'), ('type', 'file'), ('name', 'srp_vfy.c'), ('extension', '.c'), ('date', '2016-11-10'), ('size', 17428), ('sha1', 'fa622c0499367a7e551d935c4c7394d5dfc31b26'), ('md5', '4e02508d6433c8893e72fd521f36b37a'), ('files_count', None), ('mime_type', 'text/plain'), ('file_type', 'ASCIItext'), ('programming_language', 'C'), ('is_binary', None), ('is_text', True), ('is_archive', None), ('is_media', None), ('is_source', True), ('is_script', None), ('scan_errors', '')]), OrderedDict([('Resource', '/code/srp_lib.c'), ('type', 'file'), ('name', 'srp_lib.c'), ('extension', '.c'), ('date', '2016-11-10'), ('size', 7302), ('sha1', '624360fb75baf8f3498f6d70f7b3c66ed03bfa6c'), ('md5', 'b5c2f56afc2477d5a1768f97b314fe0f'), ('files_count', None), ('mime_type', 'text/x-c'), ('file_type', 'Csource, ASCIItext'), ('programming_language', 'C'), ('is_binary', None), ('is_text', True), ('is_archive', None), ('is_media', None), ('is_source', True), ('is_script', None), ('scan_errors', '')]), OrderedDict([('Resource', '/code/build.info'), ('type', 'file'), ('name', 'build.info'), ('extension', '.info'), ('date', '2016-11-10'), ('size', 65), ('sha1', '994b9ec16ec11f96a1dfade472ecec8c5c837ab4'), ('md5', 'eaacdd82c253a8967707c431cca6227e'), ('files_count', None), ('mime_type', 'text/plain'), ('file_type', 'ASCIItext'), ('programming_language', None), ('is_binary', None), ('is_text', True), ('is_archive', None), ('is_media', None), ('is_source', None), ('is_script', None), ('scan_errors', '')]) ] assert expected == result
def test_flatten_scan_minimal(self): test_json = self.get_test_loc('json2csv/minimal.json') scan = json2csv.load_scan(test_json) headers = OrderedDict([ ('info', []), ('license', []), ('copyright', []), ('email', []), ('url', []), ('package', []), ]) result = list(json2csv.flatten_scan(scan, headers)) expected_file = self.get_test_loc('json2csv/minimal.json-expected') check_json(result, expected_file)
def test_can_process_package_license_when_license_value_is_null(self): test_json = self.get_test_loc('json2csv/package_license_value_null.json') scan = json2csv.load_scan(test_json) headers = OrderedDict([ ('info', []), ('license', []), ('copyright', []), ('email', []), ('url', []), ('package', []), ]) result = list(json2csv.flatten_scan(scan, headers)) expected_file = self.get_test_loc('json2csv/package_license_value_null.json-expected') check_json(result, expected_file)
def test_can_process_package_license_when_license_value_is_null(self): test_json = self.get_test_loc( 'json2csv/package_license_value_null.json') scan = json2csv.load_scan(test_json) headers = OrderedDict([ ('info', []), ('license', []), ('copyright', []), ('email', []), ('url', []), ('package', []), ]) result = list(json2csv.flatten_scan(scan, headers)) expected_file = self.get_test_loc( 'json2csv/package_license_value_null.json-expected') check_json(result, expected_file)
def test_flatten_scan_full(self): test_json = self.get_test_loc('json2csv/full.json') scan = json2csv.load_scan(test_json) headers = OrderedDict([ ('info', []), ('license', []), ('copyright', []), ('email', []), ('url', []), ('package', []), ]) result = list(json2csv.flatten_scan(scan, headers)) expected_headers = OrderedDict([ ('info', [ 'Resource', 'type', 'name', 'extension', 'date', 'size', 'sha1', 'md5', 'files_count', 'mime_type', 'file_type', 'programming_language', 'is_binary', 'is_text', 'is_archive', 'is_media', 'is_source', 'is_script', 'scan_errors' ]), ('license', [ 'license__key', 'license__score', 'license__short_name', 'license__category', 'license__owner', 'license__homepage_url', 'license__text_url', 'license__dejacode_url', 'license__spdx_license_key', 'license__spdx_url', 'start_line', 'end_line' ]), ('copyright', ['copyright', 'copyright_holder', 'author']), ('email', ['email']), ('url', ['url']), ('package', [ 'package__type', 'package__name', 'package__version', 'package__primary_language', 'package__summary', 'package__description', 'package__authors', 'package__homepage_url', 'package__notes', 'package__download_urls', 'package__bug_tracking_url', 'package__vcs_repository', 'package__copyright_top_level', 'package__copyrights', 'package__asserted_licenses' ]) ]) assert expected_headers == headers expected = self.get_test_loc('json2csv/full.json-expected') expected = json.load(codecs.open(expected, encoding='utf-8'), object_pairs_hook=OrderedDict) assert expected == result
def test_json_with_no_keys_does_not_error_out(self): # this scan has no results at all test_json = self.get_test_loc('json2csv/no_keys.json') scan = json2csv.load_scan(test_json) headers = OrderedDict([ ('info', []), ('license', []), ('copyright', []), ('email', []), ('url', []), ('package', []), ]) result = list(json2csv.flatten_scan(scan, headers)) expected_headers = OrderedDict([ ('info', []), ('license', []), ('copyright', []), ('email', []), ('url', []), ('package', []), ]) assert expected_headers == headers assert [] == result
def test_can_process_html_app_and_regular_json_the_same_way(self): test_html = self.get_test_loc('json2csv/minimal_html_app_data.json') test_json = self.get_test_loc('json2csv/minimal.json') assert json2csv.load_scan(test_html) == json2csv.load_scan(test_json)