vboot: Move vb2_normal_boot tests to vb2_kernel_tests.c

Move vb2_normal_boot tests from legacy clamshell UI tests to
2kernel tests.

BUG=b:124141368, chromium:968464
TEST=make clean && make runtests
BRANCH=none

Change-Id: Iaf05dfa845222cd5eaf5aa39afcfa23f0ef21425
Signed-off-by: Hsuan Ting Chen <roccochen@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2091152
Reviewed-by: Joel Kitching <kitching@chromium.org>
diff --git a/tests/vb2_kernel_tests.c b/tests/vb2_kernel_tests.c
index bd64fb0..b78b292 100644
--- a/tests/vb2_kernel_tests.c
+++ b/tests/vb2_kernel_tests.c
@@ -7,6 +7,7 @@
 
 #include "2api.h"
 #include "2common.h"
+#include "2kernel.h"
 #include "2misc.h"
 #include "2nvstorage.h"
 #include "2rsa.h"
@@ -34,10 +35,14 @@
 
 static int mock_read_res_fail_on_call;
 static int mock_secdata_fwmp_check_retval;
+static int mock_vbtlk_expect_fixed;
+static int mock_vbtlk_expect_removable;
+static vb2_error_t mock_vbtlk_retval;
 
 /* Type of test to reset for */
 enum reset_type {
 	FOR_PHASE1,
+	FOR_NORMAL_BOOT,
 };
 
 static void reset_common_data(enum reset_type t)
@@ -58,6 +63,10 @@
 
 	mock_read_res_fail_on_call = 0;
 	mock_secdata_fwmp_check_retval = VB2_SUCCESS;
+	mock_vbtlk_expect_fixed = 0;
+	mock_vbtlk_expect_removable = 0;
+	mock_vbtlk_retval = VB2_SUCCESS;
+
 
 	/* Recovery key in mock GBB */
 	memset(&mock_gbb, 0, sizeof(mock_gbb));
@@ -136,6 +145,26 @@
 	return VB2_SUCCESS;
 }
 
+vb2_error_t VbTryLoadKernel(struct vb2_context *c, uint32_t get_info_flags)
+{
+	/*
+	 * TODO: Currently we don't have a good way of testing for an ordered
+	 * sequence of VB_DISK_FLAG_FIXED and then VB_DISK_FLAG_REMOVABLE.  If
+	 * both are set, then just assume success.
+	 */
+	if (mock_vbtlk_expect_fixed && mock_vbtlk_expect_removable)
+		return mock_vbtlk_retval;
+
+	TEST_EQ(!!mock_vbtlk_expect_fixed,
+		!!(get_info_flags & VB_DISK_FLAG_FIXED),
+		"  VbTryLoadKernel unexpected fixed disk call");
+	TEST_EQ(!!mock_vbtlk_expect_removable,
+		!!(get_info_flags & VB_DISK_FLAG_REMOVABLE),
+		"  VbTryLoadKernel unexpected removable disk call");
+
+	return mock_vbtlk_retval;
+}
+
 /* Tests */
 
 static void phase1_tests(void)
@@ -254,12 +283,30 @@
 
 static void normal_boot_tests(void)
 {
-	/*
-	 * TODO: vb2_normal_boot() tests go here.  Relocate from
-	 * vboot_legacy_clamshell_tests.c, and remove comment in
-	 * vboot_legacy_menu_tests.c.
-	 */
-}
+	reset_common_data(FOR_NORMAL_BOOT);
+	mock_vbtlk_expect_fixed = 1;
+	TEST_EQ(vb2_normal_boot(ctx), VB2_SUCCESS,
+		"vb2_normal_boot() returns VB2_SUCCESS");
+
+	reset_common_data(FOR_NORMAL_BOOT);
+	mock_vbtlk_expect_fixed = 1;
+	mock_vbtlk_retval = VB2_ERROR_MOCK;
+	TEST_EQ(vb2_normal_boot(ctx), VB2_ERROR_MOCK,
+		"vb2_normal_boot() returns VB2_ERROR_MOCK");
+
+	reset_common_data(FOR_NORMAL_BOOT);
+	vb2_nv_set(ctx, VB2_NV_DISPLAY_REQUEST, 1);
+	TEST_EQ(vb2_normal_boot(ctx), VBERROR_REBOOT_REQUIRED,
+		"vb2_normal_boot() reboot to reset NVRAM display request");
+	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST), 0,
+		"  display request reset");
+
+	reset_common_data(FOR_NORMAL_BOOT);
+	vb2_nv_set(ctx, VB2_NV_DIAG_REQUEST, 1);
+	TEST_EQ(vb2_normal_boot(ctx), VBERROR_REBOOT_REQUIRED,
+		"vb2_normal_boot() reboot to reset NVRAM diag request");
+	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST), 0,
+		"  diag request reset");}
 
 int main(int argc, char* argv[])
 {
diff --git a/tests/vboot_legacy_clamshell_tests.c b/tests/vboot_legacy_clamshell_tests.c
index 4f0849d..48ae6ad 100644
--- a/tests/vboot_legacy_clamshell_tests.c
+++ b/tests/vboot_legacy_clamshell_tests.c
@@ -6,7 +6,6 @@
  */
 
 #include "2common.h"
-#include "2kernel.h"
 #include "2misc.h"
 #include "2nvstorage.h"
 #include "2secdata.h"
@@ -480,34 +479,6 @@
 	VB2_DEBUG("...done.\n");
 }
 
-static void VbBootTest(void)
-{
-	ResetMocks();
-	vbtlk_expect_fixed = 1;
-	vbtlk_retval = VB2_SUCCESS;
-	TEST_EQ(vb2_normal_boot(ctx), VB2_SUCCESS,
-		"vb2_normal_boot() returns VB2_SUCCESS");
-
-	ResetMocks();
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(vb2_normal_boot(ctx), VB2_ERROR_MOCK,
-		"vb2_normal_boot() returns VB2_ERROR_MOCK");
-
-	ResetMocks();
-	vb2_nv_set(ctx, VB2_NV_DISPLAY_REQUEST, 1);
-	TEST_EQ(vb2_normal_boot(ctx), VBERROR_REBOOT_REQUIRED,
-		"vb2_normal_boot() reboot to reset NVRAM display request");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST), 0,
-		"  display request reset");
-
-	ResetMocks();
-	vb2_nv_set(ctx, VB2_NV_DIAG_REQUEST, 1);
-	TEST_EQ(vb2_normal_boot(ctx), VBERROR_REBOOT_REQUIRED,
-		"vb2_normal_boot() reboot to reset NVRAM diag request");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST), 0,
-		"  diag request reset");
-}
-
 static void VbBootDevTest(void)
 {
 	int key;
@@ -1661,7 +1632,6 @@
 int main(void)
 {
 	VbUserConfirmsTest();
-	VbBootTest();
 	VbBootDevTest();
 	VbBootDevVendorDataTest();
 	VbBootRecTest();
diff --git a/tests/vboot_legacy_menu_tests.c b/tests/vboot_legacy_menu_tests.c
index 57dcb4a..5e010a1 100644
--- a/tests/vboot_legacy_menu_tests.c
+++ b/tests/vboot_legacy_menu_tests.c
@@ -234,11 +234,6 @@
 
 /* Tests */
 
-/*
- * vb2_normal_boot tests: Please see VbBootTest in
- * vboot_legacy_clamshell_tests.c.
- */
-
 static void VbBootDevTest(void)
 {
 	int i;