blob: ef9c5c94c68251822792823c7eeacba91ac30b3e [file] [log] [blame]
// Copyright 2013 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.
package org.chromium.chrome.browser.signin;
import android.accounts.Account;
import android.test.InstrumentationTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import org.chromium.base.test.util.AdvancedMockContext;
import org.chromium.base.test.util.Feature;
import org.chromium.sync.signin.AccountManagerHelper;
import org.chromium.sync.test.util.AccountHolder;
import org.chromium.sync.test.util.MockAccountManager;
import java.util.concurrent.TimeUnit;
public class AndroidProfileOAuth2TokenServiceHelperTest extends InstrumentationTestCase {
private AdvancedMockContext mContext;
private MockAccountManager mAccountManager;
@Override
protected void setUp() throws Exception {
super.setUp();
// Mock out the account manager on the device.
mContext = new AdvancedMockContext(getInstrumentation().getTargetContext());
mAccountManager = new MockAccountManager(mContext, getInstrumentation().getContext());
AccountManagerHelper.overrideAccountManagerHelperForTests(mContext, mAccountManager);
}
@SmallTest
@Feature({"Sync"})
public void testGetOAuth2AccessTokenWithTimeoutOnSuccess() {
String authToken = "someToken";
// Auth token should be successfully received.
runTestOfGetOAuth2AccessTokenWithTimeout(authToken);
}
@SmallTest
@Feature({"Sync"})
public void testGetOAuth2AccessTokenWithTimeoutOnError() {
String authToken = null;
// Should not crash when auth token is null.
runTestOfGetOAuth2AccessTokenWithTimeout(authToken);
}
private void runTestOfGetOAuth2AccessTokenWithTimeout(String expectedToken) {
String scope = "http://example.com/scope";
Account account = AccountManagerHelper.createAccountFromName("test@gmail.com");
String oauth2Scope = "oauth2:" + scope;
// Add an account with given auth token for the given scope, already accepted auth popup.
AccountHolder accountHolder =
AccountHolder.create()
.account(account)
.hasBeenAccepted(oauth2Scope, true)
.authToken(oauth2Scope, expectedToken).build();
mAccountManager.addAccountHolderExplicitly(accountHolder);
String accessToken =
AndroidProfileOAuth2TokenServiceHelper.getOAuth2AccessTokenWithTimeout(
mContext, null, account, scope, 5, TimeUnit.SECONDS);
assertEquals(expectedToken, accessToken);
}
}