Index: chrome/common/net/gaia/gaia_authenticator2_unittest.cc |
diff --git a/chrome/common/net/gaia/gaia_authenticator2_unittest.cc b/chrome/common/net/gaia/gaia_authenticator2_unittest.cc |
index 54d92114b241b5a880a50eca369ca63fdafadfc6..4e4dc82411428e386a66cb300782c230bf5d0fbc 100644 |
--- a/chrome/common/net/gaia/gaia_authenticator2_unittest.cc |
+++ b/chrome/common/net/gaia/gaia_authenticator2_unittest.cc |
@@ -27,7 +27,8 @@ using ::testing::_; |
class GaiaAuthenticator2Test : public testing::Test { |
public: |
GaiaAuthenticator2Test() |
- : source_(GaiaAuthenticator2::kClientLoginUrl) {} |
+ : client_login_source_(GaiaAuthenticator2::kClientLoginUrl), |
+ issue_auth_token_source_(GaiaAuthenticator2::kIssueAuthTokenUrl) {} |
void RunParsingTest(const std::string& data, |
const std::string& sid, |
@@ -47,7 +48,8 @@ class GaiaAuthenticator2Test : public testing::Test { |
} |
ResponseCookies cookies_; |
- GURL source_; |
+ GURL client_login_source_; |
+ GURL issue_auth_token_source_; |
TestingProfile profile_; |
}; |
@@ -55,16 +57,21 @@ class MockGaiaConsumer : public GaiaAuthConsumer { |
public: |
MockGaiaConsumer() {} |
~MockGaiaConsumer() {} |
- MOCK_METHOD1(OnClientLoginFailure, void(const ClientLoginError& error)); |
+ |
MOCK_METHOD1(OnClientLoginSuccess, void(const ClientLoginResult& result)); |
+ MOCK_METHOD2(OnIssueAuthTokenSuccess, void(const std::string& service, |
+ const std::string& token)); |
+ MOCK_METHOD1(OnClientLoginFailure, void(const GaiaAuthError& error)); |
+ MOCK_METHOD2(OnIssueAuthTokenFailure, void(const std::string& service, |
+ const GaiaAuthError& error)); |
}; |
TEST_F(GaiaAuthenticator2Test, ErrorComparator) { |
- GaiaAuthConsumer::ClientLoginError expected_error; |
+ GaiaAuthConsumer::GaiaAuthError expected_error; |
expected_error.code = GaiaAuthConsumer::NETWORK_ERROR; |
expected_error.network_error = -101; |
- GaiaAuthConsumer::ClientLoginError matching_error; |
+ GaiaAuthConsumer::GaiaAuthError matching_error; |
matching_error.code = GaiaAuthConsumer::NETWORK_ERROR; |
matching_error.network_error = -101; |
@@ -84,7 +91,7 @@ TEST_F(GaiaAuthenticator2Test, LoginNetFailure) { |
int error_no = net::ERR_CONNECTION_RESET; |
URLRequestStatus status(URLRequestStatus::FAILED, error_no); |
- GaiaAuthConsumer::ClientLoginError expected_error; |
+ GaiaAuthConsumer::GaiaAuthError expected_error; |
expected_error.code = GaiaAuthConsumer::NETWORK_ERROR; |
expected_error.network_error = error_no; |
@@ -95,7 +102,35 @@ TEST_F(GaiaAuthenticator2Test, LoginNetFailure) { |
GaiaAuthenticator2 auth(&consumer, std::string(), |
profile_.GetRequestContext()); |
- auth.OnURLFetchComplete(NULL, source_, status, 0, cookies_, std::string()); |
+ auth.OnURLFetchComplete(NULL, |
+ client_login_source_, |
+ status, |
+ 0, |
+ cookies_, |
+ std::string()); |
+} |
+ |
+TEST_F(GaiaAuthenticator2Test, TokenNetFailure) { |
+ int error_no = net::ERR_CONNECTION_RESET; |
+ URLRequestStatus status(URLRequestStatus::FAILED, error_no); |
+ |
+ GaiaAuthConsumer::GaiaAuthError expected_error; |
+ expected_error.code = GaiaAuthConsumer::NETWORK_ERROR; |
+ expected_error.network_error = error_no; |
+ |
+ MockGaiaConsumer consumer; |
+ EXPECT_CALL(consumer, OnIssueAuthTokenFailure(_, expected_error)) |
+ .Times(1); |
+ |
+ GaiaAuthenticator2 auth(&consumer, std::string(), |
+ profile_.GetRequestContext()); |
+ |
+ auth.OnURLFetchComplete(NULL, |
+ issue_auth_token_source_, |
+ status, |
+ 0, |
+ cookies_, |
+ std::string()); |
} |
@@ -103,7 +138,7 @@ TEST_F(GaiaAuthenticator2Test, LoginDenied) { |
std::string data("Error: NO!"); |
URLRequestStatus status(URLRequestStatus::SUCCESS, 0); |
- GaiaAuthConsumer::ClientLoginError expected_error; |
+ GaiaAuthConsumer::GaiaAuthError expected_error; |
expected_error.code = GaiaAuthConsumer::PERMISSION_DENIED; |
MockGaiaConsumer consumer; |
@@ -112,7 +147,12 @@ TEST_F(GaiaAuthenticator2Test, LoginDenied) { |
GaiaAuthenticator2 auth(&consumer, std::string(), |
profile_.GetRequestContext()); |
- auth.OnURLFetchComplete(NULL, source_, status, RC_FORBIDDEN, cookies_, data); |
+ auth.OnURLFetchComplete(NULL, |
+ client_login_source_, |
+ status, |
+ RC_FORBIDDEN, |
+ cookies_, |
+ data); |
} |
TEST_F(GaiaAuthenticator2Test, ParseRequest) { |
@@ -142,13 +182,29 @@ TEST_F(GaiaAuthenticator2Test, OnlineLogin) { |
profile_.GetRequestContext()); |
URLRequestStatus status(URLRequestStatus::SUCCESS, 0); |
auth.OnURLFetchComplete(NULL, |
- source_, |
+ client_login_source_, |
status, |
RC_REQUEST_OK, |
cookies_, |
data); |
} |
+TEST_F(GaiaAuthenticator2Test, WorkingIssueAuthToken) { |
+ MockGaiaConsumer consumer; |
+ EXPECT_CALL(consumer, OnIssueAuthTokenSuccess(_, "token")) |
+ .Times(1); |
+ |
+ GaiaAuthenticator2 auth(&consumer, std::string(), |
+ profile_.GetRequestContext()); |
+ URLRequestStatus status(URLRequestStatus::SUCCESS, 0); |
+ auth.OnURLFetchComplete(NULL, |
+ issue_auth_token_source_, |
+ status, |
+ RC_REQUEST_OK, |
+ cookies_, |
+ "token"); |
+} |
+ |
TEST_F(GaiaAuthenticator2Test, CheckTwoFactorResponse) { |
std::string response = |
StringPrintf("Error=BadAuthentication\n%s\n", |
@@ -166,7 +222,7 @@ TEST_F(GaiaAuthenticator2Test, TwoFactorLogin) { |
StringPrintf("Error=BadAuthentication\n%s\n", |
GaiaAuthenticator2::kSecondFactor); |
- GaiaAuthConsumer::ClientLoginError error; |
+ GaiaAuthConsumer::GaiaAuthError error; |
error.code = GaiaAuthConsumer::TWO_FACTOR; |
MockGaiaConsumer consumer; |
@@ -177,7 +233,7 @@ TEST_F(GaiaAuthenticator2Test, TwoFactorLogin) { |
profile_.GetRequestContext()); |
URLRequestStatus status(URLRequestStatus::SUCCESS, 0); |
auth.OnURLFetchComplete(NULL, |
- source_, |
+ client_login_source_, |
status, |
RC_FORBIDDEN, |
cookies_, |
@@ -227,7 +283,7 @@ TEST_F(GaiaAuthenticator2Test, FullLoginFailure) { |
URLFetcher::set_factory(NULL); |
} |
-TEST_F(GaiaAuthenticator2Test, FetchPending) { |
+TEST_F(GaiaAuthenticator2Test, ClientFetchPending) { |
MockGaiaConsumer consumer; |
EXPECT_CALL(consumer, OnClientLoginSuccess(_)) |
.Times(1); |
@@ -247,12 +303,58 @@ TEST_F(GaiaAuthenticator2Test, FetchPending) { |
URLFetcher::set_factory(NULL); |
EXPECT_TRUE(auth.HasPendingFetch()); |
auth.OnURLFetchComplete(NULL, |
- source_, |
+ client_login_source_, |
URLRequestStatus(URLRequestStatus::SUCCESS, 0), |
RC_REQUEST_OK, |
cookies_, |
- std::string()); |
+ "SID=sid\nLSID=lsid\nAuth=auth\n"); |
+ EXPECT_FALSE(auth.HasPendingFetch()); |
+} |
+ |
+TEST_F(GaiaAuthenticator2Test, FullTokenSuccess) { |
+ MockGaiaConsumer consumer; |
+ EXPECT_CALL(consumer, OnIssueAuthTokenSuccess("service", "token")) |
+ .Times(1); |
+ |
+ TestingProfile profile; |
+ TestURLFetcherFactory factory; |
+ URLFetcher::set_factory(&factory); |
+ |
+ GaiaAuthenticator2 auth(&consumer, std::string(), |
+ profile_.GetRequestContext()); |
+ auth.StartIssueAuthToken("sid", "lsid", "service"); |
+ |
+ URLFetcher::set_factory(NULL); |
+ EXPECT_TRUE(auth.HasPendingFetch()); |
+ auth.OnURLFetchComplete(NULL, |
+ issue_auth_token_source_, |
+ URLRequestStatus(URLRequestStatus::SUCCESS, 0), |
+ RC_REQUEST_OK, |
+ cookies_, |
+ "token"); |
EXPECT_FALSE(auth.HasPendingFetch()); |
} |
+TEST_F(GaiaAuthenticator2Test, FullTokenFailure) { |
+ MockGaiaConsumer consumer; |
+ EXPECT_CALL(consumer, OnIssueAuthTokenFailure("service", _)) |
+ .Times(1); |
+ |
+ TestingProfile profile; |
+ TestURLFetcherFactory factory; |
+ URLFetcher::set_factory(&factory); |
+ GaiaAuthenticator2 auth(&consumer, std::string(), |
+ profile_.GetRequestContext()); |
+ auth.StartIssueAuthToken("sid", "lsid", "service"); |
+ |
+ URLFetcher::set_factory(NULL); |
+ EXPECT_TRUE(auth.HasPendingFetch()); |
+ auth.OnURLFetchComplete(NULL, |
+ issue_auth_token_source_, |
+ URLRequestStatus(URLRequestStatus::SUCCESS, 0), |
+ RC_FORBIDDEN, |
+ cookies_, |
+ ""); |
+ EXPECT_FALSE(auth.HasPendingFetch()); |
+} |