Commit 78537960 authored by Leo Lai's avatar Leo Lai Committed by Chromium LUCI CQ

SystemTokenCertDBInitializer test cases of ownership taken signal.

This is the missing test coverage in unittests.

Technically speaking, certain browser tests, e.g.,
WebviewClientCertsTokenLoadingLoginTest also exercise the logic, but
the code distance is very far and thus hard to debug. It makes sense for
the its own unittests to test it first.

BUG=b:172748724
TEST=unit_tests.

Change-Id: Ib293bdeb1c572172e611ce9a55da15a8a0349a87
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2581707
Commit-Queue: Leo Lai <cylai@google.com>
Reviewed-by: default avatarAchuith Bhandarkar <achuith@chromium.org>
Reviewed-by: default avatarMaksim Ivanov <emaxx@chromium.org>
Cr-Commit-Position: refs/heads/master@{#836512}
parent c69bf65e
......@@ -216,6 +216,86 @@ TEST_F(SystemTokenCertDbInitializerTest,
get_system_token_cert_db_callback_wrapper.IsDbRetrievalSucceeded());
}
// Tests that the system token certificate database will be returned
// successfully by SystemTokenCertDbInitializer if it was available in less than
// 5 minutes after being requested, and the initialization is triggered by the
// ownership taken signal from tpm manager.
TEST_F(SystemTokenCertDbInitializerTest,
GetSystemTokenCertDbSuccessOwnershipTakenSignal) {
TpmManagerClient::Get()
->GetTestInterface()
->mutable_nonsensitive_status_reply()
->set_is_enabled(true);
TpmManagerClient::Get()
->GetTestInterface()
->mutable_nonsensitive_status_reply()
->set_is_owned(false);
GetSystemTokenCertDbCallbackWrapper get_system_token_cert_db_callback_wrapper;
system_token_cert_db_initializer()->GetSystemTokenCertDb(
get_system_token_cert_db_callback_wrapper.GetCallback());
EXPECT_FALSE(get_system_token_cert_db_callback_wrapper.IsCallbackCalled());
// Check that after 1 minute, SystemTokenCertDBInitializer is still waiting
// for the system token slot to be initialized and the DB retrieval hasn't
// timed out yet.
const auto kOneMinuteDelay = base::TimeDelta::FromMinutes(1);
EXPECT_LT(kOneMinuteDelay,
SystemTokenCertDBInitializer::kMaxCertDbRetrievalDelay);
task_environment()->FastForwardBy(kOneMinuteDelay);
EXPECT_FALSE(get_system_token_cert_db_callback_wrapper.IsCallbackCalled());
EXPECT_TRUE(InitializeTestSystemSlot());
TpmManagerClient::Get()->GetTestInterface()->EmitOwnershipTakenSignal();
get_system_token_cert_db_callback_wrapper.Wait();
EXPECT_TRUE(get_system_token_cert_db_callback_wrapper.IsCallbackCalled());
EXPECT_TRUE(
get_system_token_cert_db_callback_wrapper.IsDbRetrievalSucceeded());
}
// Tests that the system token certificate database will be returned
// successfully by SystemTokenCertDbInitializer if it was available in less than
// 5 minutes after being requested, and the initialization is triggered by
// taking TPM ownership and being signaled by tpm manager.
TEST_F(SystemTokenCertDbInitializerTest,
GetSystemTokenCertDbFailureNoOwnershipTakenSignal) {
TpmManagerClient::Get()
->GetTestInterface()
->mutable_nonsensitive_status_reply()
->set_is_enabled(true);
TpmManagerClient::Get()
->GetTestInterface()
->mutable_nonsensitive_status_reply()
->set_is_owned(false);
GetSystemTokenCertDbCallbackWrapper get_system_token_cert_db_callback_wrapper;
system_token_cert_db_initializer()->GetSystemTokenCertDb(
get_system_token_cert_db_callback_wrapper.GetCallback());
EXPECT_FALSE(get_system_token_cert_db_callback_wrapper.IsCallbackCalled());
// Check that after 1 minute, SystemTokenCertDBInitializer is still waiting
// for the system token slot to be initialized and the DB retrieval hasn't
// timed out yet.
const auto kOneMinuteDelay = base::TimeDelta::FromMinutes(1);
EXPECT_LT(kOneMinuteDelay,
SystemTokenCertDBInitializer::kMaxCertDbRetrievalDelay);
task_environment()->FastForwardBy(kOneMinuteDelay);
EXPECT_FALSE(get_system_token_cert_db_callback_wrapper.IsCallbackCalled());
EXPECT_TRUE(InitializeTestSystemSlot());
get_system_token_cert_db_callback_wrapper.Wait();
EXPECT_TRUE(get_system_token_cert_db_callback_wrapper.IsCallbackCalled());
EXPECT_FALSE(
get_system_token_cert_db_callback_wrapper.IsDbRetrievalSucceeded());
}
// Tests that the system token certificate database will be returned
// successfully by SystemTokenCertDbInitializer if it was available in less than
// 5 minutes after being requested even if the slot was available after more
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment