| OLD | NEW | 
|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include <string> | 5 #include <string> | 
| 6 #include <vector> | 6 #include <vector> | 
| 7 | 7 | 
| 8 #include "google_apis/gcm/engine/checkin_request.h" | 8 #include "google_apis/gcm/engine/checkin_request.h" | 
| 9 #include "google_apis/gcm/protocol/checkin.pb.h" | 9 #include "google_apis/gcm/protocol/checkin.pb.h" | 
| 10 #include "net/base/backoff_entry.h" | 10 #include "net/base/backoff_entry.h" | 
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 44   false, | 44   false, | 
| 45 }; | 45 }; | 
| 46 | 46 | 
| 47 } | 47 } | 
| 48 | 48 | 
| 49 const uint64 kAndroidId = 42UL; | 49 const uint64 kAndroidId = 42UL; | 
| 50 const uint64 kBlankAndroidId = 999999UL; | 50 const uint64 kBlankAndroidId = 999999UL; | 
| 51 const uint64 kBlankSecurityToken = 999999UL; | 51 const uint64 kBlankSecurityToken = 999999UL; | 
| 52 const char kChromeVersion[] = "Version String"; | 52 const char kChromeVersion[] = "Version String"; | 
| 53 const uint64 kSecurityToken = 77; | 53 const uint64 kSecurityToken = 77; | 
|  | 54 const char kSettingsDigest[] = "settings_digest"; | 
| 54 | 55 | 
| 55 class CheckinRequestTest : public testing::Test { | 56 class CheckinRequestTest : public testing::Test { | 
| 56  public: | 57  public: | 
| 57   enum ResponseScenario { | 58   enum ResponseScenario { | 
| 58     VALID_RESPONSE,  // Both android_id and security_token set in response. | 59     VALID_RESPONSE,  // Both android_id and security_token set in response. | 
| 59     MISSING_ANDROID_ID,  // android_id is missing. | 60     MISSING_ANDROID_ID,  // android_id is missing. | 
| 60     MISSING_SECURITY_TOKEN,  // security_token is missing. | 61     MISSING_SECURITY_TOKEN,  // security_token is missing. | 
| 61     ANDROID_ID_IS_ZER0,  // android_id is 0. | 62     ANDROID_ID_IS_ZER0,  // android_id is 0. | 
| 62     SECURITY_TOKEN_IS_ZERO  // security_token is 0. | 63     SECURITY_TOKEN_IS_ZERO  // security_token is 0. | 
| 63   }; | 64   }; | 
| 64 | 65 | 
| 65   CheckinRequestTest(); | 66   CheckinRequestTest(); | 
| 66   virtual ~CheckinRequestTest(); | 67   virtual ~CheckinRequestTest(); | 
| 67 | 68 | 
| 68   void FetcherCallback(uint64 android_id, uint64 security_token); | 69   void FetcherCallback( | 
|  | 70       const checkin_proto::AndroidCheckinResponse& response); | 
| 69 | 71 | 
| 70   void CreateRequest(uint64 android_id, uint64 security_token); | 72   void CreateRequest(uint64 android_id, uint64 security_token); | 
| 71 | 73 | 
| 72   void SetResponseStatusAndString( | 74   void SetResponseStatusAndString( | 
| 73       net::HttpStatusCode status_code, | 75       net::HttpStatusCode status_code, | 
| 74       const std::string& response_data); | 76       const std::string& response_data); | 
| 75 | 77 | 
| 76   void CompleteFetch(); | 78   void CompleteFetch(); | 
| 77 | 79 | 
| 78   void SetResponse(ResponseScenario response_scenario); | 80   void SetResponse(ResponseScenario response_scenario); | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
| 95       android_id_(kBlankAndroidId), | 97       android_id_(kBlankAndroidId), | 
| 96       security_token_(kBlankSecurityToken), | 98       security_token_(kBlankSecurityToken), | 
| 97       checkin_device_type_(0), | 99       checkin_device_type_(0), | 
| 98       url_request_context_getter_(new net::TestURLRequestContextGetter( | 100       url_request_context_getter_(new net::TestURLRequestContextGetter( | 
| 99           message_loop_.message_loop_proxy())) { | 101           message_loop_.message_loop_proxy())) { | 
| 100   account_ids_.push_back("account_id"); | 102   account_ids_.push_back("account_id"); | 
| 101 } | 103 } | 
| 102 | 104 | 
| 103 CheckinRequestTest::~CheckinRequestTest() {} | 105 CheckinRequestTest::~CheckinRequestTest() {} | 
| 104 | 106 | 
| 105 void CheckinRequestTest::FetcherCallback(uint64 android_id, | 107 void CheckinRequestTest::FetcherCallback( | 
| 106                                          uint64 security_token) { | 108     const checkin_proto::AndroidCheckinResponse& checkin_response) { | 
| 107   callback_called_ = true; | 109   callback_called_ = true; | 
| 108   android_id_ = android_id; | 110   if (checkin_response.has_android_id()) | 
| 109   security_token_ = security_token; | 111     android_id_ = checkin_response.android_id(); | 
|  | 112   if (checkin_response.has_security_token()) | 
|  | 113     security_token_ = checkin_response.security_token(); | 
| 110 } | 114 } | 
| 111 | 115 | 
| 112 void CheckinRequestTest::CreateRequest(uint64 android_id, | 116 void CheckinRequestTest::CreateRequest(uint64 android_id, | 
| 113                                        uint64 security_token) { | 117                                        uint64 security_token) { | 
| 114   // First setup a chrome_build protobuf. | 118   // First setup a chrome_build protobuf. | 
| 115   chrome_build_proto_.set_platform( | 119   chrome_build_proto_.set_platform( | 
| 116       checkin_proto::ChromeBuildProto::PLATFORM_LINUX); | 120       checkin_proto::ChromeBuildProto::PLATFORM_LINUX); | 
| 117   chrome_build_proto_.set_channel( | 121   chrome_build_proto_.set_channel( | 
| 118       checkin_proto::ChromeBuildProto::CHANNEL_CANARY); | 122       checkin_proto::ChromeBuildProto::CHANNEL_CANARY); | 
| 119   chrome_build_proto_.set_chrome_version(kChromeVersion); | 123   chrome_build_proto_.set_chrome_version(kChromeVersion); | 
|  | 124 | 
|  | 125   CheckinRequest::RequestInfo request_info( | 
|  | 126       android_id, | 
|  | 127       security_token, | 
|  | 128       kSettingsDigest, | 
|  | 129       account_ids_, | 
|  | 130       chrome_build_proto_); | 
| 120   // Then create a request with that protobuf and specified android_id, | 131   // Then create a request with that protobuf and specified android_id, | 
| 121   // security_token. | 132   // security_token. | 
| 122   request_.reset(new CheckinRequest( | 133   request_.reset(new CheckinRequest( | 
|  | 134       request_info, | 
|  | 135       kDefaultBackoffPolicy, | 
| 123       base::Bind(&CheckinRequestTest::FetcherCallback, base::Unretained(this)), | 136       base::Bind(&CheckinRequestTest::FetcherCallback, base::Unretained(this)), | 
| 124       kDefaultBackoffPolicy, |  | 
| 125       chrome_build_proto_, |  | 
| 126       android_id, |  | 
| 127       security_token, |  | 
| 128       account_ids_, |  | 
| 129       url_request_context_getter_.get())); | 137       url_request_context_getter_.get())); | 
| 130 | 138 | 
| 131   // Setting android_id_ and security_token_ to blank value, not used elsewhere | 139   // Setting android_id_ and security_token_ to blank value, not used elsewhere | 
| 132   // in the tests. | 140   // in the tests. | 
| 133   callback_called_ = false; | 141   callback_called_ = false; | 
| 134   android_id_ = kBlankAndroidId; | 142   android_id_ = kBlankAndroidId; | 
| 135   security_token_ = kBlankSecurityToken; | 143   security_token_ = kBlankSecurityToken; | 
| 136 } | 144 } | 
| 137 | 145 | 
| 138 void CheckinRequestTest::SetResponseStatusAndString( | 146 void CheckinRequestTest::SetResponseStatusAndString( | 
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 191   EXPECT_EQ(chrome_build_proto_.channel(), | 199   EXPECT_EQ(chrome_build_proto_.channel(), | 
| 192             request_proto.checkin().chrome_build().channel()); | 200             request_proto.checkin().chrome_build().channel()); | 
| 193 | 201 | 
| 194 #if defined(CHROME_OS) | 202 #if defined(CHROME_OS) | 
| 195   EXPECT_EQ(checkin_proto::DEVICE_CHROME_OS, request_proto.checkin().type()); | 203   EXPECT_EQ(checkin_proto::DEVICE_CHROME_OS, request_proto.checkin().type()); | 
| 196 #else | 204 #else | 
| 197   EXPECT_EQ(checkin_proto::DEVICE_CHROME_BROWSER, | 205   EXPECT_EQ(checkin_proto::DEVICE_CHROME_BROWSER, | 
| 198             request_proto.checkin().type()); | 206             request_proto.checkin().type()); | 
| 199 #endif | 207 #endif | 
| 200 | 208 | 
|  | 209   EXPECT_EQ(kSettingsDigest, request_proto.digest()); | 
| 201   EXPECT_EQ(1, request_proto.account_cookie_size()); | 210   EXPECT_EQ(1, request_proto.account_cookie_size()); | 
| 202   EXPECT_EQ("[account_id]", request_proto.account_cookie(0)); | 211   EXPECT_EQ("[account_id]", request_proto.account_cookie(0)); | 
| 203 } | 212 } | 
| 204 | 213 | 
| 205 TEST_F(CheckinRequestTest, ResponseBodyEmpty) { | 214 TEST_F(CheckinRequestTest, ResponseBodyEmpty) { | 
| 206   CreateRequest(0u, 0u); | 215   CreateRequest(0u, 0u); | 
| 207   request_->Start(); | 216   request_->Start(); | 
| 208 | 217 | 
| 209   SetResponseStatusAndString(net::HTTP_OK, std::string()); | 218   SetResponseStatusAndString(net::HTTP_OK, std::string()); | 
| 210   CompleteFetch(); | 219   CompleteFetch(); | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
| 237 } | 246 } | 
| 238 | 247 | 
| 239 TEST_F(CheckinRequestTest, ResponseHttpStatusUnauthorized) { | 248 TEST_F(CheckinRequestTest, ResponseHttpStatusUnauthorized) { | 
| 240   CreateRequest(0u, 0u); | 249   CreateRequest(0u, 0u); | 
| 241   request_->Start(); | 250   request_->Start(); | 
| 242 | 251 | 
| 243   SetResponseStatusAndString(net::HTTP_UNAUTHORIZED, std::string()); | 252   SetResponseStatusAndString(net::HTTP_UNAUTHORIZED, std::string()); | 
| 244   CompleteFetch(); | 253   CompleteFetch(); | 
| 245 | 254 | 
| 246   EXPECT_TRUE(callback_called_); | 255   EXPECT_TRUE(callback_called_); | 
| 247   EXPECT_EQ(0u, android_id_); | 256   EXPECT_EQ(kBlankAndroidId, android_id_); | 
| 248   EXPECT_EQ(0u, security_token_); | 257   EXPECT_EQ(kBlankSecurityToken, security_token_); | 
| 249 } | 258 } | 
| 250 | 259 | 
| 251 TEST_F(CheckinRequestTest, ResponseHttpStatusBadRequest) { | 260 TEST_F(CheckinRequestTest, ResponseHttpStatusBadRequest) { | 
| 252   CreateRequest(0u, 0u); | 261   CreateRequest(0u, 0u); | 
| 253   request_->Start(); | 262   request_->Start(); | 
| 254 | 263 | 
| 255   SetResponseStatusAndString(net::HTTP_BAD_REQUEST, std::string()); | 264   SetResponseStatusAndString(net::HTTP_BAD_REQUEST, std::string()); | 
| 256   CompleteFetch(); | 265   CompleteFetch(); | 
| 257 | 266 | 
| 258   EXPECT_TRUE(callback_called_); | 267   EXPECT_TRUE(callback_called_); | 
| 259   EXPECT_EQ(0u, android_id_); | 268   EXPECT_EQ(kBlankAndroidId, android_id_); | 
| 260   EXPECT_EQ(0u, security_token_); | 269   EXPECT_EQ(kBlankSecurityToken, security_token_); | 
| 261 } | 270 } | 
| 262 | 271 | 
| 263 TEST_F(CheckinRequestTest, ResponseHttpStatusNotOK) { | 272 TEST_F(CheckinRequestTest, ResponseHttpStatusNotOK) { | 
| 264   CreateRequest(0u, 0u); | 273   CreateRequest(0u, 0u); | 
| 265   request_->Start(); | 274   request_->Start(); | 
| 266 | 275 | 
| 267   SetResponseStatusAndString(net::HTTP_INTERNAL_SERVER_ERROR, std::string()); | 276   SetResponseStatusAndString(net::HTTP_INTERNAL_SERVER_ERROR, std::string()); | 
| 268   CompleteFetch(); | 277   CompleteFetch(); | 
| 269 | 278 | 
| 270   EXPECT_FALSE(callback_called_); | 279   EXPECT_FALSE(callback_called_); | 
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 363 | 372 | 
| 364   SetResponse(VALID_RESPONSE); | 373   SetResponse(VALID_RESPONSE); | 
| 365   CompleteFetch(); | 374   CompleteFetch(); | 
| 366 | 375 | 
| 367   EXPECT_TRUE(callback_called_); | 376   EXPECT_TRUE(callback_called_); | 
| 368   EXPECT_EQ(kAndroidId, android_id_); | 377   EXPECT_EQ(kAndroidId, android_id_); | 
| 369   EXPECT_EQ(kSecurityToken, security_token_); | 378   EXPECT_EQ(kSecurityToken, security_token_); | 
| 370 } | 379 } | 
| 371 | 380 | 
| 372 }  // namespace gcm | 381 }  // namespace gcm | 
| OLD | NEW | 
|---|