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

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

Issue 671573003: Adding support for authenticated copresence calls (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing memory error Created 6 years, 2 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') | extensions/browser/extension_function_histogram_value.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
index 731bdab76ace8c868b69c910ff79e52e5d8de7ed..636caba40d46ab519556b276374ca730ef2986a8 100644
--- a/components/copresence/rpc/rpc_handler_unittest.cc
+++ b/components/copresence/rpc/rpc_handler_unittest.cc
@@ -10,6 +10,7 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
+#include "base/memory/scoped_vector.h"
#include "base/message_loop/message_loop.h"
#include "components/copresence/handlers/directive_handler.h"
#include "components/copresence/mediums/audio/audio_manager.h"
@@ -69,64 +70,39 @@ class FakeDirectiveHandler : public DirectiveHandler {
class RpcHandlerTest : public testing::Test, public CopresenceDelegate {
public:
- RpcHandlerTest() : rpc_handler_(this), status_(SUCCESS), api_key_("API key") {
+ RpcHandlerTest() : rpc_handler_(this), status_(SUCCESS) {
rpc_handler_.server_post_callback_ =
base::Bind(&RpcHandlerTest::CaptureHttpPost, base::Unretained(this));
- rpc_handler_.device_id_ = "Device ID";
}
- void CaptureHttpPost(
- net::URLRequestContextGetter* url_context_getter,
- const std::string& rpc_name,
- scoped_ptr<MessageLite> request_proto,
- const RpcHandler::PostCleanupCallback& response_callback) {
- rpc_name_ = rpc_name;
- request_proto_ = request_proto.Pass();
- }
-
- void CaptureStatus(CopresenceStatus status) {
- status_ = status;
- }
-
- inline const ReportRequest* GetReportSent() {
- return static_cast<ReportRequest*>(request_proto_.get());
- }
-
- const TokenTechnology& GetTokenTechnologyFromReport() {
- return GetReportSent()->update_signals_request().state().capabilities()
- .token_technology(0);
- }
-
- const RepeatedPtrField<PublishedMessage>& GetMessagesPublished() {
- return GetReportSent()->manage_messages_request().message_to_publish();
- }
+ // CopresenceDelegate implementation
- const RepeatedPtrField<Subscription>& GetSubscriptionsSent() {
- return GetReportSent()->manage_subscriptions_request().subscription();
+ void HandleMessages(const std::string& app_id,
+ const std::string& subscription_id,
+ const std::vector<Message>& messages) override {
+ // app_id is unused for now, pending a server fix.
+ messages_by_subscription_[subscription_id] = messages;
}
- void SetDeviceId(const std::string& device_id) {
- rpc_handler_.device_id_ = device_id;
+ net::URLRequestContextGetter* GetRequestContext() const override {
+ return NULL;
}
- const std::string& GetDeviceId() {
- return rpc_handler_.device_id_;
+ const std::string GetPlatformVersionString() const override {
+ return kChromeVersion;
}
- void AddInvalidToken(const std::string& token) {
- rpc_handler_.invalid_audio_token_cache_.Add(token, true);
+ const std::string GetAPIKey(const std::string& app_id) const override {
+ return app_id + " API Key";
}
- bool TokenIsInvalid(const std::string& token) {
- return rpc_handler_.invalid_audio_token_cache_.HasKey(token);
+ const std::string GetAuthToken() const override {
+ return auth_token_;
}
- FakeDirectiveHandler* InstallFakeDirectiveHandler() {
- FakeDirectiveHandler* handler = new FakeDirectiveHandler;
- rpc_handler_.directive_handler_.reset(handler);
- return handler;
- }
+ WhispernetClient* GetWhispernetClient() override { return NULL; }
+ protected:
void InvokeReportResponseHandler(int status_code,
const std::string& response) {
rpc_handler_.ReportResponseHandler(
@@ -136,60 +112,90 @@ class RpcHandlerTest : public testing::Test, public CopresenceDelegate {
response);
}
- // CopresenceDelegate implementation
-
- void HandleMessages(const std::string& app_id,
- const std::string& subscription_id,
- const std::vector<Message>& messages) override {
- // app_id is unused for now, pending a server fix.
- messages_by_subscription_[subscription_id] = messages;
+ FakeDirectiveHandler* InstallFakeDirectiveHandler() {
+ FakeDirectiveHandler* handler = new FakeDirectiveHandler;
+ rpc_handler_.directive_handler_.reset(handler);
+ return handler;
}
- net::URLRequestContextGetter* GetRequestContext() const override {
- return NULL;
+ void SetDeviceIdAndAuthToken(const std::string& device_id,
+ const std::string& auth_token) {
+ rpc_handler_.device_id_by_auth_token_[auth_token] = device_id;
+ auth_token_ = auth_token;
}
- const std::string GetPlatformVersionString() const override {
- return kChromeVersion;
+ void AddInvalidToken(const std::string& token) {
+ rpc_handler_.invalid_audio_token_cache_.Add(token, true);
}
- const std::string GetAPIKey() const override { return api_key_; }
-
- WhispernetClient* GetWhispernetClient() override { return NULL; }
+ bool TokenIsInvalid(const std::string& token) {
+ return rpc_handler_.invalid_audio_token_cache_.HasKey(token);
+ }
- protected:
// For rpc_handler_.invalid_audio_token_cache_
base::MessageLoop message_loop_;
RpcHandler rpc_handler_;
CopresenceStatus status_;
- std::string api_key_;
std::string rpc_name_;
- scoped_ptr<MessageLite> request_proto_;
+ std::string api_key_;
+ std::string auth_token_;
+ ScopedVector<MessageLite> request_protos_;
std::map<std::string, std::vector<Message>> messages_by_subscription_;
+
+ private:
+ void CaptureHttpPost(
+ net::URLRequestContextGetter* url_context_getter,
+ const std::string& rpc_name,
+ const std::string& api_key,
+ const std::string& auth_token,
+ scoped_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, Initialize) {
- SetDeviceId("");
- rpc_handler_.Initialize(RpcHandler::SuccessCallback());
- RegisterDeviceRequest* registration =
- static_cast<RegisterDeviceRequest*>(request_proto_.get());
+TEST_F(RpcHandlerTest, RegisterDevice) {
+ EXPECT_FALSE(rpc_handler_.IsRegisteredForToken(""));
+ rpc_handler_.RegisterForToken("", RpcHandler::SuccessCallback());
+ EXPECT_EQ(1u, request_protos_.size());
+ const RegisterDeviceRequest* registration =
+ static_cast<RegisterDeviceRequest*>(request_protos_[0]);
Identity identity = registration->device_identifiers().registrant();
EXPECT_EQ(CHROME, identity.type());
EXPECT_FALSE(identity.chrome_id().empty());
+
+ EXPECT_FALSE(rpc_handler_.IsRegisteredForToken("abc"));
+ rpc_handler_.RegisterForToken("abc", RpcHandler::SuccessCallback());
+ EXPECT_EQ(2u, request_protos_.size());
+ registration = static_cast<RegisterDeviceRequest*>(request_protos_[1]);
+ EXPECT_FALSE(registration->has_device_identifiers());
}
+// TODO(ckehoe): Add a test for RegisterResponseHandler.
+
TEST_F(RpcHandlerTest, CreateRequestHeader) {
- SetDeviceId("CreateRequestHeader Device ID");
+ SetDeviceIdAndAuthToken("CreateRequestHeader Device ID",
+ "CreateRequestHeader Auth Token");
rpc_handler_.SendReportRequest(make_scoped_ptr(new ReportRequest),
- "CreateRequestHeader App ID",
+ "CreateRequestHeader App",
+ "CreateRequestHeader Auth Token",
StatusCallback());
EXPECT_EQ(RpcHandler::kReportRequestRpcName, rpc_name_);
- ReportRequest* report = static_cast<ReportRequest*>(request_proto_.get());
+ 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 ID",
+ EXPECT_EQ("CreateRequestHeader App",
report->header().client_version().client());
EXPECT_EQ("CreateRequestHeader Device ID",
report->header().registered_device_id());
@@ -204,9 +210,14 @@ TEST_F(RpcHandlerTest, ReportTokens) {
test_tokens.push_back(AudioToken("token 3", false));
AddInvalidToken("token 2");
+ SetDeviceIdAndAuthToken("ReportTokens Device 1", "");
+ SetDeviceIdAndAuthToken("ReportTokens Device 2", "ReportTokens Auth");
+
rpc_handler_.ReportTokens(test_tokens);
EXPECT_EQ(RpcHandler::kReportRequestRpcName, rpc_name_);
- ReportRequest* report = static_cast<ReportRequest*>(request_proto_.get());
+ EXPECT_EQ(" API Key", api_key_);
+ EXPECT_EQ(2u, request_protos_.size());
+ const ReportRequest* report = static_cast<ReportRequest*>(request_protos_[0]);
RepeatedPtrField<TokenObservation> tokens_sent =
report->update_signals_request().token_observation();
ASSERT_EQ(2, tokens_sent.size());
« no previous file with comments | « components/copresence/rpc/rpc_handler.cc ('k') | extensions/browser/extension_function_histogram_value.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698