blob: fa77fa7e790e5d4c80abba066d76e0dac230ee99 [file] [log] [blame]
// Copyright 2021 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 "chrome/browser/webid/federated_identity_request_permission_context.h"
#include "chrome/browser/webid/federated_identity_request_permission_context_factory.h"
#include "chrome/test/base/testing_profile.h"
#include "components/content_settings/core/common/content_settings_types.h"
#include "content/public/test/browser_task_environment.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
class FederatedIdentityRequestPermissionContextTest : public testing::Test {
public:
FederatedIdentityRequestPermissionContextTest() {
context_ = FederatedIdentityRequestPermissionContextFactory::GetForProfile(
&profile_);
}
~FederatedIdentityRequestPermissionContextTest() override = default;
FederatedIdentityRequestPermissionContextTest(
FederatedIdentityRequestPermissionContextTest&) = delete;
FederatedIdentityRequestPermissionContextTest& operator=(
FederatedIdentityRequestPermissionContextTest&) = delete;
FederatedIdentityRequestPermissionContext* context() { return context_; }
TestingProfile* profile() { return &profile_; }
private:
content::BrowserTaskEnvironment task_environment_;
FederatedIdentityRequestPermissionContext* context_;
TestingProfile profile_;
};
TEST_F(FederatedIdentityRequestPermissionContextTest,
GrantAndRevokeSinglePermission) {
const auto rp_origin = url::Origin::Create(GURL("https://rp.example"));
const auto idp_origin = url::Origin::Create(GURL("https://idp.example"));
EXPECT_FALSE(context()->HasRequestPermission(rp_origin, idp_origin));
context()->GrantRequestPermission(rp_origin, idp_origin);
EXPECT_TRUE(context()->HasRequestPermission(rp_origin, idp_origin));
context()->RevokeRequestPermission(rp_origin, idp_origin);
EXPECT_FALSE(context()->HasRequestPermission(rp_origin, idp_origin));
}
// Ensure the context can handle multiple IdPs per RP origin.
TEST_F(FederatedIdentityRequestPermissionContextTest,
GrantTwoPermissionsAndRevokeOne) {
const auto rp_origin = url::Origin::Create(GURL("https://rp.example"));
const auto idp_origin1 = url::Origin::Create(GURL("https://idp1.example"));
const auto idp_origin2 = url::Origin::Create(GURL("https://idp2.example"));
EXPECT_FALSE(context()->HasRequestPermission(rp_origin, idp_origin1));
EXPECT_FALSE(context()->HasRequestPermission(rp_origin, idp_origin2));
context()->GrantRequestPermission(rp_origin, idp_origin1);
EXPECT_TRUE(context()->HasRequestPermission(rp_origin, idp_origin1));
EXPECT_FALSE(context()->HasRequestPermission(rp_origin, idp_origin2));
context()->GrantRequestPermission(rp_origin, idp_origin2);
EXPECT_TRUE(context()->HasRequestPermission(rp_origin, idp_origin1));
EXPECT_TRUE(context()->HasRequestPermission(rp_origin, idp_origin2));
context()->RevokeRequestPermission(rp_origin, idp_origin1);
EXPECT_FALSE(context()->HasRequestPermission(rp_origin, idp_origin1));
EXPECT_TRUE(context()->HasRequestPermission(rp_origin, idp_origin2));
}