Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5317)

Unified Diff: chrome/browser/chromeos/attestation/attestation_policy_observer_unittest.cc

Issue 12556004: Created AttestationPolicyObserver. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/attestation/attestation_policy_observer_unittest.cc
diff --git a/chrome/browser/chromeos/attestation/attestation_policy_observer_unittest.cc b/chrome/browser/chromeos/attestation/attestation_policy_observer_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3ba9c9a6b383864c30f32ad902e3a89d692b09da
--- /dev/null
+++ b/chrome/browser/chromeos/attestation/attestation_policy_observer_unittest.cc
@@ -0,0 +1,118 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/bind.h"
+#include "base/message_loop.h"
+#include "base/run_loop.h"
+#include "chrome/browser/chromeos/attestation/attestation_policy_observer.h"
+#include "chrome/browser/chromeos/settings/cros_settings.h"
+#include "chrome/browser/chromeos/settings/cros_settings_names.h"
+#include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h"
+#include "chrome/browser/policy/cloud/mock_cloud_policy_client.h"
+#include "chromeos/attestation/mock_attestation_flow.h"
+#include "chromeos/dbus/mock_cryptohome_client.h"
+#include "content/public/test/test_browser_thread.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using testing::_;
+using testing::Invoke;
+using testing::StrictMock;
+using testing::WithArgs;
+
+namespace chromeos {
+namespace attestation {
+
+namespace {
+
+void DBusCallbackFalse(const BoolDBusMethodCallback& callback) {
+ MessageLoop::current()->PostTask(
+ FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, false));
+}
+
+void DBusCallbackTrue(const BoolDBusMethodCallback& callback) {
+ MessageLoop::current()->PostTask(
+ FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true));
+}
+
+void DBusDataCallback(const CryptohomeClient::DataMethodCallback& callback) {
+ MessageLoop::current()->PostTask(
+ FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true, "fake"));
+}
+
+void CertCallbackSuccess(const AttestationFlow::CertificateCallback& callback) {
+ MessageLoop::current()->PostTask(
+ FROM_HERE, base::Bind(callback, true, "fake_cert"));
+}
+
+} // namespace
+
+class AttestationPolicyObserverTest : public ::testing::Test {
+ public:
+ AttestationPolicyObserverTest()
+ : message_loop_(MessageLoop::TYPE_UI),
+ ui_thread_(content::BrowserThread::UI, &message_loop_) {
+ // Remove the real DeviceSettingsProvider and replace it with a stub.
+ CrosSettings* cros_settings = CrosSettings::Get();
+ device_settings_provider_ =
+ cros_settings->GetProvider(kDeviceAttestationEnabled);
+ cros_settings->RemoveSettingsProvider(device_settings_provider_);
+ cros_settings->AddSettingsProvider(&stub_settings_provider_);
+ cros_settings->SetBoolean(kDeviceAttestationEnabled, true);
+ policy_client_.SetDMToken("fake_dm_token");
+ }
+
+ virtual ~AttestationPolicyObserverTest() {
+ // Restore the real DeviceSettingsProvider.
+ CrosSettings* cros_settings = CrosSettings::Get();
+ cros_settings->RemoveSettingsProvider(&stub_settings_provider_);
+ cros_settings->AddSettingsProvider(device_settings_provider_);
+ }
+
+ protected:
+ void Run() {
+ AttestationPolicyObserver observer(&policy_client_,
+ &cryptohome_client_,
+ &attestation_flow_);
+ base::RunLoop().RunUntilIdle();
+ }
+
+ MessageLoop message_loop_;
+ content::TestBrowserThread ui_thread_;
+ ScopedTestCrosSettings test_cros_settings_;
+ CrosSettingsProvider* device_settings_provider_;
+ StubCrosSettingsProvider stub_settings_provider_;
+ StrictMock<MockCryptohomeClient> cryptohome_client_;
+ StrictMock<MockAttestationFlow> attestation_flow_;
+ StrictMock<policy::MockCloudPolicyClient> policy_client_;
+};
+
+TEST_F(AttestationPolicyObserverTest, FeatureDisabled) {
+ CrosSettings* cros_settings = CrosSettings::Get();
+ cros_settings->SetBoolean(kDeviceAttestationEnabled, false);
+ Run();
+}
+
+TEST_F(AttestationPolicyObserverTest, UnregisteredPolicyClient) {
+ policy_client_.SetDMToken("");
+ Run();
+}
+
+TEST_F(AttestationPolicyObserverTest, NewCertificate) {
+ EXPECT_CALL(cryptohome_client_, TpmAttestationDoesKeyExist(_, _, _))
+ .WillOnce(WithArgs<2>(Invoke(DBusCallbackFalse)));
+ EXPECT_CALL(attestation_flow_, GetCertificate(_, _))
+ .WillOnce(WithArgs<1>(Invoke(CertCallbackSuccess)));
+ Run();
+}
+
+TEST_F(AttestationPolicyObserverTest, KeyExists) {
+ EXPECT_CALL(cryptohome_client_, TpmAttestationDoesKeyExist(_, _, _))
+ .WillOnce(WithArgs<2>(Invoke(DBusCallbackTrue)));
+ EXPECT_CALL(cryptohome_client_, TpmAttestationGetCertificate(_, _, _))
+ .WillOnce(WithArgs<2>(Invoke(DBusDataCallback)));
+ Run();
+}
+
+} // namespace attestation
+} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698