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

Side by Side Diff: components/copresence/rpc/rpc_handler_unittest.cc

Issue 813553002: Adding support for pre-sent messages (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@state
Patch Set: Fixing tests Created 5 years, 11 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 unified diff | Download patch
OLDNEW
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 "components/copresence/rpc/rpc_handler.h" 5 #include "components/copresence/rpc/rpc_handler.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 18 matching lines...) Expand all
29 using testing::ElementsAre; 29 using testing::ElementsAre;
30 using testing::Property; 30 using testing::Property;
31 using testing::SizeIs; 31 using testing::SizeIs;
32 32
33 namespace copresence { 33 namespace copresence {
34 34
35 namespace { 35 namespace {
36 36
37 const char kChromeVersion[] = "Chrome Version String"; 37 const char kChromeVersion[] = "Chrome Version String";
38 38
39 void CreateSubscribedMessage(const std::vector<std::string>& subscription_ids, 39 void IgnoreMessages(
40 const std::string& message_string, 40 const RepeatedPtrField<SubscribedMessage>& /* messages */) {}
41 SubscribedMessage* message_proto) {
42 message_proto->mutable_published_message()->set_payload(message_string);
43 for (const std::string& subscription_id : subscription_ids) {
44 message_proto->add_subscription_id(subscription_id);
45 }
46 }
47 41
48 } // namespace 42 } // namespace
49 43
50 class RpcHandlerTest : public testing::Test, public CopresenceDelegate { 44 class RpcHandlerTest : public testing::Test, public CopresenceDelegate {
51 public: 45 public:
52 RpcHandlerTest() 46 RpcHandlerTest()
53 : whispernet_client_(new StubWhispernetClient), 47 : whispernet_client_(new StubWhispernetClient),
54 // TODO(ckehoe): Use a FakeCopresenceState here 48 // TODO(ckehoe): Use a FakeCopresenceState here
55 // and test that it gets called correctly. 49 // and test that it gets called correctly.
56 state_(new CopresenceStateImpl), 50 state_(new CopresenceStateImpl),
57 rpc_handler_(this, 51 rpc_handler_(this,
58 state_.get(), 52 state_.get(),
59 &directive_handler_, 53 &directive_handler_,
60 nullptr, 54 nullptr,
55 base::Bind(&IgnoreMessages),
61 base::Bind(&RpcHandlerTest::CaptureHttpPost, 56 base::Bind(&RpcHandlerTest::CaptureHttpPost,
62 base::Unretained(this))), 57 base::Unretained(this))),
63 status_(SUCCESS) {} 58 status_(SUCCESS) {}
64 59
65 // CopresenceDelegate implementation 60 // CopresenceDelegate implementation
66 61
67 void HandleMessages(const std::string& /* app_id */, 62 void HandleMessages(const std::string& /* app_id */,
68 const std::string& subscription_id, 63 const std::string& subscription_id,
69 const std::vector<Message>& messages) override { 64 const std::vector<Message>& messages) override {
70 // app_id is unused for now, pending a server fix. 65 NOTREACHED();
71 for (const Message& message : messages) {
72 messages_by_subscription_[subscription_id].push_back(message.payload());
73 }
74 } 66 }
75 67
76 void HandleStatusUpdate(CopresenceStatus /* status */) override {} 68 void HandleStatusUpdate(CopresenceStatus /* status */) override {
69 NOTREACHED();
70 }
77 71
78 net::URLRequestContextGetter* GetRequestContext() const override { 72 net::URLRequestContextGetter* GetRequestContext() const override {
79 return nullptr; 73 return nullptr;
80 } 74 }
81 75
82 const std::string GetPlatformVersionString() const override { 76 const std::string GetPlatformVersionString() const override {
83 return kChromeVersion; 77 return kChromeVersion;
84 } 78 }
85 79
86 const std::string GetAPIKey(const std::string& app_id) const override { 80 const std::string GetAPIKey(const std::string& app_id) const override {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 scoped_ptr<WhispernetClient> whispernet_client_; 154 scoped_ptr<WhispernetClient> whispernet_client_;
161 FakeDirectiveHandler directive_handler_; 155 FakeDirectiveHandler directive_handler_;
162 scoped_ptr<CopresenceStateImpl> state_; 156 scoped_ptr<CopresenceStateImpl> state_;
163 RpcHandler rpc_handler_; 157 RpcHandler rpc_handler_;
164 158
165 CopresenceStatus status_; 159 CopresenceStatus status_;
166 std::string rpc_name_; 160 std::string rpc_name_;
167 std::string api_key_; 161 std::string api_key_;
168 std::string auth_token_; 162 std::string auth_token_;
169 ScopedVector<MessageLite> request_protos_; 163 ScopedVector<MessageLite> request_protos_;
170 std::map<std::string, std::vector<std::string>> messages_by_subscription_;
171 164
172 private: 165 private:
173 void CaptureHttpPost( 166 void CaptureHttpPost(
174 net::URLRequestContextGetter* url_context_getter, 167 net::URLRequestContextGetter* url_context_getter,
175 const std::string& rpc_name, 168 const std::string& rpc_name,
176 const std::string& api_key, 169 const std::string& api_key,
177 const std::string& auth_token, 170 const std::string& auth_token,
178 scoped_ptr<MessageLite> request_proto, 171 scoped_ptr<MessageLite> request_proto,
179 const RpcHandler::PostCleanupCallback& response_callback) { 172 const RpcHandler::PostCleanupCallback& response_callback) {
180 rpc_name_ = rpc_name; 173 rpc_name_ = rpc_name;
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 Property(&TokenObservation::token_id, "current inaudible"))); 306 Property(&TokenObservation::token_id, "current inaudible")));
314 } 307 }
315 308
316 TEST_F(RpcHandlerTest, ReportResponseHandler) { 309 TEST_F(RpcHandlerTest, ReportResponseHandler) {
317 // Fail on HTTP status != 200. 310 // Fail on HTTP status != 200.
318 scoped_ptr<ReportResponse> response(new ReportResponse); 311 scoped_ptr<ReportResponse> response(new ReportResponse);
319 status_ = SUCCESS; 312 status_ = SUCCESS;
320 SendReportResponse(net::HTTP_BAD_REQUEST, response.Pass()); 313 SendReportResponse(net::HTTP_BAD_REQUEST, response.Pass());
321 EXPECT_EQ(FAIL, status_); 314 EXPECT_EQ(FAIL, status_);
322 315
323 // Construct test subscriptions.
324 std::vector<std::string> subscription_1(1, "Subscription 1");
325 std::vector<std::string> subscription_2(1, "Subscription 2");
326 std::vector<std::string> both_subscriptions;
327 both_subscriptions.push_back("Subscription 1");
328 both_subscriptions.push_back("Subscription 2");
329
330 // Construct a test ReportResponse. 316 // Construct a test ReportResponse.
331 response.reset(new ReportResponse); 317 response.reset(new ReportResponse);
332 response->mutable_header()->mutable_status()->set_code(OK); 318 response->mutable_header()->mutable_status()->set_code(OK);
333 UpdateSignalsResponse* update_response = 319 UpdateSignalsResponse* update_response =
334 response->mutable_update_signals_response(); 320 response->mutable_update_signals_response();
335 update_response->set_status(util::error::OK); 321 update_response->set_status(util::error::OK);
336 Token* invalid_token = update_response->add_token(); 322 Token* invalid_token = update_response->add_token();
337 invalid_token->set_id("bad token"); 323 invalid_token->set_id("bad token");
338 invalid_token->set_status(INVALID); 324 invalid_token->set_status(INVALID);
339 CreateSubscribedMessage(
340 subscription_1, "Message A", update_response->add_message());
341 CreateSubscribedMessage(
342 subscription_2, "Message B", update_response->add_message());
343 CreateSubscribedMessage(
344 both_subscriptions, "Message C", update_response->add_message());
345 update_response->add_directive()->set_subscription_id("Subscription 1"); 325 update_response->add_directive()->set_subscription_id("Subscription 1");
346 update_response->add_directive()->set_subscription_id("Subscription 2"); 326 update_response->add_directive()->set_subscription_id("Subscription 2");
347 327
348 // Process it. 328 // Check processing.
349 messages_by_subscription_.clear();
350 status_ = FAIL; 329 status_ = FAIL;
351 SendReportResponse(net::HTTP_OK, response.Pass()); 330 SendReportResponse(net::HTTP_OK, response.Pass());
352
353 // Check processing.
354 EXPECT_EQ(SUCCESS, status_); 331 EXPECT_EQ(SUCCESS, status_);
355 EXPECT_TRUE(TokenIsInvalid("bad token")); 332 EXPECT_TRUE(TokenIsInvalid("bad token"));
356 EXPECT_THAT(messages_by_subscription_["Subscription 1"],
357 ElementsAre("Message A", "Message C"));
358 EXPECT_THAT(messages_by_subscription_["Subscription 2"],
359 ElementsAre("Message B", "Message C"));
360 EXPECT_THAT(directive_handler_.added_directives(), 333 EXPECT_THAT(directive_handler_.added_directives(),
361 ElementsAre("Subscription 1", "Subscription 2")); 334 ElementsAre("Subscription 1", "Subscription 2"));
362 } 335 }
363 336
364 } // namespace copresence 337 } // namespace copresence
OLDNEW
« components/copresence/copresence_manager_impl.cc ('K') | « components/copresence/rpc/rpc_handler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698