diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/vb2_api_tests.c | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/tests/vb2_api_tests.c b/tests/vb2_api_tests.c index 64995591..8c31c2ec 100644 --- a/tests/vb2_api_tests.c +++ b/tests/vb2_api_tests.c @@ -34,7 +34,7 @@ static const uint8_t mock_hwid_digest[VB2_GBB_HWID_DIGEST_SIZE] = { }; /* Mocked function data */ - +static int force_dev_mode; static int retval_vb2_fw_parse_gbb; static int retval_vb2_check_dev_switch; static int retval_vb2_check_tpm_clear; @@ -61,6 +61,7 @@ static void reset_common_data(enum reset_type t) vb2_secdata_create(&cc); vb2_secdata_init(&cc); + force_dev_mode = 0; retval_vb2_fw_parse_gbb = VB2_SUCCESS; retval_vb2_check_dev_switch = VB2_SUCCESS; retval_vb2_check_tpm_clear = VB2_SUCCESS; @@ -79,6 +80,8 @@ int vb2_fw_parse_gbb(struct vb2_context *ctx) int vb2_check_dev_switch(struct vb2_context *ctx) { + if (force_dev_mode) + sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED; return retval_vb2_check_dev_switch; } @@ -121,6 +124,10 @@ static void phase1_tests(void) TEST_EQ(sd->recovery_reason, 0, " not recovery"); TEST_EQ(cc.flags & VB2_CONTEXT_RECOVERY_MODE, 0, " recovery flag"); TEST_EQ(cc.flags & VB2_CONTEXT_CLEAR_RAM, 0, " clear ram flag"); + TEST_EQ(cc.flags & VB2_CONTEXT_DISPLAY_INIT, + 0, " display init context flag"); + TEST_EQ(sd->flags & VB2_SD_FLAG_DISPLAY_AVAILABLE, + 0, " display available SD flag"); reset_common_data(FOR_MISC); retval_vb2_fw_parse_gbb = VB2_ERROR_GBB_MAGIC; @@ -146,6 +153,11 @@ static void phase1_tests(void) "phase1 dev switch error in recovery"); TEST_EQ(sd->recovery_reason, VB2_RECOVERY_RO_UNSPECIFIED, " recovery reason"); + /* Check that DISPLAY_AVAILABLE gets set on recovery mode. */ + TEST_NEQ(cc.flags & VB2_CONTEXT_DISPLAY_INIT, + 0, " display init context flag"); + TEST_NEQ(sd->flags & VB2_SD_FLAG_DISPLAY_AVAILABLE, + 0, " display available SD flag"); reset_common_data(FOR_MISC); cc.secdata[0] ^= 0x42; @@ -235,6 +247,31 @@ static void phase1_tests(void) 1, " tpm reboot request"); TEST_EQ(vb2_nv_get(&cc, VB2_NV_RECOVERY_REQUEST), 0, " recovery request cleared"); + + /* Cases for checking DISPLAY_INIT and DISPLAY_AVAILABLE. */ + reset_common_data(FOR_MISC); + cc.flags |= VB2_CONTEXT_DISPLAY_INIT; + TEST_SUCC(vb2api_fw_phase1(&cc), "phase1 with DISPLAY_INIT"); + TEST_NEQ(cc.flags & VB2_CONTEXT_DISPLAY_INIT, + 0, " display init context flag"); + TEST_NEQ(sd->flags & VB2_SD_FLAG_DISPLAY_AVAILABLE, + 0, " display available SD flag"); + + reset_common_data(FOR_MISC); + vb2_nv_set(&cc, VB2_NV_OPROM_NEEDED, 1); + TEST_SUCC(vb2api_fw_phase1(&cc), "phase1 with OPROM_NEEDED"); + TEST_NEQ(cc.flags & VB2_CONTEXT_DISPLAY_INIT, + 0, " display init context flag"); + TEST_NEQ(sd->flags & VB2_SD_FLAG_DISPLAY_AVAILABLE, + 0, " display available SD flag"); + + reset_common_data(FOR_MISC); + force_dev_mode = 1; + TEST_SUCC(vb2api_fw_phase1(&cc), "phase1 in dev mode"); + TEST_NEQ(cc.flags & VB2_CONTEXT_DISPLAY_INIT, + 0, " display init context flag"); + TEST_NEQ(sd->flags & VB2_SD_FLAG_DISPLAY_AVAILABLE, + 0, " display available SD flag"); } static void phase2_tests(void) |