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

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

Issue 1137463003: Support getting and deleting token for Instance ID. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Sync Created 5 years, 7 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 b808f39e68d33a6f5d980dd7c29fa2e9f67e1552..64f85a9e443150553798f7910a6e6a257baa7859 100644
--- a/google_apis/gcm/engine/registration_request_unittest.cc
+++ b/google_apis/gcm/engine/registration_request_unittest.cc
@@ -24,6 +24,9 @@ const char kDeveloperId[] = "Project1";
const char kLoginHeader[] = "AidLogin";
const char kRegistrationURL[] = "http://foo.bar/register";
const uint64 kSecurityToken = 77UL;
+const char kChromeVersion[] = "40.0.0.1";
+const char kInstanceId[] = "IID1";
+const char kScope[] = "GCM";
// Backoff policy for testing registration request.
const net::BackoffEntry::Policy kDefaultBackoffPolicy = {
@@ -64,7 +67,8 @@ class RegistrationRequestTest : public testing::Test {
void RegistrationCallback(RegistrationRequest::Status status,
const std::string& registration_id);
- void CreateRequest(const std::string& sender_ids);
+ void CreateRequestFromRequestInfo(
+ scoped_ptr<RegistrationRequest::RequestInfo> request_info);
void SetResponseStatusAndString(net::HttpStatusCode status_code,
const std::string& response_body);
void CompleteFetch();
@@ -102,18 +106,11 @@ void RegistrationRequestTest::RegistrationCallback(
callback_called_ = true;
}
-void RegistrationRequestTest::CreateRequest(const std::string& sender_ids) {
- std::vector<std::string> senders;
- base::StringTokenizer tokenizer(sender_ids, ",");
- while (tokenizer.GetNext())
- senders.push_back(tokenizer.token());
-
+void RegistrationRequestTest::CreateRequestFromRequestInfo(
+ scoped_ptr<RegistrationRequest::RequestInfo> request_info) {
request_.reset(new RegistrationRequest(
GURL(kRegistrationURL),
- RegistrationRequest::RequestInfo(kAndroidId,
- kSecurityToken,
- kAppId,
- senders),
+ request_info.Pass(),
kDefaultBackoffPolicy,
base::Bind(&RegistrationRequestTest::RegistrationCallback,
base::Unretained(this)),
@@ -141,7 +138,36 @@ void RegistrationRequestTest::CompleteFetch() {
fetcher->delegate()->OnURLFetchComplete(fetcher);
}
-TEST_F(RegistrationRequestTest, RequestSuccessful) {
+class GCMRegistrationRequestTest : public RegistrationRequestTest {
+ public:
+ GCMRegistrationRequestTest();
+ ~GCMRegistrationRequestTest() override;
+
+ void CreateRequest(const std::string& sender_ids);
+};
+
+GCMRegistrationRequestTest::GCMRegistrationRequestTest() {
+}
+
+GCMRegistrationRequestTest::~GCMRegistrationRequestTest() {
+}
+
+void GCMRegistrationRequestTest::CreateRequest(const std::string& sender_ids) {
+ std::vector<std::string> senders;
+ base::StringTokenizer tokenizer(sender_ids, ",");
+ while (tokenizer.GetNext())
+ senders.push_back(tokenizer.token());
+
+ scoped_ptr<RegistrationRequest::GCMRequestInfo> request_info(
+ new RegistrationRequest::GCMRequestInfo);
+ request_info->set_android_id(kAndroidId);
+ request_info->set_security_token(kSecurityToken);
+ request_info->set_app_id(kAppId);
+ request_info->set_sender_ids(senders);
+ return CreateRequestFromRequestInfo(request_info.Pass());
+}
+
+TEST_F(GCMRegistrationRequestTest, RequestSuccessful) {
set_max_retry_count(0);
CreateRequest("sender1,sender2");
request_->Start();
@@ -154,7 +180,7 @@ TEST_F(RegistrationRequestTest, RequestSuccessful) {
EXPECT_EQ("2501", registration_id_);
}
-TEST_F(RegistrationRequestTest, RequestDataAndURL) {
+TEST_F(GCMRegistrationRequestTest, RequestDataAndURL) {
CreateRequest(kDeveloperId);
request_->Start();
@@ -198,7 +224,7 @@ TEST_F(RegistrationRequestTest, RequestDataAndURL) {
EXPECT_EQ(0UL, expected_pairs.size());
}
-TEST_F(RegistrationRequestTest, RequestRegistrationWithMultipleSenderIds) {
+TEST_F(GCMRegistrationRequestTest, RequestRegistrationWithMultipleSenderIds) {
CreateRequest("sender1,sender2@gmail.com");
request_->Start();
@@ -223,7 +249,7 @@ TEST_F(RegistrationRequestTest, RequestRegistrationWithMultipleSenderIds) {
EXPECT_EQ("sender2@gmail.com", sender_tokenizer.token());
}
-TEST_F(RegistrationRequestTest, ResponseParsing) {
+TEST_F(GCMRegistrationRequestTest, ResponseParsing) {
CreateRequest("sender1,sender2");
request_->Start();
@@ -235,7 +261,7 @@ TEST_F(RegistrationRequestTest, ResponseParsing) {
EXPECT_EQ("2501", registration_id_);
}
-TEST_F(RegistrationRequestTest, ResponseHttpStatusNotOK) {
+TEST_F(GCMRegistrationRequestTest, ResponseHttpStatusNotOK) {
CreateRequest("sender1,sender2");
request_->Start();
@@ -252,7 +278,7 @@ TEST_F(RegistrationRequestTest, ResponseHttpStatusNotOK) {
EXPECT_EQ("2501", registration_id_);
}
-TEST_F(RegistrationRequestTest, ResponseMissingRegistrationId) {
+TEST_F(GCMRegistrationRequestTest, ResponseMissingRegistrationId) {
CreateRequest("sender1,sender2");
request_->Start();
@@ -275,7 +301,7 @@ TEST_F(RegistrationRequestTest, ResponseMissingRegistrationId) {
EXPECT_EQ("2501", registration_id_);
}
-TEST_F(RegistrationRequestTest, ResponseDeviceRegistrationError) {
+TEST_F(GCMRegistrationRequestTest, ResponseDeviceRegistrationError) {
CreateRequest("sender1,sender2");
request_->Start();
@@ -293,7 +319,7 @@ TEST_F(RegistrationRequestTest, ResponseDeviceRegistrationError) {
EXPECT_EQ("2501", registration_id_);
}
-TEST_F(RegistrationRequestTest, ResponseAuthenticationError) {
+TEST_F(GCMRegistrationRequestTest, ResponseAuthenticationError) {
CreateRequest("sender1,sender2");
request_->Start();
@@ -312,7 +338,7 @@ TEST_F(RegistrationRequestTest, ResponseAuthenticationError) {
EXPECT_EQ("2501", registration_id_);
}
-TEST_F(RegistrationRequestTest, ResponseInvalidParameters) {
+TEST_F(GCMRegistrationRequestTest, ResponseInvalidParameters) {
CreateRequest("sender1,sender2");
request_->Start();
@@ -324,7 +350,7 @@ TEST_F(RegistrationRequestTest, ResponseInvalidParameters) {
EXPECT_EQ(std::string(), registration_id_);
}
-TEST_F(RegistrationRequestTest, ResponseInvalidSender) {
+TEST_F(GCMRegistrationRequestTest, ResponseInvalidSender) {
CreateRequest("sender1,sender2");
request_->Start();
@@ -336,7 +362,7 @@ TEST_F(RegistrationRequestTest, ResponseInvalidSender) {
EXPECT_EQ(std::string(), registration_id_);
}
-TEST_F(RegistrationRequestTest, ResponseInvalidSenderBadRequest) {
+TEST_F(GCMRegistrationRequestTest, ResponseInvalidSenderBadRequest) {
CreateRequest("sender1");
request_->Start();
@@ -348,7 +374,7 @@ TEST_F(RegistrationRequestTest, ResponseInvalidSenderBadRequest) {
EXPECT_EQ(std::string(), registration_id_);
}
-TEST_F(RegistrationRequestTest, RequestNotSuccessful) {
+TEST_F(GCMRegistrationRequestTest, RequestNotSuccessful) {
CreateRequest("sender1,sender2");
request_->Start();
@@ -371,7 +397,7 @@ TEST_F(RegistrationRequestTest, RequestNotSuccessful) {
EXPECT_EQ("2501", registration_id_);
}
-TEST_F(RegistrationRequestTest, ResponseHttpNotOk) {
+TEST_F(GCMRegistrationRequestTest, ResponseHttpNotOk) {
CreateRequest("sender1,sender2");
request_->Start();
@@ -389,7 +415,7 @@ TEST_F(RegistrationRequestTest, ResponseHttpNotOk) {
EXPECT_EQ("2501", registration_id_);
}
-TEST_F(RegistrationRequestTest, MaximumAttemptsReachedWithZeroRetries) {
+TEST_F(GCMRegistrationRequestTest, MaximumAttemptsReachedWithZeroRetries) {
set_max_retry_count(0);
CreateRequest("sender1,sender2");
request_->Start();
@@ -402,7 +428,7 @@ TEST_F(RegistrationRequestTest, MaximumAttemptsReachedWithZeroRetries) {
EXPECT_EQ(std::string(), registration_id_);
}
-TEST_F(RegistrationRequestTest, MaximumAttemptsReached) {
+TEST_F(GCMRegistrationRequestTest, MaximumAttemptsReached) {
CreateRequest("sender1,sender2");
request_->Start();
@@ -424,4 +450,112 @@ TEST_F(RegistrationRequestTest, MaximumAttemptsReached) {
EXPECT_EQ(std::string(), registration_id_);
}
+class InstanceIDGetTokenRequestTest : public RegistrationRequestTest {
+ public:
+ InstanceIDGetTokenRequestTest();
+ ~InstanceIDGetTokenRequestTest() override;
+
+ void CreateRequest(const std::string& instance_id,
+ const std::string& authorized_entity,
+ const std::string& scope);
+};
+
+InstanceIDGetTokenRequestTest::InstanceIDGetTokenRequestTest() {
+}
+
+InstanceIDGetTokenRequestTest::~InstanceIDGetTokenRequestTest() {
+}
+
+void InstanceIDGetTokenRequestTest::CreateRequest(
+ const std::string& instance_id,
+ const std::string& authorized_entity,
+ const std::string& scope) {
+ scoped_ptr<RegistrationRequest::InstanceIDRequestInfo> request_info(
+ new RegistrationRequest::InstanceIDRequestInfo);
+ request_info->set_chrome_version(kChromeVersion);
+ request_info->set_android_id(kAndroidId);
+ request_info->set_security_token(kSecurityToken);
+ request_info->set_app_id(kAppId);
+ request_info->set_instance_id(instance_id);
+ request_info->set_authorized_entity(authorized_entity);
+ request_info->set_scope(scope);
+ return CreateRequestFromRequestInfo(request_info.Pass());
+}
+
+TEST_F(InstanceIDGetTokenRequestTest, RequestSuccessful) {
+ set_max_retry_count(0);
+ CreateRequest(kInstanceId, kDeveloperId, kScope);
+ request_->Start();
+
+ SetResponseStatusAndString(net::HTTP_OK, "token=2501");
+ CompleteFetch();
+
+ EXPECT_TRUE(callback_called_);
+ EXPECT_EQ(RegistrationRequest::SUCCESS, status_);
+ EXPECT_EQ("2501", registration_id_);
+}
+TEST_F(InstanceIDGetTokenRequestTest, RequestDataAndURL) {
+ CreateRequest(kInstanceId, kDeveloperId, kScope);
+ request_->Start();
+
+ // Get data sent by request.
+ net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(0);
+ ASSERT_TRUE(fetcher);
+
+ EXPECT_EQ(GURL(kRegistrationURL), fetcher->GetOriginalURL());
+
+ // Verify that authorization header was put together properly.
+ net::HttpRequestHeaders headers;
+ fetcher->GetExtraRequestHeaders(&headers);
+ std::string auth_header;
+ headers.GetHeader(net::HttpRequestHeaders::kAuthorization, &auth_header);
+ base::StringTokenizer auth_tokenizer(auth_header, " :");
+ ASSERT_TRUE(auth_tokenizer.GetNext());
+ EXPECT_EQ(kLoginHeader, auth_tokenizer.token());
+ ASSERT_TRUE(auth_tokenizer.GetNext());
+ EXPECT_EQ(base::Uint64ToString(kAndroidId), auth_tokenizer.token());
+ ASSERT_TRUE(auth_tokenizer.GetNext());
+ EXPECT_EQ(base::Uint64ToString(kSecurityToken), auth_tokenizer.token());
+
+ std::map<std::string, std::string> expected_pairs;
+ expected_pairs["gmsv"] = kChromeVersion;
+ expected_pairs["app"] = kAppId;
+ expected_pairs["sender"] = kDeveloperId;
+ expected_pairs["device"] = base::Uint64ToString(kAndroidId);
+ expected_pairs["appid"] = kInstanceId;
+ expected_pairs["scope"] = kScope;
+
+ // 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());
+}
+
+TEST_F(InstanceIDGetTokenRequestTest, ResponseHttpStatusNotOK) {
+ CreateRequest(kInstanceId, kDeveloperId, kScope);
+ request_->Start();
+
+ SetResponseStatusAndString(net::HTTP_UNAUTHORIZED, "token=2501");
+ CompleteFetch();
+
+ EXPECT_FALSE(callback_called_);
+
+ SetResponseStatusAndString(net::HTTP_OK, "token=2501");
+ CompleteFetch();
+
+ EXPECT_TRUE(callback_called_);
+ EXPECT_EQ(RegistrationRequest::SUCCESS, status_);
+ EXPECT_EQ("2501", registration_id_);
+}
+
} // namespace gcm

Powered by Google App Engine
This is Rietveld 408576698