Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1021)

Unified Diff: google_apis/gcm/engine/registration_request_unittest.cc

Issue 2111973002: Add support for GCM subtypes to desktop Instance ID implementation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@iid9push
Patch Set: Fix thestig nits and Chrome OS compile Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: google_apis/gcm/engine/registration_request_unittest.cc
diff --git a/google_apis/gcm/engine/registration_request_unittest.cc b/google_apis/gcm/engine/registration_request_unittest.cc
index 25b7ed8e1cea92bf54c8d0e203d93ef278e26886..a0bcc175383fb2072849fc47a9249adb932109ff 100644
--- a/google_apis/gcm/engine/registration_request_unittest.cc
+++ b/google_apis/gcm/engine/registration_request_unittest.cc
@@ -24,6 +24,7 @@ namespace gcm {
namespace {
const uint64_t kAndroidId = 42UL;
const char kAppId[] = "TestAppId";
+const char kProductCategoryForSubtypes[] = "com.chrome.stable.macosx";
const char kDeveloperId[] = "Project1";
const char kLoginHeader[] = "AidLogin";
const char kRegistrationURL[] = "http://foo.bar/register";
@@ -96,8 +97,9 @@ GCMRegistrationRequestTest::~GCMRegistrationRequestTest() {
}
void GCMRegistrationRequestTest::CreateRequest(const std::string& sender_ids) {
- RegistrationRequest::RequestInfo request_info(
- kAndroidId, kSecurityToken, kAppId);
+ RegistrationRequest::RequestInfo request_info(kAndroidId, kSecurityToken,
+ kAppId, false /* use_subtype */,
+ kProductCategoryForSubtypes);
std::unique_ptr<GCMRegistrationRequestHandler> request_handler(
new GCMRegistrationRequestHandler(sender_ids));
request_.reset(new RegistrationRequest(
@@ -149,20 +151,7 @@ TEST_F(GCMRegistrationRequestTest, RequestDataAndURL) {
expected_pairs["sender"] = kDeveloperId;
expected_pairs["device"] = base::Uint64ToString(kAndroidId);
- // Verify data was formatted properly.
- std::string upload_data = fetcher->upload_data();
- base::StringTokenizer data_tokenizer(upload_data, "&=");
- while (data_tokenizer.GetNext()) {
- std::map<std::string, std::string>::iterator iter =
- expected_pairs.find(data_tokenizer.token());
- ASSERT_TRUE(iter != expected_pairs.end());
- ASSERT_TRUE(data_tokenizer.GetNext());
- EXPECT_EQ(iter->second, data_tokenizer.token());
- // Ensure that none of the keys appears twice.
- expected_pairs.erase(iter);
- }
-
- EXPECT_EQ(0UL, expected_pairs.size());
+ ASSERT_NO_FATAL_FAILURE(VerifyFetcherUploadData(&expected_pairs));
}
TEST_F(GCMRegistrationRequestTest, RequestRegistrationWithMultipleSenderIds) {
@@ -398,7 +387,8 @@ class InstanceIDGetTokenRequestTest : public RegistrationRequestTest {
InstanceIDGetTokenRequestTest();
~InstanceIDGetTokenRequestTest() override;
- void CreateRequest(const std::string& instance_id,
+ void CreateRequest(bool use_subtype,
+ const std::string& instance_id,
const std::string& authorized_entity,
const std::string& scope,
const std::map<std::string, std::string>& options);
@@ -411,12 +401,14 @@ InstanceIDGetTokenRequestTest::~InstanceIDGetTokenRequestTest() {
}
void InstanceIDGetTokenRequestTest::CreateRequest(
+ bool use_subtype,
const std::string& instance_id,
const std::string& authorized_entity,
const std::string& scope,
const std::map<std::string, std::string>& options) {
- RegistrationRequest::RequestInfo request_info(
- kAndroidId, kSecurityToken, kAppId);
+ RegistrationRequest::RequestInfo request_info(kAndroidId, kSecurityToken,
+ kAppId, use_subtype,
+ kProductCategoryForSubtypes);
std::unique_ptr<InstanceIDGetTokenRequestHandler> request_handler(
new InstanceIDGetTokenRequestHandler(instance_id, authorized_entity,
scope, kGCMVersion, options));
@@ -434,7 +426,8 @@ TEST_F(InstanceIDGetTokenRequestTest, RequestSuccessful) {
options["Foo"] = "Bar";
set_max_retry_count(0);
- CreateRequest(kInstanceId, kDeveloperId, kScope, options);
+ CreateRequest(false /* use_subtype */, kInstanceId, kDeveloperId, kScope,
+ options);
request_->Start();
SetResponse(net::HTTP_OK, "token=2501");
@@ -448,7 +441,8 @@ TEST_F(InstanceIDGetTokenRequestTest, RequestSuccessful) {
TEST_F(InstanceIDGetTokenRequestTest, RequestDataAndURL) {
std::map<std::string, std::string> options;
options["Foo"] = "Bar";
- CreateRequest(kInstanceId, kDeveloperId, kScope, options);
+ CreateRequest(false /* use_subtype */, kInstanceId, kDeveloperId, kScope,
+ options);
request_->Start();
// Get data sent by request.
@@ -479,7 +473,32 @@ TEST_F(InstanceIDGetTokenRequestTest, RequestDataAndURL) {
expected_pairs["gmsv"] = base::IntToString(kGCMVersion);
expected_pairs["app"] = kAppId;
expected_pairs["sender"] = kDeveloperId;
- expected_pairs["X-subtype"] = kDeveloperId;
+ expected_pairs["device"] = base::Uint64ToString(kAndroidId);
+ expected_pairs["appid"] = kInstanceId;
+ expected_pairs["scope"] = kScope;
+ expected_pairs["X-scope"] = kScope;
+ expected_pairs["X-Foo"] = "Bar";
+
+ ASSERT_NO_FATAL_FAILURE(VerifyFetcherUploadData(&expected_pairs));
+}
+
+TEST_F(InstanceIDGetTokenRequestTest, RequestDataWithSubtype) {
+ std::map<std::string, std::string> options;
+ options["Foo"] = "Bar";
+ CreateRequest(true /* use_subtype */, kInstanceId, kDeveloperId, kScope,
+ options);
+ request_->Start();
+
+ // Get data sent by request.
+ net::TestURLFetcher* fetcher = GetFetcher();
+ ASSERT_TRUE(fetcher);
+
+ // Same as RequestDataAndURL except "app" and "X-subtype".
+ std::map<std::string, std::string> expected_pairs;
+ expected_pairs["gmsv"] = base::IntToString(kGCMVersion);
+ expected_pairs["app"] = kProductCategoryForSubtypes;
+ expected_pairs["X-subtype"] = kAppId;
+ expected_pairs["sender"] = kDeveloperId;
expected_pairs["device"] = base::Uint64ToString(kAndroidId);
expected_pairs["appid"] = kInstanceId;
expected_pairs["scope"] = kScope;
@@ -490,8 +509,7 @@ TEST_F(InstanceIDGetTokenRequestTest, RequestDataAndURL) {
std::string upload_data = fetcher->upload_data();
base::StringTokenizer data_tokenizer(upload_data, "&=");
while (data_tokenizer.GetNext()) {
- std::map<std::string, std::string>::iterator iter =
- expected_pairs.find(data_tokenizer.token());
+ auto iter = expected_pairs.find(data_tokenizer.token());
ASSERT_TRUE(iter != expected_pairs.end());
ASSERT_TRUE(data_tokenizer.GetNext());
EXPECT_EQ(iter->second, data_tokenizer.token());
@@ -504,7 +522,8 @@ TEST_F(InstanceIDGetTokenRequestTest, RequestDataAndURL) {
TEST_F(InstanceIDGetTokenRequestTest, ResponseHttpStatusNotOK) {
std::map<std::string, std::string> options;
- CreateRequest(kInstanceId, kDeveloperId, kScope, options);
+ CreateRequest(false /* use_subtype */, kInstanceId, kDeveloperId, kScope,
+ options);
request_->Start();
SetResponse(net::HTTP_UNAUTHORIZED, "token=2501");

Powered by Google App Engine
This is Rietveld 408576698