- fix a test that is now broken after a change to filter the
  authtoken from the result of any call but getAuthToken
- made the tests distinguish between the different types of
  options
- test the authtoken result in a couple places where it wasn't
  tested before
diff --git a/tests/tests/accounts/src/android/accounts/cts/AccountManagerTest.java b/tests/tests/accounts/src/android/accounts/cts/AccountManagerTest.java
index d625b06..8b0ca5f 100644
--- a/tests/tests/accounts/src/android/accounts/cts/AccountManagerTest.java
+++ b/tests/tests/accounts/src/android/accounts/cts/AccountManagerTest.java
@@ -112,12 +112,18 @@
         super.tearDown();
     }
 
-    private void validateNonNullResult(Bundle result) {
+    private void validateAccountAndAuthTokenResult(Bundle result) {
         assertEquals(ACCOUNT_NAME, result.get(AccountManager.KEY_ACCOUNT_NAME));
         assertEquals(ACCOUNT_TYPE, result.get(AccountManager.KEY_ACCOUNT_TYPE));
         assertEquals(AUTH_TOKEN, result.get(AccountManager.KEY_AUTHTOKEN));
     }
 
+    private void validateAccountAndNoAuthTokenResult(Bundle result) {
+        assertEquals(ACCOUNT_NAME, result.get(AccountManager.KEY_ACCOUNT_NAME));
+        assertEquals(ACCOUNT_TYPE, result.get(AccountManager.KEY_ACCOUNT_TYPE));
+        assertNull(result.get(AccountManager.KEY_AUTHTOKEN));
+    }
+
     private void validateNullResult(Bundle resultBundle) {
         assertNull(resultBundle.get(AccountManager.KEY_ACCOUNT_NAME));
         assertNull(resultBundle.get(AccountManager.KEY_ACCOUNT_TYPE));
@@ -134,17 +140,18 @@
         assertEquals(REQUIRED_FEATURES[1], mockAuthenticator.getRequiredFeatures()[1]);
     }
 
-    private void validateOptions() {
-        assertNotNull(mockAuthenticator.getOptions());
-        assertEquals(OPTION_VALUE_1, mockAuthenticator.getOptions().get(OPTION_NAME_1));
-        assertEquals(OPTION_VALUE_2, mockAuthenticator.getOptions().get(OPTION_NAME_2));
+    private void validateOptions(Bundle expectedOptions, Bundle actualOptions) {
+        if (expectedOptions == null) {
+            assertNull(actualOptions);
+        } else {
+            assertNotNull(actualOptions);
+            assertEquals(expectedOptions.get(OPTION_NAME_1), actualOptions.get(OPTION_NAME_1));
+            assertEquals(expectedOptions.get(OPTION_NAME_2), actualOptions.get(OPTION_NAME_2));
+        }
     }
 
     private void validateCredentials() {
         assertEquals(ACCOUNT, mockAuthenticator.getAccount());
-
-        assertEquals(OPTION_VALUE_1, mockAuthenticator.getOptions().get(OPTION_NAME_1));
-        assertEquals(OPTION_VALUE_2, mockAuthenticator.getOptions().get(OPTION_NAME_2));
     }
 
     private int getAccountsCount() {
@@ -252,10 +259,13 @@
         // Assert parameters has been passed correctly
         validateAccountAndAuthTokenType();
         validateFeatures();
-        validateOptions();
+        validateOptions(OPTIONS_BUNDLE, mockAuthenticator.mOptionsAddAccount);
+        validateOptions(null, mockAuthenticator.mOptionsUpdateCredentials);
+        validateOptions(null, mockAuthenticator.mOptionsConfirmCredentials);
+        validateOptions(null, mockAuthenticator.mOptionsGetAuthToken);
 
         // Assert returned result
-        validateNonNullResult(resultBundle);
+        validateAccountAndNoAuthTokenResult(resultBundle);
     }
 
     /**
@@ -289,16 +299,19 @@
                 // Assert parameters has been passed correctly
                 validateAccountAndAuthTokenType();
                 validateFeatures();
-                validateOptions();
+                validateOptions(OPTIONS_BUNDLE, mockAuthenticator.mOptionsAddAccount);
+                validateOptions(null, mockAuthenticator.mOptionsUpdateCredentials);
+                validateOptions(null, mockAuthenticator.mOptionsConfirmCredentials);
+                validateOptions(null, mockAuthenticator.mOptionsGetAuthToken);
 
                 // Assert return result
-                validateNonNullResult(resultBundle);
+                validateAccountAndNoAuthTokenResult(resultBundle);
 
                 latch.countDown();
             }
         };
 
-        Bundle resultBundle = addAccount(am,
+        addAccount(am,
                 ACCOUNT_TYPE,
                 AUTH_TOKEN_TYPE,
                 REQUIRED_FEATURES,
@@ -607,7 +620,7 @@
         assertNotNull(resultBundle);
 
         // Assert returned result
-        validateNonNullResult(resultBundle);
+        validateAccountAndAuthTokenResult(resultBundle);
     }
 
     /**
@@ -635,7 +648,7 @@
                     resultBundle = bundleFuture.getResult();
 
                     // Assert returned result
-                    validateNonNullResult(resultBundle);
+                    validateAccountAndAuthTokenResult(resultBundle);
 
                 } catch (OperationCanceledException e) {
                     fail("should not throw an OperationCanceledException");
@@ -692,9 +705,13 @@
         assertNotNull(resultBundle);
 
         // Assert returned result
-        validateNonNullResult(resultBundle);
+        validateAccountAndAuthTokenResult(resultBundle);
 
-        validateOptions();
+        validateOptions(null, mockAuthenticator.mOptionsAddAccount);
+        validateOptions(null, mockAuthenticator.mOptionsUpdateCredentials);
+        validateOptions(null, mockAuthenticator.mOptionsConfirmCredentials);
+        validateOptions(OPTIONS_BUNDLE, mockAuthenticator.mOptionsGetAuthToken);
+
     }
 
     /**
@@ -722,7 +739,7 @@
                     resultBundle = bundleFuture.getResult();
 
                     // Assert returned result
-                    validateNonNullResult(resultBundle);
+                    validateAccountAndAuthTokenResult(resultBundle);
 
                 } catch (OperationCanceledException e) {
                     fail("should not throw an OperationCanceledException");
@@ -774,7 +791,11 @@
         // Assert returned result
         validateNullResult(resultBundle);
 
-        assertNull(mockAuthenticator.getOptions());
+        validateOptions(null, mockAuthenticator.mOptionsAddAccount);
+        validateOptions(null, mockAuthenticator.mOptionsUpdateCredentials);
+        validateOptions(null, mockAuthenticator.mOptionsConfirmCredentials);
+        validateOptions(null, mockAuthenticator.mOptionsGetAuthToken);
+
         mockAuthenticator.clearData();
 
         // Now test with existing features and an activity
@@ -784,9 +805,13 @@
         );
 
         // Assert returned result
-        validateNonNullResult(resultBundle);
+        validateAccountAndAuthTokenResult(resultBundle);
 
-        validateOptions();
+        validateOptions(OPTIONS_BUNDLE, mockAuthenticator.mOptionsAddAccount);
+        validateOptions(null, mockAuthenticator.mOptionsUpdateCredentials);
+        validateOptions(null, mockAuthenticator.mOptionsConfirmCredentials);
+        validateOptions(null, mockAuthenticator.mOptionsGetAuthToken);
+
         mockAuthenticator.clearData();
 
         // Now test with existing features and no activity
@@ -796,9 +821,13 @@
         );
 
         // Assert returned result
-        validateNonNullResult(resultBundle);
+        validateAccountAndAuthTokenResult(resultBundle);
 
-        assertNull(mockAuthenticator.getOptions());
+        validateOptions(null, mockAuthenticator.mOptionsAddAccount);
+        validateOptions(null, mockAuthenticator.mOptionsUpdateCredentials);
+        validateOptions(null, mockAuthenticator.mOptionsConfirmCredentials);
+        validateOptions(null, mockAuthenticator.mOptionsGetAuthToken);
+
         mockAuthenticator.clearData();
 
         // Now test with existing features and an activity
@@ -808,9 +837,13 @@
         );
 
         // Assert returned result
-        validateNonNullResult(resultBundle);
+        validateAccountAndAuthTokenResult(resultBundle);
 
-        assertNull(mockAuthenticator.getOptions());
+        validateOptions(null, mockAuthenticator.mOptionsAddAccount);
+        validateOptions(null, mockAuthenticator.mOptionsUpdateCredentials);
+        validateOptions(null, mockAuthenticator.mOptionsConfirmCredentials);
+        validateOptions(null, mockAuthenticator.mOptionsGetAuthToken);
+
     }
 
     /**
@@ -860,6 +893,7 @@
                     // Assert returned result
                     validateCredentials();
 
+                    assertNull(resultBundle.get(AccountManager.KEY_AUTHTOKEN));
                 } catch (OperationCanceledException e) {
                     fail("should not throw an OperationCanceledException");
                 } catch (IOException e) {
@@ -904,7 +938,9 @@
                 null /* callback*/,
                 null /* handler */);
 
-        futureBundle.getResult();
+        Bundle result = futureBundle.getResult();
+
+        validateAccountAndNoAuthTokenResult(result);
 
         // Assert returned result
         validateCredentials();
@@ -936,6 +972,7 @@
 
                     // Assert returned result
                     validateCredentials();
+                    assertNull(resultBundle.get(AccountManager.KEY_AUTHTOKEN));
 
                 } catch (OperationCanceledException e) {
                     fail("should not throw an OperationCanceledException");
@@ -978,7 +1015,9 @@
                 null /* callback */,
                 null /* handler*/);
 
