Index: chrome/test/sync/engine/mock_gaia_authenticator_unittest.cc |
=================================================================== |
--- chrome/test/sync/engine/mock_gaia_authenticator_unittest.cc (revision 0) |
+++ chrome/test/sync/engine/mock_gaia_authenticator_unittest.cc (revision 0) |
@@ -0,0 +1,157 @@ |
+// Copyright (c) 2009 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. |
+ |
+// Unit tests for MockGaiaAuthenticator. |
+ |
+#include "base/basictypes.h" |
+#include "base/port.h" |
+#include "chrome/browser/sync/engine/net/gaia_authenticator.h" |
+#include "chrome/browser/sync/protocol/service_constants.h" |
+#include "chrome/test/sync/engine/mock_gaia_authenticator.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace { |
+ |
+// Test if authentication succeeds for a mock user added earlier. |
+TEST(MockGaiaAuthenticatorTest, TestAuthenticationSuccess) { |
+ browser_sync::MockGaiaAuthenticator |
+ mock_gaia_auth("User-Agent", SYNC_SERVICE_NAME, |
+ "some random url"); |
+ |
+ // Initialize a mock user, and add to mock authenticator. |
+ browser_sync::MockUser mock_user; |
+ mock_user.email = "test"; |
+ mock_user.passwd = "passwd"; |
+ mock_user.auth_token = "SomeAuthToken"; |
+ mock_user.lsid = "SomeLSID"; |
+ mock_user.sid = "SomeSID"; |
+ mock_user.auth_error = browser_sync::None; |
+ mock_gaia_auth.AddMockUser(mock_user); |
+ |
+ // Assert away ... |
+ ASSERT_TRUE(mock_gaia_auth.Authenticate("test", "passwd")); |
+ ASSERT_STREQ(mock_gaia_auth.auth_token().c_str(), "SomeAuthToken"); |
+ ASSERT_STREQ(mock_gaia_auth.sid().c_str(), "SomeSID"); |
+ ASSERT_STREQ(mock_gaia_auth.lsid().c_str(), "SomeLSID"); |
+} |
+ |
+// Test if authentication fails for a mock user that was never added. |
+TEST(MockGaiaAuthenticatorTest, TestAuthenticationFailure) { |
+ browser_sync::MockGaiaAuthenticator |
+ mock_gaia_auth("User-Agent", SYNC_SERVICE_NAME, |
+ "some random url"); |
+ |
+ // At this point, in real code, we would be adding mock users to our mock |
+ // object. However, in this unittest, we exercise the path where this step is |
+ // missing, and assert that the outcome is still consistent with that of the |
+ // real GaiaAuthenticator. |
+ |
+ // Assert away ... |
+ ASSERT_FALSE(mock_gaia_auth.Authenticate("test", "passwd")); |
+ ASSERT_STREQ(mock_gaia_auth.auth_token().c_str(), ""); |
+ ASSERT_STREQ(mock_gaia_auth.sid().c_str(), ""); |
+ ASSERT_STREQ(mock_gaia_auth.lsid().c_str(), ""); |
+} |
+ |
+// Test if authentication fails after a mock user is removed. |
+TEST(MockGaiaAuthenticatorTest, TestRemoveMockUser) { |
+ // Instantiate authenticator. |
+ browser_sync::MockGaiaAuthenticator |
+ mock_gaia_auth("User-Agent", SYNC_SERVICE_NAME, |
+ "some random url"); |
+ |
+ // Add our mock user |
+ mock_gaia_auth.AddMockUser("test", "passwd", "SomeAuthToken", "SomeLSID", |
+ "SomeSID", browser_sync::None); |
+ |
+ // Make sure authentication succeeds. |
+ ASSERT_TRUE(mock_gaia_auth.Authenticate("test", "passwd")); |
+ ASSERT_STREQ(mock_gaia_auth.auth_token().c_str(), "SomeAuthToken"); |
+ ASSERT_STREQ(mock_gaia_auth.sid().c_str(), "SomeSID"); |
+ ASSERT_STREQ(mock_gaia_auth.lsid().c_str(), "SomeLSID"); |
+ |
+ // Remove the just-added user from our list. |
+ mock_gaia_auth.RemoveMockUser("test"); |
+ |
+ // ... and authentication should fail. |
+ ASSERT_FALSE(mock_gaia_auth.Authenticate("test", "passwd")); |
+ ASSERT_STREQ(mock_gaia_auth.auth_token().c_str(), ""); |
+ ASSERT_STREQ(mock_gaia_auth.sid().c_str(), ""); |
+ ASSERT_STREQ(mock_gaia_auth.lsid().c_str(), ""); |
+} |
+ |
+// Test if authentication fails after all mock users are removed. |
+TEST(MockGaiaAuthenticatorTest, TestRemoveAllMockUsers) { |
+ // Instantiate authenticator. |
+ browser_sync::MockGaiaAuthenticator |
+ mock_gaia_auth("User-Agent", SYNC_SERVICE_NAME, |
+ "some random url"); |
+ |
+ // Add our sample mock user. |
+ mock_gaia_auth.AddMockUser("test", "passwd", "SomeAuthToken", "SomeLSID", |
+ "SomeSID", browser_sync::None); |
+ |
+ // Make sure authentication succeeds |
+ ASSERT_TRUE(mock_gaia_auth.Authenticate("test", "passwd")); |
+ ASSERT_STREQ(mock_gaia_auth.auth_token().c_str(), "SomeAuthToken"); |
+ ASSERT_STREQ(mock_gaia_auth.sid().c_str(), "SomeSID"); |
+ ASSERT_STREQ(mock_gaia_auth.lsid().c_str(), "SomeLSID"); |
+ |
+ // Now remove all mock users. |
+ mock_gaia_auth.RemoveAllMockUsers(); |
+ |
+ // And confirm that authentication fails. |
+ ASSERT_FALSE(mock_gaia_auth.Authenticate("test", "passwd")); |
+ ASSERT_STREQ(mock_gaia_auth.auth_token().c_str(), ""); |
+ ASSERT_STREQ(mock_gaia_auth.sid().c_str(), ""); |
+ ASSERT_STREQ(mock_gaia_auth.lsid().c_str(), ""); |
+} |
+ |
+// Test authentication with saved credentials. |
+TEST(MockGaiaAuthenticatorTest, TestSavedCredentials) { |
+ // Instantiate authenticator. |
+ browser_sync::MockGaiaAuthenticator |
+ mock_gaia_auth("User-Agent", SYNC_SERVICE_NAME, |
+ "some random url"); |
+ |
+ // Add our sample mock user. |
+ mock_gaia_auth.AddMockUser("test", "passwd", "SomeAuthToken", "SomeLSID", |
+ "SomeSID", browser_sync::None); |
+ |
+ // Ask to save credentials. |
+ ASSERT_TRUE(mock_gaia_auth.Authenticate("test", "passwd", true)); |
+ ASSERT_STREQ(mock_gaia_auth.auth_token().c_str(), "SomeAuthToken"); |
+ ASSERT_STREQ(mock_gaia_auth.sid().c_str(), "SomeSID"); |
+ ASSERT_STREQ(mock_gaia_auth.lsid().c_str(), "SomeLSID"); |
+ |
+ // Now make a call that uses saved credentials, and assert that we get the |
+ // same tokens back. |
+ ASSERT_TRUE(mock_gaia_auth.Authenticate()); |
+ ASSERT_STREQ(mock_gaia_auth.email().c_str(), "test"); |
+ ASSERT_STREQ(mock_gaia_auth.auth_token().c_str(), "SomeAuthToken"); |
+ ASSERT_STREQ(mock_gaia_auth.sid().c_str(), "SomeSID"); |
+ ASSERT_STREQ(mock_gaia_auth.lsid().c_str(), "SomeLSID"); |
+ |
+ // Now clear the saved credentials by toggling the flag while authenticating. |
+ ASSERT_TRUE(mock_gaia_auth.Authenticate("test", "passwd", false)); |
+ |
+ // Test if saved credentials have been cleared. |
+ ASSERT_STREQ(mock_gaia_auth.email().c_str(), ""); |
+ |
+ // Assert that current authentication session still succeeds (we only asked |
+ // not to save it for future requests.) |
+ ASSERT_STREQ(mock_gaia_auth.auth_token().c_str(), "SomeAuthToken"); |
+ ASSERT_STREQ(mock_gaia_auth.sid().c_str(), "SomeSID"); |
+ ASSERT_STREQ(mock_gaia_auth.lsid().c_str(), "SomeLSID"); |
+ |
+ // Now try to use saved credentials: |
+ ASSERT_STREQ(mock_gaia_auth.email().c_str(), ""); |
+ ASSERT_FALSE(mock_gaia_auth.Authenticate()); |
+ |
+ // And assert that any future requests that rely on saved credentials fail. |
+ ASSERT_STREQ(mock_gaia_auth.auth_token().c_str(), ""); |
+ ASSERT_STREQ(mock_gaia_auth.sid().c_str(), ""); |
+ ASSERT_STREQ(mock_gaia_auth.lsid().c_str(), ""); |
+} |
+} // namespace |
Property changes on: chrome\test\sync\engine\mock_gaia_authenticator_unittest.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |