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