-        futureBundle.getResult();
+        Bundle result = futureBundle.getResult();
+
+        validateAccountAndNoAuthTokenResult(result);
 
         // Assert returned result
         assertEquals(ACCOUNT_TYPE, mockAuthenticator.getAccountType());
diff --git a/tests/tests/accounts/src/android/accounts/cts/MockAccountAuthenticator.java b/tests/tests/accounts/src/android/accounts/cts/MockAccountAuthenticator.java
index 9843385..2d5c395 100644
--- a/tests/tests/accounts/src/android/accounts/cts/MockAccountAuthenticator.java
+++ b/tests/tests/accounts/src/android/accounts/cts/MockAccountAuthenticator.java
@@ -35,7 +35,10 @@
     private String mAccountType;
     private String mAuthTokenType;
     private String[] mRequiredFeatures;
-    private Bundle mOptions;
+    public Bundle mOptionsUpdateCredentials;
+    public Bundle mOptionsConfirmCredentials;
+    public Bundle mOptionsAddAccount;
+    public Bundle mOptionsGetAuthToken;
     private Account mAccount;
     private String[] mFeatures;
 
@@ -65,10 +68,6 @@
         return mRequiredFeatures;
     }
 
-    public Bundle getOptions() {
-        return mOptions;
-    }
-
     public Account getAccount() {
         return mAccount;
     }
