Commit 73dff6d0 authored by Jérôme Lebel's avatar Jérôme Lebel Committed by Chromium LUCI CQ

Unit tests to IdentityManagerObserverBridge

Fixed: 903396
Change-Id: I4f2b7fa2d80f5248a6c9c04681bb8494e39061f2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2391131
Commit-Queue: Jérôme Lebel <jlebel@chromium.org>
Reviewed-by: default avatarColin Blundell <blundell@chromium.org>
Reviewed-by: default avatarMihai Sardarescu <msarda@chromium.org>
Cr-Commit-Position: refs/heads/master@{#844010}
parent 3d54419e
...@@ -225,6 +225,7 @@ test("components_unittests") { ...@@ -225,6 +225,7 @@ test("components_unittests") {
"//components/safe_browsing/ios:unit_tests", "//components/safe_browsing/ios:unit_tests",
"//components/security_state/ios:unit_tests", "//components/security_state/ios:unit_tests",
"//components/signin/ios/browser:unit_tests", "//components/signin/ios/browser:unit_tests",
"//components/signin/public/identity_manager/objc:unit_tests",
"//components/translate/ios/browser:unit_tests", "//components/translate/ios/browser:unit_tests",
"//components/ukm/ios:unit_tests", "//components/ukm/ios:unit_tests",
] ]
......
...@@ -11,3 +11,23 @@ source_set("objc") { ...@@ -11,3 +11,23 @@ source_set("objc") {
public_deps = [ "//components/signin/public/identity_manager" ] public_deps = [ "//components/signin/public/identity_manager" ]
} }
source_set("unit_tests") {
testonly = true
configs += [ "//build/config/compiler:enable_arc" ]
sources = [ "identity_manager_observer_bridge_unittest.mm" ]
deps = [
":objc",
"//base/test:test_support",
"//components/signin/public/identity_manager:test_support",
"//services/network:test_support",
"//testing/gtest",
]
if (is_ios) {
deps += [ "//components/signin/public/identity_manager/ios:test_support" ]
}
}
// Copyright 2020 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.
#import "components/signin/public/identity_manager/objc/identity_manager_observer_bridge.h"
#import "base/test/task_environment.h"
#import "components/signin/public/identity_manager/accounts_in_cookie_jar_info.h"
#import "components/signin/public/identity_manager/identity_test_environment.h"
#import "components/signin/public/identity_manager/primary_account_change_event.h"
#import "services/network/test/test_url_loader_factory.h"
#import "testing/gtest/include/gtest/gtest.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
@interface ObserverBridgeDelegateFake
: NSObject <IdentityManagerObserverBridgeDelegate>
@property(nonatomic, assign) NSInteger onPrimaryAccountSetCount;
@property(nonatomic, assign) NSInteger onPrimaryAccountClearedCount;
@property(nonatomic, assign) NSInteger onRefreshTokenUpdatedForAccountCount;
@property(nonatomic, assign) NSInteger onRefreshTokenRemovedForAccountCount;
@property(nonatomic, assign) NSInteger onRefreshTokensLoadedCount;
@property(nonatomic, assign) NSInteger onAccountsInCookieUpdatedCount;
@property(nonatomic, assign)
NSInteger onEndBatchOfRefreshTokenStateChangesCount;
@property(nonatomic, assign) CoreAccountInfo receivedPrimaryAccountInfo;
@property(nonatomic, assign) CoreAccountId receivedAccountId;
@property(nonatomic, assign)
signin::AccountsInCookieJarInfo receivedccountsInCookieJarInfo;
@property(nonatomic, assign) GoogleServiceAuthError receivedError;
@end
@implementation ObserverBridgeDelegateFake
- (void)onPrimaryAccountSet:(const CoreAccountInfo&)primaryAccountInfo {
++self.onPrimaryAccountSetCount;
self.receivedPrimaryAccountInfo = primaryAccountInfo;
}
- (void)onPrimaryAccountCleared:
(const CoreAccountInfo&)previousPrimaryAccountInfo {
++self.onPrimaryAccountClearedCount;
self.receivedPrimaryAccountInfo = previousPrimaryAccountInfo;
}
- (void)onRefreshTokenUpdatedForAccount:(const CoreAccountInfo&)accountInfo {
++self.onRefreshTokenUpdatedForAccountCount;
self.receivedPrimaryAccountInfo = accountInfo;
}
- (void)onRefreshTokenRemovedForAccount:(const CoreAccountId&)accountId {
++self.onRefreshTokenRemovedForAccountCount;
self.receivedAccountId = accountId;
}
- (void)onRefreshTokensLoaded {
++self.onRefreshTokensLoadedCount;
}
- (void)onAccountsInCookieUpdated:
(const signin::AccountsInCookieJarInfo&)accountsInCookieJarInfo
error:(const GoogleServiceAuthError&)error {
++self.onAccountsInCookieUpdatedCount;
self.receivedccountsInCookieJarInfo = accountsInCookieJarInfo;
self.receivedError = error;
}
- (void)onEndBatchOfRefreshTokenStateChanges {
++self.onEndBatchOfRefreshTokenStateChangesCount;
}
@end
namespace signin {
class IdentityManagerObserverBridgeTest : public testing::Test {
protected:
IdentityManagerObserverBridgeTest()
: identity_test_env_(&test_url_loader_factory_) {
observer_bridge_delegate_ = [[ObserverBridgeDelegateFake alloc] init];
signin::IdentityManager* identity_manager =
identity_test_env_.identity_manager();
observer_bridge_ = std::make_unique<signin::IdentityManagerObserverBridge>(
identity_manager, observer_bridge_delegate_);
account_id_ = CoreAccountId("accountid");
account_info_.account_id = account_id_;
account_info_.gaia = "joegaia";
account_info_.email = "joe@example.com";
const std::string gaia_id = signin::GetTestGaiaIdForEmail("1@mail.com");
gaia::ListedAccount one;
one.id = CoreAccountId(gaia_id);
just_one_.push_back(one);
}
~IdentityManagerObserverBridgeTest() override {}
public:
IdentityManagerObserverBridgeTest(const IdentityManagerObserverBridgeTest&) =
delete;
IdentityManagerObserverBridgeTest& operator=(
const IdentityManagerObserverBridgeTest&) = delete;
protected:
base::test::TaskEnvironment task_environment_;
network::TestURLLoaderFactory test_url_loader_factory_;
signin::IdentityTestEnvironment identity_test_env_;
std::unique_ptr<signin::IdentityManagerObserverBridge> observer_bridge_;
ObserverBridgeDelegateFake* observer_bridge_delegate_;
CoreAccountId account_id_;
CoreAccountInfo account_info_;
const std::vector<gaia::ListedAccount> no_account_;
std::vector<gaia::ListedAccount> just_one_;
};
// Tests IdentityManagerObserverBridge::OnPrimaryAccountChanged(), with set
// event.
TEST_F(IdentityManagerObserverBridgeTest, TestOnPrimaryAccountSet) {
PrimaryAccountChangeEvent::State previous_state;
PrimaryAccountChangeEvent::State current_state(account_info_,
signin::ConsentLevel::kSync);
PrimaryAccountChangeEvent event_details(previous_state, current_state);
observer_bridge_.get()->OnPrimaryAccountChanged(event_details);
EXPECT_EQ(1, observer_bridge_delegate_.onPrimaryAccountSetCount);
EXPECT_EQ(account_info_,
observer_bridge_delegate_.receivedPrimaryAccountInfo);
}
// Tests IdentityManagerObserverBridge::OnPrimaryAccountChanged(), with clear
// event.
TEST_F(IdentityManagerObserverBridgeTest, TestOnPrimaryAccountCleared) {
PrimaryAccountChangeEvent::State previous_state(account_info_,
signin::ConsentLevel::kSync);
PrimaryAccountChangeEvent::State current_state;
PrimaryAccountChangeEvent event_details(previous_state, current_state);
observer_bridge_.get()->OnPrimaryAccountChanged(event_details);
EXPECT_EQ(1, observer_bridge_delegate_.onPrimaryAccountClearedCount);
EXPECT_EQ(account_info_,
observer_bridge_delegate_.receivedPrimaryAccountInfo);
}
// Tests IdentityManagerObserverBridge::OnRefreshTokenUpdatedForAccount()
TEST_F(IdentityManagerObserverBridgeTest, TestOnRefreshTokenUpdatedForAccount) {
observer_bridge_.get()->OnRefreshTokenUpdatedForAccount(account_info_);
EXPECT_EQ(1, observer_bridge_delegate_.onRefreshTokenUpdatedForAccountCount);
EXPECT_EQ(account_info_,
observer_bridge_delegate_.receivedPrimaryAccountInfo);
}
// Tests IdentityManagerObserverBridge::OnRefreshTokenRemovedForAccount()
TEST_F(IdentityManagerObserverBridgeTest, OnRefreshTokenRemovedForAccount) {
CoreAccountId account_id;
observer_bridge_.get()->OnRefreshTokenRemovedForAccount(account_id);
EXPECT_EQ(1, observer_bridge_delegate_.onRefreshTokenRemovedForAccountCount);
}
// Tests IdentityManagerObserverBridge::OnRefreshTokensLoaded()
TEST_F(IdentityManagerObserverBridgeTest, OnRefreshTokensLoaded) {
observer_bridge_.get()->OnRefreshTokensLoaded();
EXPECT_EQ(1, observer_bridge_delegate_.onRefreshTokensLoadedCount);
}
// Tests IdentityManagerObserverBridge::OnAccountsInCookieUpdated() with no
// error.
TEST_F(IdentityManagerObserverBridgeTest,
OnAccountsInCookieUpdatedWithNoError) {
signin::AccountsInCookieJarInfo accounts_in_cookie_jar_info = {
true, just_one_, no_account_};
GoogleServiceAuthError noError(GoogleServiceAuthError::State::NONE);
observer_bridge_.get()->OnAccountsInCookieUpdated(accounts_in_cookie_jar_info,
noError);
EXPECT_EQ(1, observer_bridge_delegate_.onAccountsInCookieUpdatedCount);
EXPECT_EQ(noError, observer_bridge_delegate_.receivedError);
}
// Tests IdentityManagerObserverBridge::OnAccountsInCookieUpdated() with error.
TEST_F(IdentityManagerObserverBridgeTest, OnAccountsInCookieUpdatedWithError) {
signin::AccountsInCookieJarInfo accounts_in_cookie_jar_info = {
false, no_account_, just_one_};
GoogleServiceAuthError error(
GoogleServiceAuthError::State::CONNECTION_FAILED);
observer_bridge_.get()->OnAccountsInCookieUpdated(accounts_in_cookie_jar_info,
error);
EXPECT_EQ(1, observer_bridge_delegate_.onAccountsInCookieUpdatedCount);
EXPECT_EQ(error, observer_bridge_delegate_.receivedError);
}
// Tests IdentityManagerObserverBridge::OnEndBatchOfRefreshTokenStateChanges().
TEST_F(IdentityManagerObserverBridgeTest,
OnEndBatchOfRefreshTokenStateChanges) {
observer_bridge_.get()->OnEndBatchOfRefreshTokenStateChanges();
EXPECT_EQ(
1, observer_bridge_delegate_.onEndBatchOfRefreshTokenStateChangesCount);
}
}
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