| Index: chrome/browser/chromeos/attestation/platform_verification_flow_unittest.cc
|
| diff --git a/chrome/browser/chromeos/attestation/platform_verification_flow_unittest.cc b/chrome/browser/chromeos/attestation/platform_verification_flow_unittest.cc
|
| index c984e2c5ccd4f4a09756e3e42d15295fe06a4f1c..fb5ac95a2e502224aecae40751e31063040f7e6f 100644
|
| --- a/chrome/browser/chromeos/attestation/platform_verification_flow_unittest.cc
|
| +++ b/chrome/browser/chromeos/attestation/platform_verification_flow_unittest.cc
|
| @@ -15,15 +15,11 @@
|
| #include "chrome/browser/chromeos/settings/device_settings_service.h"
|
| #include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h"
|
| #include "chrome/browser/profiles/profile_impl.h"
|
| -#include "chrome/browser/renderer_host/pepper/device_id_fetcher.h"
|
| #include "chrome/common/pref_names.h"
|
| -#include "chrome/test/base/testing_pref_service_syncable.h"
|
| #include "chromeos/attestation/mock_attestation_flow.h"
|
| #include "chromeos/cryptohome/mock_async_method_caller.h"
|
| #include "chromeos/dbus/fake_cryptohome_client.h"
|
| #include "chromeos/settings/cros_settings_names.h"
|
| -#include "components/content_settings/core/browser/host_content_settings_map.h"
|
| -#include "components/content_settings/core/common/content_settings_pattern.h"
|
| #include "content/public/test/test_browser_thread.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -47,45 +43,16 @@ const char kTestSignature[] = "test_signature";
|
| const char kTestCertificate[] = "test_certificate";
|
| const char kTestEmail[] = "test_email@chromium.org";
|
| const char kTestURL[] = "http://mytestdomain/test";
|
| -const char kTestURLSecure[] = "https://mytestdomain/test";
|
| -const char kTestURLExtension[] = "chrome-extension://mytestextension";
|
|
|
| class FakeDelegate : public PlatformVerificationFlow::Delegate {
|
| public:
|
| - FakeDelegate() : response_(PlatformVerificationFlow::CONSENT_RESPONSE_ALLOW),
|
| - num_consent_calls_(0),
|
| - url_(kTestURL),
|
| - is_incognito_(false) {
|
| + FakeDelegate()
|
| + : url_(kTestURL), is_permitted_by_user_(true), is_incognito_(false) {
|
| // Configure a user for the mock user manager.
|
| mock_user_manager_.SetActiveUser(kTestEmail);
|
| }
|
| ~FakeDelegate() override {}
|
|
|
| - void SetUp() {
|
| - ProfileImpl::RegisterProfilePrefs(pref_service_.registry());
|
| - chrome::DeviceIDFetcher::RegisterProfilePrefs(pref_service_.registry());
|
| - PlatformVerificationFlow::RegisterProfilePrefs(pref_service_.registry());
|
| - HostContentSettingsMap::RegisterProfilePrefs(pref_service_.registry());
|
| - content_settings_ = new HostContentSettingsMap(&pref_service_, false);
|
| - }
|
| -
|
| - void TearDown() {
|
| - content_settings_->ShutdownOnUIThread();
|
| - }
|
| -
|
| - void ShowConsentPrompt(
|
| - content::WebContents* web_contents,
|
| - const GURL& requesting_origin,
|
| - const PlatformVerificationFlow::Delegate::ConsentCallback& callback)
|
| - override {
|
| - num_consent_calls_++;
|
| - callback.Run(response_);
|
| - }
|
| -
|
| - PrefService* GetPrefs(content::WebContents* web_contents) override {
|
| - return &pref_service_;
|
| - }
|
| -
|
| const GURL& GetURL(content::WebContents* web_contents) override {
|
| return url_;
|
| }
|
| @@ -94,42 +61,30 @@ class FakeDelegate : public PlatformVerificationFlow::Delegate {
|
| return mock_user_manager_.GetActiveUser();
|
| }
|
|
|
| - HostContentSettingsMap* GetContentSettings(
|
| - content::WebContents* web_contents) override {
|
| - return content_settings_.get();
|
| + bool IsPermittedByUser(content::WebContents* web_contents) override {
|
| + return is_permitted_by_user_;
|
| }
|
|
|
| bool IsGuestOrIncognito(content::WebContents* web_contents) override {
|
| return is_incognito_;
|
| }
|
|
|
| - void set_response(PlatformVerificationFlow::ConsentResponse response) {
|
| - response_ = response;
|
| - }
|
| -
|
| - int num_consent_calls() {
|
| - return num_consent_calls_;
|
| - }
|
| -
|
| - TestingPrefServiceSyncable& pref_service() {
|
| - return pref_service_;
|
| - }
|
| -
|
| void set_url(const GURL& url) {
|
| url_ = url;
|
| }
|
|
|
| + void set_is_permitted_by_user(bool is_permitted_by_user) {
|
| + is_permitted_by_user_ = is_permitted_by_user;
|
| + }
|
| +
|
| void set_is_incognito(bool is_incognito) {
|
| is_incognito_ = is_incognito;
|
| }
|
|
|
| private:
|
| - PlatformVerificationFlow::ConsentResponse response_;
|
| - int num_consent_calls_;
|
| - TestingPrefServiceSyncable pref_service_;
|
| MockUserManager mock_user_manager_;
|
| GURL url_;
|
| - scoped_refptr<HostContentSettingsMap> content_settings_;
|
| + bool is_permitted_by_user_;
|
| bool is_incognito_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(FakeDelegate);
|
| @@ -186,8 +141,6 @@ class PlatformVerificationFlowTest : public ::testing::Test {
|
| result_(PlatformVerificationFlow::INTERNAL_ERROR) {}
|
|
|
| void SetUp() {
|
| - fake_delegate_.SetUp();
|
| -
|
| // Create a verifier for tests to call.
|
| verifier_ = new PlatformVerificationFlow(&mock_attestation_flow_,
|
| &mock_async_caller_,
|
| @@ -205,10 +158,6 @@ class PlatformVerificationFlowTest : public ::testing::Test {
|
| cros_settings->RemoveSettingsProvider(device_settings_provider_);
|
| cros_settings->AddSettingsProvider(&stub_settings_provider_);
|
| cros_settings->SetBoolean(kAttestationForContentProtectionEnabled, true);
|
| -
|
| - // Start with the first-time setting set since most tests want this.
|
| - fake_delegate_.pref_service().SetUserPref(prefs::kRAConsentGranted,
|
| - new base::FundamentalValue(true));
|
| }
|
|
|
| void TearDown() {
|
| @@ -216,7 +165,6 @@ class PlatformVerificationFlowTest : public ::testing::Test {
|
| CrosSettings* cros_settings = CrosSettings::Get();
|
| cros_settings->RemoveSettingsProvider(&stub_settings_provider_);
|
| cros_settings->AddSettingsProvider(device_settings_provider_);
|
| - fake_delegate_.TearDown();
|
| }
|
|
|
| void ExpectAttestationFlow() {
|
| @@ -242,11 +190,6 @@ class PlatformVerificationFlowTest : public ::testing::Test {
|
| this, &PlatformVerificationFlowTest::FakeSignChallenge)));
|
| }
|
|
|
| - void SetUserConsent(const GURL& url, bool allow) {
|
| - verifier_->RecordOriginConsent(fake_delegate_.GetContentSettings(NULL), url,
|
| - allow);
|
| - }
|
| -
|
| void FakeGetCertificate(
|
| const AttestationFlow::CertificateCallback& callback) {
|
| std::string certificate =
|
| @@ -316,24 +259,7 @@ class PlatformVerificationFlowTest : public ::testing::Test {
|
| std::string certificate_;
|
| };
|
|
|
| -TEST_F(PlatformVerificationFlowTest, SuccessNoConsent) {
|
| - SetUserConsent(GURL(kTestURL), true);
|
| - // Make sure the call will fail if consent is requested.
|
| - fake_delegate_.set_response(PlatformVerificationFlow::CONSENT_RESPONSE_DENY);
|
| - ExpectAttestationFlow();
|
| - verifier_->ChallengePlatformKey(NULL, kTestID, kTestChallenge, callback_);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(PlatformVerificationFlow::SUCCESS, result_);
|
| - EXPECT_EQ(kTestSignedData, challenge_salt_);
|
| - EXPECT_EQ(kTestSignature, challenge_signature_);
|
| - EXPECT_EQ(kTestCertificate, certificate_);
|
| - EXPECT_EQ(0, fake_delegate_.num_consent_calls());
|
| -}
|
| -
|
| -TEST_F(PlatformVerificationFlowTest, SuccessWithConsent) {
|
| - SetUserConsent(GURL(kTestURL), true);
|
| - fake_delegate_.pref_service().SetUserPref(prefs::kRAConsentGranted,
|
| - new base::FundamentalValue(false));
|
| +TEST_F(PlatformVerificationFlowTest, Success) {
|
| ExpectAttestationFlow();
|
| verifier_->ChallengePlatformKey(NULL, kTestID, kTestChallenge, callback_);
|
| base::RunLoop().RunUntilIdle();
|
| @@ -341,41 +267,21 @@ TEST_F(PlatformVerificationFlowTest, SuccessWithConsent) {
|
| EXPECT_EQ(kTestSignedData, challenge_salt_);
|
| EXPECT_EQ(kTestSignature, challenge_signature_);
|
| EXPECT_EQ(kTestCertificate, certificate_);
|
| - EXPECT_EQ(1, fake_delegate_.num_consent_calls());
|
| }
|
|
|
| -TEST_F(PlatformVerificationFlowTest, ConsentRejected) {
|
| - fake_delegate_.set_response(PlatformVerificationFlow::CONSENT_RESPONSE_DENY);
|
| +TEST_F(PlatformVerificationFlowTest, NotPermittedByUser) {
|
| + fake_delegate_.set_is_permitted_by_user(false);
|
| verifier_->ChallengePlatformKey(NULL, kTestID, kTestChallenge, callback_);
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_EQ(PlatformVerificationFlow::USER_REJECTED, result_);
|
| - EXPECT_EQ(1, fake_delegate_.num_consent_calls());
|
| }
|
|
|
| -TEST_F(PlatformVerificationFlowTest, FeatureDisabled) {
|
| +TEST_F(PlatformVerificationFlowTest, FeatureDisabledByPolicy) {
|
| CrosSettings::Get()->SetBoolean(kAttestationForContentProtectionEnabled,
|
| false);
|
| verifier_->ChallengePlatformKey(NULL, kTestID, kTestChallenge, callback_);
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_EQ(PlatformVerificationFlow::POLICY_REJECTED, result_);
|
| - EXPECT_EQ(0, fake_delegate_.num_consent_calls());
|
| -}
|
| -
|
| -TEST_F(PlatformVerificationFlowTest, FeatureDisabledByUser) {
|
| - fake_delegate_.pref_service().SetUserPref(prefs::kEnableDRM,
|
| - new base::FundamentalValue(false));
|
| - verifier_->ChallengePlatformKey(NULL, kTestID, kTestChallenge, callback_);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(PlatformVerificationFlow::POLICY_REJECTED, result_);
|
| - EXPECT_EQ(0, fake_delegate_.num_consent_calls());
|
| -}
|
| -
|
| -TEST_F(PlatformVerificationFlowTest, FeatureDisabledByUserForDomain) {
|
| - SetUserConsent(GURL(kTestURL), false);
|
| - verifier_->ChallengePlatformKey(NULL, kTestID, kTestChallenge, callback_);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(PlatformVerificationFlow::POLICY_REJECTED, result_);
|
| - EXPECT_EQ(0, fake_delegate_.num_consent_calls());
|
| }
|
|
|
| TEST_F(PlatformVerificationFlowTest, NotVerified) {
|
| @@ -401,39 +307,6 @@ TEST_F(PlatformVerificationFlowTest, DBusFailure) {
|
| EXPECT_EQ(PlatformVerificationFlow::INTERNAL_ERROR, result_);
|
| }
|
|
|
| -TEST_F(PlatformVerificationFlowTest, ConsentNoResponse) {
|
| - fake_delegate_.set_response(PlatformVerificationFlow::CONSENT_RESPONSE_NONE);
|
| - verifier_->ChallengePlatformKey(NULL, kTestID, kTestChallenge, callback_);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(PlatformVerificationFlow::USER_REJECTED, result_);
|
| -}
|
| -
|
| -TEST_F(PlatformVerificationFlowTest, ConsentPerScheme) {
|
| - fake_delegate_.set_response(PlatformVerificationFlow::CONSENT_RESPONSE_DENY);
|
| - verifier_->ChallengePlatformKey(NULL, kTestID, kTestChallenge, callback_);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(PlatformVerificationFlow::USER_REJECTED, result_);
|
| - // Call again and expect denial based on previous response.
|
| - verifier_->ChallengePlatformKey(NULL, kTestID, kTestChallenge, callback_);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(PlatformVerificationFlow::POLICY_REJECTED, result_);
|
| - // Call with a different scheme and expect another consent prompt.
|
| - fake_delegate_.set_url(GURL(kTestURLSecure));
|
| - verifier_->ChallengePlatformKey(NULL, kTestID, kTestChallenge, callback_);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(PlatformVerificationFlow::USER_REJECTED, result_);
|
| - EXPECT_EQ(2, fake_delegate_.num_consent_calls());
|
| -}
|
| -
|
| -TEST_F(PlatformVerificationFlowTest, ConsentForExtension) {
|
| - fake_delegate_.set_response(PlatformVerificationFlow::CONSENT_RESPONSE_DENY);
|
| - fake_delegate_.set_url(GURL(kTestURLExtension));
|
| - verifier_->ChallengePlatformKey(NULL, kTestID, kTestChallenge, callback_);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(PlatformVerificationFlow::USER_REJECTED, result_);
|
| - EXPECT_EQ(1, fake_delegate_.num_consent_calls());
|
| -}
|
| -
|
| TEST_F(PlatformVerificationFlowTest, Timeout) {
|
| verifier_->set_timeout_delay(base::TimeDelta::FromSeconds(0));
|
| ExpectAttestationFlow();
|
| @@ -463,7 +336,6 @@ TEST_F(PlatformVerificationFlowTest, IncognitoMode) {
|
| }
|
|
|
| TEST_F(PlatformVerificationFlowTest, AttestationNotPrepared) {
|
| - fake_delegate_.set_response(PlatformVerificationFlow::CONSENT_RESPONSE_DENY);
|
| fake_cryptohome_client_.set_attestation_enrolled(false);
|
| fake_cryptohome_client_.set_attestation_prepared(false);
|
| verifier_->ChallengePlatformKey(NULL, kTestID, kTestChallenge, callback_);
|
|
|