Index: trunk/src/google_apis/drive/base_requests_unittest.cc |
=================================================================== |
--- trunk/src/google_apis/drive/base_requests_unittest.cc (revision 288215) |
+++ trunk/src/google_apis/drive/base_requests_unittest.cc (working copy) |
@@ -51,6 +51,24 @@ |
GURL url_; |
}; |
+class FakeGetDataRequest : public GetDataRequest { |
+ public: |
+ explicit FakeGetDataRequest(RequestSender* sender, |
+ const GetDataCallback& callback, |
+ const GURL& url) |
+ : GetDataRequest(sender, callback), |
+ url_(url) { |
+ } |
+ |
+ virtual ~FakeGetDataRequest() { |
+ } |
+ |
+ protected: |
+ virtual GURL GetURL() const OVERRIDE { return url_; } |
+ |
+ GURL url_; |
+}; |
+ |
} // namespace |
class BaseRequestsTest : public testing::Test { |
@@ -91,7 +109,11 @@ |
}; |
TEST_F(BaseRequestsTest, ParseValidJson) { |
- scoped_ptr<base::Value> json(ParseJson(kValidJsonString)); |
+ scoped_ptr<base::Value> json; |
+ ParseJson(message_loop_.message_loop_proxy(), |
+ kValidJsonString, |
+ base::Bind(test_util::CreateCopyResultCallback(&json))); |
+ base::RunLoop().RunUntilIdle(); |
base::DictionaryValue* root_dict = NULL; |
ASSERT_TRUE(json); |
@@ -103,7 +125,14 @@ |
} |
TEST_F(BaseRequestsTest, ParseInvalidJson) { |
- EXPECT_FALSE(ParseJson(kInvalidJsonString)); |
+ // Initialize with a valid pointer to verify that null is indeed assigned. |
+ scoped_ptr<base::Value> json(base::Value::CreateNullValue()); |
+ ParseJson(message_loop_.message_loop_proxy(), |
+ kInvalidJsonString, |
+ base::Bind(test_util::CreateCopyResultCallback(&json))); |
+ base::RunLoop().RunUntilIdle(); |
+ |
+ EXPECT_FALSE(json); |
} |
TEST_F(BaseRequestsTest, UrlFetchRequestBaseResponseCodeOverride) { |
@@ -136,4 +165,40 @@ |
EXPECT_EQ(HTTP_SERVICE_UNAVAILABLE, error); |
} |
+TEST_F(BaseRequestsTest, GetDataRequestParseValidResponse) { |
+ response_body_ = kValidJsonString; |
+ |
+ GDataErrorCode error = GDATA_OTHER_ERROR; |
+ scoped_ptr<base::Value> value; |
+ base::RunLoop run_loop; |
+ sender_->StartRequestWithRetry( |
+ new FakeGetDataRequest( |
+ sender_.get(), |
+ test_util::CreateQuitCallback( |
+ &run_loop, test_util::CreateCopyResultCallback(&error, &value)), |
+ test_server_.base_url())); |
+ run_loop.Run(); |
+ |
+ EXPECT_EQ(HTTP_SUCCESS, error); |
+ EXPECT_TRUE(value); |
+} |
+ |
+TEST_F(BaseRequestsTest, GetDataRequestParseInvalidResponse) { |
+ response_body_ = kInvalidJsonString; |
+ |
+ GDataErrorCode error = GDATA_OTHER_ERROR; |
+ scoped_ptr<base::Value> value; |
+ base::RunLoop run_loop; |
+ sender_->StartRequestWithRetry( |
+ new FakeGetDataRequest( |
+ sender_.get(), |
+ test_util::CreateQuitCallback( |
+ &run_loop, test_util::CreateCopyResultCallback(&error, &value)), |
+ test_server_.base_url())); |
+ run_loop.Run(); |
+ |
+ EXPECT_EQ(GDATA_PARSE_ERROR, error); |
+ EXPECT_FALSE(value); |
+} |
+ |
} // namespace google_apis |