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

Unified Diff: components/copresence/rpc/rpc_handler_unittest.cc

Issue 2130803002: Deleting the copresence API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 5 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
« no previous file with comments | « components/copresence/rpc/rpc_handler.cc ('k') | components/copresence/test/fake_directive_handler.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/copresence/rpc/rpc_handler_unittest.cc
diff --git a/components/copresence/rpc/rpc_handler_unittest.cc b/components/copresence/rpc/rpc_handler_unittest.cc
deleted file mode 100644
index ea4baab8f6b61bbd4273ce11a829f143031d2194..0000000000000000000000000000000000000000
--- a/components/copresence/rpc/rpc_handler_unittest.cc
+++ /dev/null
@@ -1,348 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/copresence/rpc/rpc_handler.h"
-
-#include <map>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/memory/ptr_util.h"
-#include "base/memory/scoped_vector.h"
-#include "base/message_loop/message_loop.h"
-#include "components/audio_modem/public/modem.h"
-#include "components/audio_modem/test/stub_whispernet_client.h"
-#include "components/copresence/copresence_state_impl.h"
-#include "components/copresence/handlers/directive_handler.h"
-#include "components/copresence/proto/data.pb.h"
-#include "components/copresence/proto/enums.pb.h"
-#include "components/copresence/proto/rpcs.pb.h"
-#include "components/copresence/test/fake_directive_handler.h"
-#include "net/http/http_status_code.h"
-#include "testing/gmock/include/gmock/gmock.h"
-
-using google::protobuf::MessageLite;
-using google::protobuf::RepeatedPtrField;
-
-using testing::ElementsAre;
-using testing::Property;
-using testing::SizeIs;
-
-using audio_modem::AudioToken;
-using audio_modem::WhispernetClient;
-
-namespace copresence {
-
-namespace {
-
-const char kChromeVersion[] = "Chrome Version String";
-
-void IgnoreMessages(
- const RepeatedPtrField<SubscribedMessage>& /* messages */) {}
-
-} // namespace
-
-class RpcHandlerTest : public testing::Test, public CopresenceDelegate {
- public:
- RpcHandlerTest()
- : whispernet_client_(new audio_modem::StubWhispernetClient),
- // TODO(ckehoe): Use a FakeCopresenceState here
- // and test that it gets called correctly.
- rpc_handler_(this,
- &directive_handler_,
- nullptr,
- nullptr,
- base::Bind(&IgnoreMessages),
- base::Bind(&RpcHandlerTest::CaptureHttpPost,
- base::Unretained(this))),
- status_(SUCCESS) {}
-
- // CopresenceDelegate implementation
-
- void HandleMessages(const std::string& /* app_id */,
- const std::string& subscription_id,
- const std::vector<Message>& messages) override {
- NOTREACHED();
- }
-
- void HandleStatusUpdate(CopresenceStatus /* status */) override {
- NOTREACHED();
- }
-
- net::URLRequestContextGetter* GetRequestContext() const override {
- return nullptr;
- }
-
- std::string GetPlatformVersionString() const override {
- return kChromeVersion;
- }
-
- std::string GetAPIKey(const std::string& app_id) const override {
- return app_id + " API Key";
- }
-
- WhispernetClient* GetWhispernetClient() override {
- return whispernet_client_.get();
- }
-
- // TODO(ckehoe): Add GCM tests.
- gcm::GCMDriver* GetGCMDriver() override {
- return nullptr;
- }
-
- std::string GetDeviceId(bool authenticated) override {
- return device_id_by_auth_state_[authenticated];
- }
-
- void SaveDeviceId(bool authenticated, const std::string& device_id) override {
- device_id_by_auth_state_[authenticated] = device_id;
- }
-
- protected:
-
- // Send test input to RpcHandler
-
- void RegisterDevice(bool authenticated) {
- rpc_handler_.RegisterDevice(authenticated);
- }
-
- void SendRegisterResponse(bool authenticated,
- const std::string& device_id) {
- RegisterDeviceResponse response;
- response.set_registered_device_id(device_id);
- response.mutable_header()->mutable_status()->set_code(OK);
-
- std::string serialized_response;
- response.SerializeToString(&serialized_response);
- rpc_handler_.RegisterResponseHandler(
- authenticated, false, nullptr, net::HTTP_OK, serialized_response);
- }
-
- void SendReport(std::unique_ptr<ReportRequest> request,
- const std::string& app_id,
- const std::string& auth_token) {
- rpc_handler_.SendReportRequest(std::move(request), app_id, auth_token,
- StatusCallback());
- }
-
- void SendReportResponse(int status_code,
- std::unique_ptr<ReportResponse> response) {
- response->mutable_header()->mutable_status()->set_code(OK);
-
- std::string serialized_response;
- response->SerializeToString(&serialized_response);
- rpc_handler_.ReportResponseHandler(
- base::Bind(&RpcHandlerTest::CaptureStatus, base::Unretained(this)),
- nullptr,
- status_code,
- serialized_response);
- }
-
- // Read and modify RpcHandler state
-
- void SetAuthToken(const std::string& auth_token) {
- rpc_handler_.auth_token_ = auth_token;
- }
-
- const ScopedVector<RpcHandler::PendingRequest>& request_queue() const {
- return rpc_handler_.pending_requests_queue_;
- }
-
- void AddInvalidToken(const std::string& token) {
- rpc_handler_.invalid_audio_token_cache_.Add(token, true);
- }
-
- bool TokenIsInvalid(const std::string& token) {
- return rpc_handler_.invalid_audio_token_cache_.HasKey(token);
- }
-
- // For rpc_handler_.invalid_audio_token_cache_
- base::MessageLoop message_loop_;
-
- std::unique_ptr<WhispernetClient> whispernet_client_;
- FakeDirectiveHandler directive_handler_;
- RpcHandler rpc_handler_;
-
- std::map<bool, std::string> device_id_by_auth_state_;
-
- CopresenceStatus status_;
- std::string rpc_name_;
- std::string api_key_;
- std::string auth_token_;
- ScopedVector<MessageLite> request_protos_;
-
- private:
- void CaptureHttpPost(
- net::URLRequestContextGetter* url_context_getter,
- const std::string& rpc_name,
- const std::string& api_key,
- const std::string& auth_token,
- std::unique_ptr<MessageLite> request_proto,
- const RpcHandler::PostCleanupCallback& response_callback) {
- rpc_name_ = rpc_name;
- api_key_ = api_key;
- auth_token_ = auth_token;
- request_protos_.push_back(request_proto.release());
- }
-
- void CaptureStatus(CopresenceStatus status) {
- status_ = status;
- }
-};
-
-TEST_F(RpcHandlerTest, RegisterDevice) {
- RegisterDevice(false);
- EXPECT_THAT(request_protos_, SizeIs(1));
- const RegisterDeviceRequest* registration =
- static_cast<RegisterDeviceRequest*>(request_protos_[0]);
- EXPECT_EQ(CHROME, registration->device_identifiers().registrant().type());
-
- SetAuthToken("Register auth");
- RegisterDevice(true);
- EXPECT_THAT(request_protos_, SizeIs(2));
- registration = static_cast<RegisterDeviceRequest*>(request_protos_[1]);
- EXPECT_FALSE(registration->has_device_identifiers());
-}
-
-TEST_F(RpcHandlerTest, RequestQueuing) {
- // Send a report.
- ReportRequest* report = new ReportRequest;
- report->mutable_manage_messages_request()->add_id_to_unpublish("unpublish");
- SendReport(base::WrapUnique(report), "Q App ID", "Q Auth Token");
- EXPECT_THAT(request_queue(), SizeIs(1));
- EXPECT_TRUE(request_queue()[0]->authenticated);
-
- // Check for registration request.
- EXPECT_THAT(request_protos_, SizeIs(1));
- const RegisterDeviceRequest* registration =
- static_cast<RegisterDeviceRequest*>(request_protos_[0]);
- EXPECT_FALSE(registration->device_identifiers().has_registrant());
- EXPECT_EQ("Q Auth Token", auth_token_);
-
- // Send a second report.
- report = new ReportRequest;
- report->mutable_manage_subscriptions_request()->add_id_to_unsubscribe(
- "unsubscribe");
- SendReport(base::WrapUnique(report), "Q App ID", "Q Auth Token");
- EXPECT_THAT(request_protos_, SizeIs(1));
- EXPECT_THAT(request_queue(), SizeIs(2));
- EXPECT_TRUE(request_queue()[1]->authenticated);
-
- // Send an anonymous report.
- report = new ReportRequest;
- report->mutable_update_signals_request()->add_token_observation()
- ->set_token_id("Q Audio Token");
- SendReport(base::WrapUnique(report), "Q App ID", "");
- EXPECT_THAT(request_queue(), SizeIs(3));
- EXPECT_FALSE(request_queue()[2]->authenticated);
-
- // Check for another registration request.
- EXPECT_THAT(request_protos_, SizeIs(2));
- registration = static_cast<RegisterDeviceRequest*>(request_protos_[1]);
- EXPECT_TRUE(registration->device_identifiers().has_registrant());
- EXPECT_EQ("", auth_token_);
-
- // Respond to the first registration.
- SendRegisterResponse(true, "Q Auth Device ID");
- EXPECT_EQ("Q Auth Device ID", device_id_by_auth_state_[true]);
-
- // Check that queued reports are sent.
- EXPECT_THAT(request_protos_, SizeIs(4));
- EXPECT_THAT(request_queue(), SizeIs(1));
- EXPECT_THAT(directive_handler_.removed_directives(),
- ElementsAre("unpublish", "unsubscribe"));
- report = static_cast<ReportRequest*>(request_protos_[2]);
- EXPECT_EQ("unpublish", report->manage_messages_request().id_to_unpublish(0));
- report = static_cast<ReportRequest*>(request_protos_[3]);
- EXPECT_EQ("unsubscribe",
- report->manage_subscriptions_request().id_to_unsubscribe(0));
-
- // Respond to the second registration.
- SendRegisterResponse(false, "Q Anonymous Device ID");
- EXPECT_EQ("Q Anonymous Device ID", device_id_by_auth_state_[false]);
-
- // Check for last report.
- EXPECT_THAT(request_protos_, SizeIs(5));
- EXPECT_TRUE(request_queue().empty());
- report = static_cast<ReportRequest*>(request_protos_[4]);
- EXPECT_EQ("Q Audio Token",
- report->update_signals_request().token_observation(0).token_id());
-}
-
-TEST_F(RpcHandlerTest, CreateRequestHeader) {
- device_id_by_auth_state_[true] = "CreateRequestHeader Device ID";
- SendReport(base::WrapUnique(new ReportRequest), "CreateRequestHeader App",
- "CreateRequestHeader Auth Token");
-
- EXPECT_EQ(RpcHandler::kReportRequestRpcName, rpc_name_);
- EXPECT_EQ("CreateRequestHeader App API Key", api_key_);
- EXPECT_EQ("CreateRequestHeader Auth Token", auth_token_);
- const ReportRequest* report = static_cast<ReportRequest*>(request_protos_[0]);
- EXPECT_EQ(kChromeVersion,
- report->header().framework_version().version_name());
- EXPECT_EQ("CreateRequestHeader App",
- report->header().client_version().client());
- EXPECT_EQ("CreateRequestHeader Device ID",
- report->header().registered_device_id());
- EXPECT_EQ(CHROME_PLATFORM_TYPE,
- report->header().device_fingerprint().type());
-}
-
-TEST_F(RpcHandlerTest, ReportTokens) {
- std::vector<AudioToken> test_tokens;
- test_tokens.push_back(AudioToken("token 1", false));
- test_tokens.push_back(AudioToken("token 2", false));
- test_tokens.push_back(AudioToken("token 3", true));
- AddInvalidToken("token 2");
-
- device_id_by_auth_state_[false] = "ReportTokens Anonymous Device";
- device_id_by_auth_state_[true] = "ReportTokens Auth Device";
- SetAuthToken("ReportTokens Auth");
-
- rpc_handler_.ReportTokens(test_tokens);
- EXPECT_EQ(RpcHandler::kReportRequestRpcName, rpc_name_);
- EXPECT_EQ(" API Key", api_key_);
- EXPECT_THAT(request_protos_, SizeIs(2));
- const ReportRequest* report = static_cast<ReportRequest*>(request_protos_[0]);
- RepeatedPtrField<TokenObservation> tokens_sent =
- report->update_signals_request().token_observation();
- EXPECT_THAT(tokens_sent, ElementsAre(
- Property(&TokenObservation::token_id, "token 1"),
- Property(&TokenObservation::token_id, "token 3"),
- Property(&TokenObservation::token_id, "current audible"),
- Property(&TokenObservation::token_id, "current inaudible")));
-}
-
-TEST_F(RpcHandlerTest, ReportResponseHandler) {
- // Fail on HTTP status != 200.
- std::unique_ptr<ReportResponse> response(new ReportResponse);
- status_ = SUCCESS;
- SendReportResponse(net::HTTP_BAD_REQUEST, std::move(response));
- EXPECT_EQ(FAIL, status_);
-
- // Construct a test ReportResponse.
- response.reset(new ReportResponse);
- response->mutable_header()->mutable_status()->set_code(OK);
- UpdateSignalsResponse* update_response =
- response->mutable_update_signals_response();
- update_response->set_status(util::error::OK);
- Token* invalid_token = update_response->add_token();
- invalid_token->set_id("bad token");
- invalid_token->set_status(INVALID);
- update_response->add_directive()->set_subscription_id("Subscription 1");
- update_response->add_directive()->set_subscription_id("Subscription 2");
-
- // Check processing.
- status_ = FAIL;
- SendReportResponse(net::HTTP_OK, std::move(response));
- EXPECT_EQ(SUCCESS, status_);
- EXPECT_TRUE(TokenIsInvalid("bad token"));
- EXPECT_THAT(directive_handler_.added_directives(),
- ElementsAre("Subscription 1", "Subscription 2"));
-}
-
-} // namespace copresence
« no previous file with comments | « components/copresence/rpc/rpc_handler.cc ('k') | components/copresence/test/fake_directive_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698