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()); |