@@ -82,7 +81,10 @@
         mAccountType = null;
         mAuthTokenType = null;
         mRequiredFeatures = null;
-        mOptions = null;
+        mOptionsUpdateCredentials = null;
+        mOptionsAddAccount = null;
+        mOptionsGetAuthToken = null;
+        mOptionsConfirmCredentials = null;
         mAccount = null;
         mFeatures = null;
     }
@@ -108,7 +110,7 @@
         this.mAccountType = accountType;
         this.mAuthTokenType = authTokenType;
         this.mRequiredFeatures = requiredFeatures;
-        this.mOptions = options;
+        this.mOptionsAddAccount = options;
 
         return createResultBundle();
     }
@@ -123,7 +125,7 @@
         this.mResponse = response;
         this.mAccount = account;
         this.mAuthTokenType = authTokenType;
-        this.mOptions = options;
+        this.mOptionsUpdateCredentials = options;
 
         return createResultBundle();
     }
@@ -151,7 +153,7 @@
 
         this.mResponse = response;
         this.mAccount = account;
-        this.mOptions = options;
+        this.mOptionsConfirmCredentials = options;
 
         Bundle result = new Bundle();
         result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true);
@@ -169,7 +171,7 @@
         this.mResponse = response;
         this.mAccount = account;
         this.mAuthTokenType = authTokenType;
-        this.mOptions = options;
+        this.mOptionsGetAuthToken = options;
 
         return createResultBundle();
     }