xref: /aosp_15_r20/external/autotest/server/cros/servo/topology/servo_topology_unittest.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1#!/usr/bin/python3
2# Copyright 2020 The Chromium OS Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import unittest
7
8import common
9from autotest_lib.server.cros.servo.topology import servo_topology
10
11# pylint: disable=missing-docstring
12
13
14class ConvertDataToStringTests(unittest.TestCase):
15    def test_expect_empty_when_data_is_none(self):
16        data = servo_topology._convert_topology_to_string(None)
17        self.assertEqual(data, '')
18
19    def test_expect_empty_when_data_is_empty(self):
20        data = servo_topology._convert_topology_to_string({})
21        self.assertEqual(data, '')
22
23    def test_expect_string_when_data_is_provided(self):
24        expected_string = (
25                'eyJtYWluIjp7InVzYl9odWJfcG9ydCI6IjYuNC4xIiwic2VyaWFsIjoiQzE'
26                '5MDMxNDU1OTEhQCMkJV4qKClcIic6OycnXFw/L2BcIiwiLCJ0eXBlIjoic2'
27                'Vydm9fdjQiLCJzeXNmc19wcm9kdWN0IjoiU2Vydm8gVjQifSwiY2hpbGRyZ'
28                'W4iOlt7InVzYl9odWJfcG9ydCI6IjYuNC4yIiwic2VyaWFsIjoiMDY4MUQw'
29                'M0EtOTJEQ0NENjQiLCJ0eXBlIjoiY2NkX2NyNTAiLCJzeXNmc19wcm9kdWN'
30                '0IjoiQ3I1MCJ9XX0=')
31        data = {
32                "main": {
33                        "usb_hub_port": "6.4.1",
34                        "serial": "C1903145591!@#$%^*()\"':;''\\?/`\",",
35                        "type": "servo_v4",
36                        "sysfs_product": "Servo V4"
37                },
38                "children": [{
39                        "usb_hub_port": "6.4.2",
40                        "serial": "0681D03A-92DCCD64",
41                        "type": "ccd_cr50",
42                        "sysfs_product": "Cr50"
43                }]
44        }
45
46        result = servo_topology._convert_topology_to_string(data)
47        self.assertEqual(result, expected_string)
48
49    def test_expect_string_when_data_is_provided2(self):
50        expected_string = (
51                'eyJtYWluIjp7InVzYl9odWJfcG9ydCI6IiIsInNlcmlhbCI6IiIsInR5cGU'
52                'iOiIiLCJzeXNmc19wcm9kdWN0IjoiIn0sImNoaWxkcmVuIjpbXX0=')
53        data = {
54                "main": {
55                        "usb_hub_port": "",
56                        "serial": "",
57                        "type": "",
58                        "sysfs_product": ""
59                },
60                "children": []
61        }
62
63        result = servo_topology._convert_topology_to_string(data)
64        self.assertEqual(result, expected_string)
65
66
67class ParseStringToDataTests(unittest.TestCase):
68    def test_expect_none_when_string_empty(self):
69        data = servo_topology._parse_string_as_topology("")
70        self.assertEqual(data, None)
71
72    def test_expect_empty_data_when_string_empty_instance(self):
73        data = servo_topology._parse_string_as_topology('{}')
74        self.assertEqual(data, None)
75
76    def test_expect_data_when_string_is_provided(self):
77        b64_data = (
78                'eyJtYWluIjp7InVzYl9odWJfcG9ydCI6IjYuNC4xIiwic2VyaWFsIjoiQzE5'
79                'MDMxNDU1OTEhQCMkJV4mKigpXCInOjsnJ1xcPy9gflwiLCIsInR5cGUiOiJz'
80                'ZXJ2b192NCIsInN5c2ZzX3Byb2R1Y3QiOiJTZXJ2byBWNCJ9LCJjaGlsZHJl'
81                'biI6W3sidXNiX2h1Yl9wb3J0IjoiNi40LjIiLCJzZXJpYWwiOiIwNjgxRDAz'
82                'QS05MkRDQ0Q2NCIsInR5cGUiOiJjY2RfY3I1MCIsInN5c2ZzX3Byb2R1Y3Qi'
83                'OiJDcjUwIn1dfQ==')
84        data = {
85                "main": {
86                        "usb_hub_port": "6.4.1",
87                        "serial": "C1903145591!@#$%^&*()\"':;''\\?/`~\",",
88                        "type": "servo_v4",
89                        "sysfs_product": "Servo V4"
90                },
91                "children": [{
92                        "usb_hub_port": "6.4.2",
93                        "serial": "0681D03A-92DCCD64",
94                        "type": "ccd_cr50",
95                        "sysfs_product": "Cr50"
96                }]
97        }
98
99        result = servo_topology._parse_string_as_topology(b64_data)
100        self.assertEqual(result, data)
101
102    def test_expect_data_when_string_is_provided2(self):
103        b64_data = (
104                'eyJtYWluIjp7InVzYl9odWJfcG9ydCI6IiIsInNlcmlhbCI6IiIsInR5cGU'
105                'iOiIiLCJzeXNmc19wcm9kdWN0IjoiIn0sImNoaWxkcmVuIjpbXX0=')
106        data = {
107                "main": {
108                        "usb_hub_port": "",
109                        "serial": "",
110                        "type": "",
111                        "sysfs_product": ""
112                },
113                "children": []
114        }
115
116        result = servo_topology._parse_string_as_topology(b64_data)
117        self.assertEqual(result, data)
118
119
120if __name__ == '__main__':
121    unittest.main()
122