blob: ecf855c02275ba198c2d5ffb0ade2488745b271d [file] [log] [blame]
// Copyright 2015 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 "ios/chrome/browser/ui/authentication/signed_in_accounts_view_controller.h"
#include <memory>
#include "base/strings/sys_string_conversions.h"
#include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
#include "ios/chrome/browser/signin/authentication_service_factory.h"
#import "ios/chrome/browser/signin/authentication_service_fake.h"
#include "ios/chrome/test/block_cleanup_test.h"
#include "ios/public/provider/chrome/browser/signin/fake_chrome_identity_service.h"
#include "ios/web/public/test/test_web_thread_bundle.h"
#import "testing/gtest_mac.h"
#include "testing/platform_test.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
class SignedInAccountsViewControllerTest : public BlockCleanupTest {
public:
void SetUp() override {
BlockCleanupTest::SetUp();
TestChromeBrowserState::Builder builder;
builder.AddTestingFactory(
AuthenticationServiceFactory::GetInstance(),
AuthenticationServiceFake::CreateAuthenticationService);
browser_state_ = builder.Build();
auth_service_ = static_cast<AuthenticationServiceFake*>(
AuthenticationServiceFactory::GetInstance()->GetForBrowserState(
browser_state_.get()));
ios::FakeChromeIdentityService* identity_service =
ios::FakeChromeIdentityService::GetInstanceFromChromeProvider();
identity_service->AddIdentities(
@[ @"identity1", @"identity2", @"identity3" ]);
auth_service_->SignIn(
[identity_service->GetAllIdentitiesSortedForDisplay() objectAtIndex:0],
std::string());
}
protected:
web::TestWebThreadBundle thread_bundle_;
AuthenticationServiceFake* auth_service_;
std::unique_ptr<TestChromeBrowserState> browser_state_;
};
// Tests that the signed in accounts view shouldn't be presented when the
// accounts haven't changed.
TEST_F(SignedInAccountsViewControllerTest,
ShouldBePresentedForBrowserStateNotNecessary) {
EXPECT_FALSE([SignedInAccountsViewController
shouldBePresentedForBrowserState:browser_state_.get()]);
}
// Tests that the signed in accounts view should be presented when the accounts
// have changed.
TEST_F(SignedInAccountsViewControllerTest,
ShouldBePresentedForBrowserStateNecessary) {
auth_service_->SetHaveAccountsChanged(true);
EXPECT_TRUE([SignedInAccountsViewController
shouldBePresentedForBrowserState:browser_state_.get()]);
}