| #!/usr/bin/python2 |
| # pylint: disable-msg=C0111 |
| # |
| # Copyright 2019 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file |
| """Test for skylab json utils.""" |
| |
| from __future__ import unicode_literals |
| |
| import unittest |
| |
| import common |
| #TODO(gregorynisbet): remove renamed import of skylab_json_utils |
| from autotest_lib.cli import skylab_json_utils as sky |
| from autotest_lib.cli import skylab_json_utils |
| |
| basic_labels = sky.Labels() |
| basic_labels._add_label("key1:value1") |
| basic_labels._add_label("key2") |
| basic_labels._add_label("key4") |
| basic_labels._add_label("key6") |
| |
| |
| class skylab_json_utils_unittest(unittest.TestCase): |
| def test_label_empty(self): |
| self.assertFalse(sky.Labels().bools) |
| self.assertFalse(sky.Labels().strings) |
| self.assertFalse(sky.Labels()) |
| |
| def test_label_copy(self): |
| basic_labels2 = sky.Labels(basic_labels) |
| self.assertEqual(basic_labels, basic_labels2) |
| |
| def test_bool_label_present(self): |
| self.assertTrue(basic_labels.get_bool("key2")) |
| |
| def test_bool_label_absent(self): |
| self.assertFalse(basic_labels.get_bool("nonexistent-key")) |
| |
| def test_string_label_present(self): |
| self.assertEqual(basic_labels.get_string("key1"), "value1") |
| |
| def test_string_label_absent(self): |
| self.assertIsNone(basic_labels.get_string("nonexistent-key")) |
| |
| def test_enum_label_present(self): |
| """the value in a key:value pair into a string that resembles a |
| |
| protobuf constant. |
| |
| The skylab add-dut JSON API expects certain fields which are |
| protobuf enums to be strings of this form. |
| """ |
| self.assertEqual( |
| basic_labels.get_enum("key1", prefix="PREFIX_"), "PREFIX_VALUE1") |
| |
| def test_enum_label_absent(self): |
| """by convention, many of the 'zero values' protobuf constants |
| |
| are named TYPE_INVALID. |
| |
| e.g. 'CARRIER_INVALID' |
| """ |
| self.assertEqual( |
| basic_labels.get_enum("nonexistent-key", prefix="THING_"), |
| "THING_INVALID") |
| |
| def test_bool_keys_starting_with(self): |
| self.assertEqual( |
| set(basic_labels.bool_keys_starting_with("k")), |
| {"key2", "key4", "key6"}) |
| |
| def test_arc_present(self): |
| l = sky.Labels() |
| l._add_label("arc") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["arc"], True) |
| |
| def test_arc_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["arc"], False) |
| |
| def test_board_present(self): |
| l = sky.Labels() |
| l._add_label("board:nami") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["board"], "nami") |
| |
| def test_board_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["board"], None) |
| |
| def test_cr50phase_present(self): |
| l = sky.Labels() |
| l._add_label("cr50:0.3.18") |
| out = sky.process_labels(l, platform=None) |
| # TODO(gregorynisbet): note! strictly speaking this is wrong, |
| # but skylab does not support version numbers in the CR50_PHASE |
| self.assertEqual(out["cr50Phase"], "CR50_PHASE_INVALID") |
| |
| def test_cr50phase_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["cr50Phase"], "CR50_PHASE_INVALID") |
| |
| def test_board_present(self): |
| l = sky.Labels() |
| l._add_label("model:syndra") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["model"], "syndra") |
| |
| def test_board_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["model"], None) |
| |
| def test_platform(self): |
| l = None |
| out = sky.process_labels(None, platform=47) |
| self.assertEqual(out["platform"], 47) |
| |
| def test_reference_design_present(self): |
| l = sky.Labels() |
| l._add_label("reference_design:Google_Nami") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["referenceDesign"], "Google_Nami") |
| |
| def test_reference_design_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["referenceDesign"], None) |
| |
| def test_ec_present(self): |
| l = sky.Labels() |
| l._add_label("ec:cros") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["ecType"], "EC_TYPE_CHROME_OS") |
| |
| def test_ec_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["ecType"], "EC_TYPE_INVALID") |
| |
| def test_os_present(self): |
| l = sky.Labels() |
| l._add_label("os:cros") |
| out = sky.process_labels(l, platform=None) |
| # NOTE: the type is OS_TYPE_CROS not OS_TYPE_CHROME_OS |
| self.assertEqual(out["osType"], "OS_TYPE_CROS") |
| |
| def test_os_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["osType"], "OS_TYPE_INVALID") |
| |
| def test_critical_pool_present(self): |
| l = sky.Labels() |
| # note: use suites rather than another pool because |
| # suites will always be mapped to DUT_POOL_SUITES |
| l._add_label("pool:suites") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["criticalPools"], ["DUT_POOL_SUITES"]) |
| |
| def test_critical_pool_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertFalse("criticalPools" in out) |
| |
| def test_hwid_sku_present(self): |
| l = sky.Labels() |
| l._add_label("sku:TEST") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["hwidSku"], "TEST") |
| |
| def test_hwid_sku_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["hwidSku"], None) |
| |
| def test_cts_abi_present(self): |
| l = sky.Labels() |
| l._add_label("cts_abi_arm") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["ctsAbi"], ["CTS_ABI_ARM"]) |
| |
| def test_cts_abi_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["ctsAbi"], []) |
| |
| def test_cts_cpu_present(self): |
| l = sky.Labels() |
| l._add_label("cts_cpu_arm") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["ctsCpu"], ["CTS_CPU_ARM"]) |
| |
| def test_cts_cpu_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["ctsCpu"], []) |
| |
| def test_atrus_present(self): |
| l = sky.Labels() |
| l._add_label("atrus") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["atrus"], True) |
| |
| def test_atrus_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["atrus"], False) |
| |
| def test_bluetooth_present(self): |
| l = sky.Labels() |
| l._add_label("bluetooth") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["bluetooth"], True) |
| |
| def test_bluetooth_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["bluetooth"], False) |
| |
| def test_detachablebase_present(self): |
| l = sky.Labels() |
| l._add_label("detachablebase") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["detachablebase"], True) |
| |
| def test_detachablebase_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["detachablebase"], False) |
| |
| def test_flashrom_present(self): |
| l = sky.Labels() |
| l._add_label("flashrom") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["flashrom"], True) |
| |
| def test_flashrom_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["flashrom"], False) |
| |
| def test_hotwording_present(self): |
| l = sky.Labels() |
| l._add_label("hotwording") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["hotwording"], True) |
| |
| def test_hotwording_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["hotwording"], False) |
| |
| def test_internal_display_present(self): |
| l = sky.Labels() |
| l._add_label("internal_display") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["internalDisplay"], True) |
| |
| def test_internal_display_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["internalDisplay"], False) |
| |
| def test_lucidsleep_present(self): |
| l = sky.Labels() |
| l._add_label("lucidsleep") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["lucidsleep"], True) |
| |
| def test_lucidsleep_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["lucidsleep"], False) |
| |
| def test_touchpad_present(self): |
| l = sky.Labels() |
| l._add_label("touchpad") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["touchpad"], True) |
| |
| def test_touchpad_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["touchpad"], False) |
| |
| def test_webcam_present(self): |
| l = sky.Labels() |
| l._add_label("webcam") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["webcam"], True) |
| |
| def test_webcam_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["webcam"], False) |
| |
| def test_graphics_present(self): |
| l = sky.Labels() |
| l._add_label("graphics:graphicsval") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["graphics"], "graphicsval") |
| |
| def test_graphics_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["graphics"], None) |
| |
| def test_gpu_family(self): |
| l = sky.Labels() |
| l._add_label("gpu_family:gpu_family_val") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["gpuFamily"], "gpu_family_val") |
| |
| def test_graphics_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["gpuFamily"], None) |
| |
| def test_modem_present(self): |
| l = sky.Labels() |
| l._add_label("modem:gobi2k") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["modem"], "gobi2k") |
| |
| def test_modem_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["modem"], "") |
| |
| def test_power_present(self): |
| l = sky.Labels() |
| l._add_label("power:battery") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["power"], "battery") |
| |
| def test_power_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["power"], None) |
| |
| def test_storage_present(self): |
| l = sky.Labels() |
| l._add_label("storage:nmve") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["storage"], "nmve") |
| |
| def test_storage_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertIsNone(out["capabilities"]["storage"]) |
| |
| def test_telephony_present(self): |
| l = sky.Labels() |
| l._add_label("telephony:volte") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["telephony"], "volte") |
| |
| def test_telephony_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["telephony"], "") |
| |
| def test_carrier_present(self): |
| l = sky.Labels() |
| l._add_label("carrier:att") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["carrier"], "CARRIER_ATT") |
| |
| def test_carrier_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["carrier"], "CARRIER_INVALID") |
| |
| def test_video_accleration_present(self): |
| l = sky.Labels() |
| l._add_label("hw_video_acc_enc_vp9") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["videoAcceleration"], ["VIDEO_ACCELERATION_ENC_VP9"]) |
| |
| def test_video_accleration_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["capabilities"]["videoAcceleration"], []) |
| |
| def test_audio_board_present(self): |
| l = sky.Labels() |
| l._add_label("audio_board") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["audioBoard"], True) |
| |
| def test_audio_board_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["audioBoard"], False) |
| |
| def test_audio_box_present(self): |
| l = sky.Labels() |
| l._add_label("audio_box") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["audioBox"], True) |
| |
| def test_audio_box_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["audioBox"], False) |
| |
| def test_audio_loopback_dongle_present(self): |
| l = sky.Labels() |
| l._add_label("audio_loopback_dongle") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["audioLoopbackDongle"], True) |
| |
| def test_audio_loopback_dongle_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["audioLoopbackDongle"], False) |
| |
| def test_chameleon_present(self): |
| l = sky.Labels() |
| l._add_label("chameleon") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["chameleon"], True) |
| |
| def test_chameleon_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["chameleon"], False) |
| |
| def test_chameleon_type_present(self): |
| l = sky.Labels() |
| # the chameleon type field is named chameleon:something |
| # NOT chameleon_type:something |
| l._add_label("chameleon:hdmi") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["chameleonType"], |
| "CHAMELEON_TYPE_HDMI") |
| |
| def test_chameleon_type_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertIsNone(out["peripherals"]["chameleonType"]) |
| |
| def test_conductive_present(self): |
| l = sky.Labels() |
| l._add_label("conductive:True") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["conductive"], True) |
| |
| def test_conductive_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["conductive"], False) |
| |
| def test_conductive_false(self): |
| l = sky.Labels() |
| l._add_label("conductive:False") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["conductive"], False) |
| |
| def test_huddly_present(self): |
| l = sky.Labels() |
| l._add_label("huddly") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["huddly"], True) |
| |
| def test_huddly_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["huddly"], False) |
| |
| def test_mimo_present(self): |
| l = sky.Labels() |
| l._add_label("mimo") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["mimo"], True) |
| |
| def test_mimo_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["mimo"], False) |
| |
| def test_servo_present(self): |
| l = sky.Labels() |
| l._add_label("servo") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["servo"], True) |
| |
| def test_servo_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["servo"], False) |
| |
| def test_stylus_present(self): |
| l = sky.Labels() |
| l._add_label("stylus") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["stylus"], True) |
| |
| def test_stylus_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["stylus"], False) |
| |
| def test_wificell_present(self): |
| l = sky.Labels() |
| l._add_label("pool:bvt") |
| l._add_label("wificell") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["wificell"], True) |
| |
| def test_wificell_absent(self): |
| l = sky.Labels() |
| l._add_label("pool:bvt") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["peripherals"]["wificell"], False) |
| |
| def test_chaos_dut_present(self): |
| l = sky.Labels() |
| l._add_label("chaos_dut") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["chaosDut"], True) |
| |
| def test_chaos_dut_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["chaosDut"], False) |
| |
| def test_chaos_dut_present(self): |
| l = sky.Labels() |
| l._add_label("chaos_dut") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["chaosDut"], True) |
| |
| def test_chaos_dut_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["chaosDut"], False) |
| |
| def test_chromesign_present(self): |
| l = sky.Labels() |
| l._add_label("chromesign") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["chromesign"], True) |
| |
| def test_chromesign_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["chromesign"], False) |
| |
| def test_hangout_app_present(self): |
| l = sky.Labels() |
| l._add_label("hangout_app") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["hangoutApp"], True) |
| |
| def test_hangout_app_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["hangoutApp"], False) |
| |
| def test_meet_app_present(self): |
| l = sky.Labels() |
| l._add_label("meet_app") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["meetApp"], True) |
| |
| def test_meet_app_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["meetApp"], False) |
| |
| def test_recovery_test_present(self): |
| l = sky.Labels() |
| l._add_label("recovery_test") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["recoveryTest"], True) |
| |
| def test_recovery_test_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["recoveryTest"], False) |
| |
| def test_test_audio_jack_present(self): |
| # NOTE: test_audio_jack maps to testAudiojack |
| # instead of the expected *testAudioJack |
| l = sky.Labels() |
| l._add_label("test_audio_jack") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["testAudiojack"], True) |
| |
| def test_test_audio_jack_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["testAudiojack"], False) |
| |
| def test_test_hdmiaudio_present(self): |
| l = sky.Labels() |
| l._add_label("test_hdmiaudio") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["testHdmiaudio"], True) |
| |
| def test_test_hdmiaudio_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["testHdmiaudio"], False) |
| |
| def test_test_usbprinting_present(self): |
| l = sky.Labels() |
| l._add_label("test_usbprinting") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["testUsbprinting"], True) |
| |
| def test_test_usbprinting_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["testUsbprinting"], False) |
| |
| def test_usb_detect_present(self): |
| l = sky.Labels() |
| l._add_label("usb_detect") |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["usbDetect"], True) |
| |
| def test_usb_detect_absent(self): |
| l = sky.Labels() |
| out = sky.process_labels(l, platform=None) |
| self.assertEqual(out["testCoverageHints"]["usbDetect"], False) |
| |
| def test_validate_fields_smoke_test(self): |
| with self.assertRaises(ValueError): |
| skylab_json_utils.validate_required_fields_for_skylab(47) |
| |
| def test_validate_fields_no_common(self): |
| with self.assertRaises(ValueError): |
| skylab_json_utils.validate_required_fields_for_skylab({}) |
| |
| def test_validate_fields_no_labels(self): |
| with self.assertRaises(ValueError): |
| skylab_json_utils.validate_required_fields_for_skylab( |
| {"common": None}) |
| |
| def test_validate_fields_no_board(self): |
| with self.assertRaises( |
| skylab_json_utils.SkylabMissingLabelException) as ctx: |
| skylab_json_utils.validate_required_fields_for_skylab( |
| {"common": { |
| "labels": [] |
| }}) |
| e = ctx.exception |
| self.assertEqual(e.message, "board") |
| |
| def test_validate_fields_no_model(self): |
| with self.assertRaises( |
| skylab_json_utils.SkylabMissingLabelException) as ctx: |
| skylab_json_utils.validate_required_fields_for_skylab( |
| {"common": { |
| "labels": { |
| "board": True |
| } |
| }}) |
| e = ctx.exception |
| self.assertEqual(e.message, "model") |
| |
| def test_validate_fields_no_sku(self): |
| with self.assertRaises( |
| skylab_json_utils.SkylabMissingLabelException) as ctx: |
| skylab_json_utils.validate_required_fields_for_skylab( |
| {"common": { |
| "labels": { |
| "board": True, |
| "model": True |
| } |
| }}) |
| e = ctx.exception |
| self.assertEqual(e.message, "sku") |
| |
| def test_validate_fields_no_brand(self): |
| with self.assertRaises( |
| skylab_json_utils.SkylabMissingLabelException) as ctx: |
| skylab_json_utils.validate_required_fields_for_skylab({ |
| "common": { |
| "labels": { |
| "board": True, |
| "model": True, |
| "sku": True |
| } |
| } |
| }) |
| e = ctx.exception |
| self.assertEqual(e.message, "brand") |
| |
| def test_validate_fields_pass(self): |
| item = { |
| "common": { |
| "labels": { |
| "board": True, |
| "model": True, |
| "sku": True, |
| "brand": True |
| } |
| } |
| } |
| # should complete without throwing exception |
| skylab_json_utils.validate_required_fields_for_skylab(item) |
| |
| |
| if __name__ == "__main__": |
| unittest.main() |