blob: 7ca22e140127f5dff831452864c652b8e78bd067 [file]
#!/usr/bin/env vpython3
# Copyright 2020 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""
Unit tests for generator_utils.py
"""
import os
import unittest
import generator_utils
# Absolute path to chrome/src.
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
SRC_DIR = os.path.abspath(os.path.join(SCRIPT_DIR, "../../.."))
TESTS_DIR = os.path.join(SCRIPT_DIR, "test_data")
class ParserTest(unittest.TestCase):
TSV_CONTENTS = [
[
"unique_id_A",
"",
"sender_A",
"description_A",
"trigger_A",
"data_A",
"destination_A",
"cookies_allowed_A",
"cookies_store_A",
"settings_A",
"chrome_policy_A",
"",
"source_file_A",
"id_hash_code_A",
"content_hash_code_A",
],
[
"unique_id_B",
"",
"sender_B",
"description_B",
"trigger_B",
"data_B",
"destination_B",
"cookies_allowed_B",
"cookies_store_B",
"settings_B",
"chrome_policy_B",
"",
"source_file_B",
"id_hash_code_B",
"content_hash_code_B",
],
[
"unique_id_C",
"",
"sender_C",
"description_C",
"trigger_C",
"data_C",
"destination_C",
"cookies_allowed_C",
"cookies_store_C",
"settings_C",
"chrome_policy_C",
"",
"source_file_C",
"id_hash_code_C",
"content_hash_code_C",
],
]
ANNOTATIONS_MAPPING = {
"unique_id_A": generator_utils.TrafficAnnotation(
**{
"unique_id": "unique_id_A",
"description": "description_A",
"trigger": "trigger_A",
"data": "data_A",
"settings": "settings_A",
"policy": "chrome_policy_A",
}
),
"unique_id_B": generator_utils.TrafficAnnotation(
**{
"unique_id": "unique_id_B",
"description": "description_B",
"trigger": "trigger_B",
"data": "data_B",
"settings": "settings_B",
"policy": "chrome_policy_B",
}
),
"unique_id_C": generator_utils.TrafficAnnotation(
**{
"unique_id": "unique_id_C",
"description": "description_C",
"trigger": "trigger_C",
"data": "data_C",
"settings": "settings_C",
"policy": "chrome_policy_C",
}
),
}
PLACEHOLDERS = [
{"type": generator_utils.Placeholder.GROUP, "name": "Group A"},
{"type": generator_utils.Placeholder.SENDER, "name": "Sender 1"},
{
"type": generator_utils.Placeholder.ANNOTATION,
"traffic_annotation": ANNOTATIONS_MAPPING["unique_id_A"],
},
{"type": generator_utils.Placeholder.SENDER, "name": "Sender 2"},
{
"type": generator_utils.Placeholder.ANNOTATION,
"traffic_annotation": ANNOTATIONS_MAPPING["unique_id_B"],
},
{"type": generator_utils.Placeholder.GROUP, "name": "Group C"},
{"type": generator_utils.Placeholder.SENDER, "name": "Sender 3"},
{
"type": generator_utils.Placeholder.ANNOTATION,
"traffic_annotation": ANNOTATIONS_MAPPING["unique_id_C"],
},
]
# Document formatted according to fake_grouping.xml
DOC_JSON = generator_utils.extract_body(
target="all", json_file_path=os.path.join(TESTS_DIR, "fake_doc.json")
)
def test_load_tsv_file(self):
self.assertEqual(
self.TSV_CONTENTS,
generator_utils.load_tsv_file(
os.path.join(
SRC_DIR,
"tools/traffic_annotation/scripts/test_data/fake_annotations.tsv",
),
False,
),
)
def test_map_annotations(self):
self.assertEqual(
self.ANNOTATIONS_MAPPING,
generator_utils.map_annotations(self.TSV_CONTENTS),
)
def test_xml_parser_build_placeholders(self):
xml_parser = generator_utils.XMLParser(
os.path.join(TESTS_DIR, "fake_grouping.xml"), self.ANNOTATIONS_MAPPING
)
self.assertEqual(self.PLACEHOLDERS, xml_parser.build_placeholders())
def test_find_first_index(self):
first_index = generator_utils.find_first_index(self.DOC_JSON)
self.assertEqual(1822, first_index)
def test_find_last_index(self):
last_index = generator_utils.find_last_index(self.DOC_JSON)
self.assertEqual(2066, last_index)
def test_find_chrome_browser_version(self):
current_version = generator_utils.find_chrome_browser_version(self.DOC_JSON)
self.assertEqual("86.0.4187.0", current_version)
def test_find_bold_ranges(self):
expected_bold_ranges = [
(1843, 1855),
(1859, 1867),
(1871, 1876),
(1880, 1889),
(1893, 1900),
(1918, 1930),
(1934, 1942),
(1968, 1975),
(1946, 1951),
(1955, 1964),
(2001, 2013),
(2017, 2025),
(2029, 2034),
(2038, 2047),
(2051, 2058),
]
bold_ranges = generator_utils.find_bold_ranges(self.DOC_JSON)
self.assertItemsEqual(expected_bold_ranges, bold_ranges)
if __name__ == "__main__":
unittest.main()