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

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

Issue 1001723002: media: Refactor PlatformVerificationFlow. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments addressed Created 5 years, 9 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/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_);

Powered by Google App Engine
This is Rietveld 408576698