| OLD | NEW |
| 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 "chrome/browser/extensions/api/copresence/copresence_api.h" |
| 6 |
| 7 #include <utility> |
| 8 |
| 5 #include "base/json/json_writer.h" | 9 #include "base/json/json_writer.h" |
| 6 #include "base/values.h" | 10 #include "base/values.h" |
| 7 #include "chrome/browser/extensions/api/copresence/copresence_api.h" | |
| 8 #include "chrome/browser/extensions/extension_api_unittest.h" | 11 #include "chrome/browser/extensions/extension_api_unittest.h" |
| 9 #include "chrome/browser/extensions/extension_function_test_utils.h" | 12 #include "chrome/browser/extensions/extension_function_test_utils.h" |
| 10 #include "components/copresence/proto/data.pb.h" | 13 #include "components/copresence/proto/data.pb.h" |
| 11 #include "components/copresence/proto/rpcs.pb.h" | 14 #include "components/copresence/proto/rpcs.pb.h" |
| 12 #include "components/copresence/public/copresence_manager.h" | 15 #include "components/copresence/public/copresence_manager.h" |
| 13 | 16 |
| 14 using base::ListValue; | 17 using base::ListValue; |
| 15 using copresence::AUDIO_CONFIGURATION_AUDIBLE; | 18 using copresence::AUDIO_CONFIGURATION_AUDIBLE; |
| 16 using copresence::AUDIO_CONFIGURATION_UNKNOWN; | 19 using copresence::AUDIO_CONFIGURATION_UNKNOWN; |
| 17 using copresence::BROADCAST_ONLY; | 20 using copresence::BROADCAST_ONLY; |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 // Takes ownership of the operation_list. | 116 // Takes ownership of the operation_list. |
| 114 bool ExecuteOperations(ListValue* operation_list) { | 117 bool ExecuteOperations(ListValue* operation_list) { |
| 115 scoped_ptr<ListValue> args_list(new ListValue); | 118 scoped_ptr<ListValue> args_list(new ListValue); |
| 116 args_list->Append(operation_list); | 119 args_list->Append(operation_list); |
| 117 | 120 |
| 118 scoped_refptr<UIThreadExtensionFunction> function = | 121 scoped_refptr<UIThreadExtensionFunction> function = |
| 119 new CopresenceExecuteFunction; | 122 new CopresenceExecuteFunction; |
| 120 function->set_extension(extension()); | 123 function->set_extension(extension()); |
| 121 function->set_browser_context(profile()); | 124 function->set_browser_context(profile()); |
| 122 function->set_has_callback(true); | 125 function->set_has_callback(true); |
| 123 test_utils::RunFunction( | 126 test_utils::RunFunction(function.get(), std::move(args_list), browser(), |
| 124 function.get(), args_list.Pass(), browser(), test_utils::NONE); | 127 test_utils::NONE); |
| 125 return function->GetResultList(); | 128 return function->GetResultList(); |
| 126 } | 129 } |
| 127 | 130 |
| 128 bool ExecuteOperation(scoped_ptr<Operation> operation) { | 131 bool ExecuteOperation(scoped_ptr<Operation> operation) { |
| 129 ListValue* operation_list = new ListValue; | 132 ListValue* operation_list = new ListValue; |
| 130 operation_list->Append(operation->ToValue().release()); | 133 operation_list->Append(operation->ToValue().release()); |
| 131 return ExecuteOperations(operation_list); | 134 return ExecuteOperations(operation_list); |
| 132 } | 135 } |
| 133 | 136 |
| 134 const ReportRequest& request_sent() const { | 137 const ReportRequest& request_sent() const { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 150 protected: | 153 protected: |
| 151 FakeCopresenceManager* copresence_manager_; | 154 FakeCopresenceManager* copresence_manager_; |
| 152 }; | 155 }; |
| 153 | 156 |
| 154 TEST_F(CopresenceApiUnittest, Publish) { | 157 TEST_F(CopresenceApiUnittest, Publish) { |
| 155 scoped_ptr<PublishOperation> publish(CreatePublish("pub")); | 158 scoped_ptr<PublishOperation> publish(CreatePublish("pub")); |
| 156 publish->strategies.reset(new Strategy); | 159 publish->strategies.reset(new Strategy); |
| 157 publish->strategies->only_broadcast.reset(new bool(true)); // Default | 160 publish->strategies->only_broadcast.reset(new bool(true)); // Default |
| 158 | 161 |
| 159 scoped_ptr<Operation> operation(new Operation); | 162 scoped_ptr<Operation> operation(new Operation); |
| 160 operation->publish = publish.Pass(); | 163 operation->publish = std::move(publish); |
| 161 | 164 |
| 162 clear_app_id(); | 165 clear_app_id(); |
| 163 EXPECT_TRUE(ExecuteOperation(operation.Pass())); | 166 EXPECT_TRUE(ExecuteOperation(std::move(operation))); |
| 164 EXPECT_EQ(extension()->id(), app_id_sent()); | 167 EXPECT_EQ(extension()->id(), app_id_sent()); |
| 165 | 168 |
| 166 PublishedMessage message; | 169 PublishedMessage message; |
| 167 ASSERT_TRUE(GetOnly( | 170 ASSERT_TRUE(GetOnly( |
| 168 request_sent().manage_messages_request().message_to_publish(), &message)); | 171 request_sent().manage_messages_request().message_to_publish(), &message)); |
| 169 EXPECT_EQ("pub", message.id()); | 172 EXPECT_EQ("pub", message.id()); |
| 170 EXPECT_EQ(1000, message.access_policy().ttl_millis()); | 173 EXPECT_EQ(1000, message.access_policy().ttl_millis()); |
| 171 EXPECT_EQ(copresence::NO_ACL_CHECK, message.access_policy().acl().acl_type()); | 174 EXPECT_EQ(copresence::NO_ACL_CHECK, message.access_policy().acl().acl_type()); |
| 172 EXPECT_EQ("joke", message.message().type().type()); | 175 EXPECT_EQ("joke", message.message().type().type()); |
| 173 EXPECT_EQ("Knock Knock!", message.message().payload()); | 176 EXPECT_EQ("Knock Knock!", message.message().payload()); |
| 174 EXPECT_EQ(BROADCAST_ONLY, | 177 EXPECT_EQ(BROADCAST_ONLY, |
| 175 message.token_exchange_strategy().broadcast_scan_configuration()); | 178 message.token_exchange_strategy().broadcast_scan_configuration()); |
| 176 EXPECT_EQ(AUDIO_CONFIGURATION_UNKNOWN, | 179 EXPECT_EQ(AUDIO_CONFIGURATION_UNKNOWN, |
| 177 message.token_exchange_strategy().audio_configuration()); | 180 message.token_exchange_strategy().audio_configuration()); |
| 178 } | 181 } |
| 179 | 182 |
| 180 TEST_F(CopresenceApiUnittest, Subscribe) { | 183 TEST_F(CopresenceApiUnittest, Subscribe) { |
| 181 scoped_ptr<SubscribeOperation> subscribe(CreateSubscribe("sub")); | 184 scoped_ptr<SubscribeOperation> subscribe(CreateSubscribe("sub")); |
| 182 subscribe->strategies.reset(new Strategy); | 185 subscribe->strategies.reset(new Strategy); |
| 183 subscribe->strategies->only_broadcast.reset(new bool(true)); // Not default | 186 subscribe->strategies->only_broadcast.reset(new bool(true)); // Not default |
| 184 subscribe->strategies->audible.reset(new bool(true)); // Not default | 187 subscribe->strategies->audible.reset(new bool(true)); // Not default |
| 185 | 188 |
| 186 scoped_ptr<Operation> operation(new Operation); | 189 scoped_ptr<Operation> operation(new Operation); |
| 187 operation->subscribe = subscribe.Pass(); | 190 operation->subscribe = std::move(subscribe); |
| 188 | 191 |
| 189 clear_app_id(); | 192 clear_app_id(); |
| 190 EXPECT_TRUE(ExecuteOperation(operation.Pass())); | 193 EXPECT_TRUE(ExecuteOperation(std::move(operation))); |
| 191 EXPECT_EQ(extension()->id(), app_id_sent()); | 194 EXPECT_EQ(extension()->id(), app_id_sent()); |
| 192 | 195 |
| 193 Subscription subscription; | 196 Subscription subscription; |
| 194 ASSERT_TRUE(GetOnly( | 197 ASSERT_TRUE(GetOnly( |
| 195 request_sent().manage_subscriptions_request().subscription(), | 198 request_sent().manage_subscriptions_request().subscription(), |
| 196 &subscription)); | 199 &subscription)); |
| 197 EXPECT_EQ("sub", subscription.id()); | 200 EXPECT_EQ("sub", subscription.id()); |
| 198 EXPECT_EQ(1000, subscription.ttl_millis()); | 201 EXPECT_EQ(1000, subscription.ttl_millis()); |
| 199 EXPECT_EQ("joke", subscription.message_type().type()); | 202 EXPECT_EQ("joke", subscription.message_type().type()); |
| 200 copresence::BroadcastScanConfiguration broadcast_scan = | 203 copresence::BroadcastScanConfiguration broadcast_scan = |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 request_sent().manage_subscriptions_request().id_to_unsubscribe(), | 277 request_sent().manage_subscriptions_request().id_to_unsubscribe(), |
| 275 &unsubscribe_id)); | 278 &unsubscribe_id)); |
| 276 EXPECT_EQ("sub", unsubscribe_id); | 279 EXPECT_EQ("sub", unsubscribe_id); |
| 277 } | 280 } |
| 278 | 281 |
| 279 TEST_F(CopresenceApiUnittest, BadId) { | 282 TEST_F(CopresenceApiUnittest, BadId) { |
| 280 scoped_ptr<Operation> unsubscribe_operation(new Operation); | 283 scoped_ptr<Operation> unsubscribe_operation(new Operation); |
| 281 unsubscribe_operation->unsubscribe.reset(new UnsubscribeOperation); | 284 unsubscribe_operation->unsubscribe.reset(new UnsubscribeOperation); |
| 282 unsubscribe_operation->unsubscribe->unsubscribe_id = "invalid id"; | 285 unsubscribe_operation->unsubscribe->unsubscribe_id = "invalid id"; |
| 283 | 286 |
| 284 EXPECT_FALSE(ExecuteOperation(unsubscribe_operation.Pass())); | 287 EXPECT_FALSE(ExecuteOperation(std::move(unsubscribe_operation))); |
| 285 } | 288 } |
| 286 | 289 |
| 287 TEST_F(CopresenceApiUnittest, MultipleOperations) { | 290 TEST_F(CopresenceApiUnittest, MultipleOperations) { |
| 288 scoped_ptr<Operation> multi_operation(new Operation); | 291 scoped_ptr<Operation> multi_operation(new Operation); |
| 289 multi_operation->publish.reset(CreatePublish("pub")); | 292 multi_operation->publish.reset(CreatePublish("pub")); |
| 290 multi_operation->subscribe.reset(CreateSubscribe("sub")); | 293 multi_operation->subscribe.reset(CreateSubscribe("sub")); |
| 291 | 294 |
| 292 EXPECT_FALSE(ExecuteOperation(multi_operation.Pass())); | 295 EXPECT_FALSE(ExecuteOperation(std::move(multi_operation))); |
| 293 } | 296 } |
| 294 | 297 |
| 295 } // namespace extensions | 298 } // namespace extensions |
| 296 | 299 |
| 297 // TODO(ckehoe): add tests for auth tokens and api key functionality | 300 // TODO(ckehoe): add tests for auth tokens and api key functionality |
| OLD | NEW |