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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
8 #include "base/message_loop/message_loop_proxy.h" | 8 #include "base/message_loop/message_loop_proxy.h" |
9 #include "chrome/browser/extensions/api/gcd_private/gcd_private_api.h" | 9 #include "chrome/browser/extensions/api/gcd_private/gcd_private_api.h" |
10 #include "chrome/browser/extensions/extension_apitest.h" | 10 #include "chrome/browser/extensions/extension_apitest.h" |
11 #include "chrome/browser/extensions/extension_service.h" | 11 #include "chrome/browser/extensions/extension_service.h" |
12 #include "chrome/common/extensions/api/mdns.h" | 12 #include "chrome/common/extensions/api/mdns.h" |
13 #include "extensions/common/switches.h" | 13 #include "extensions/common/switches.h" |
| 14 #include "net/url_request/test_url_fetcher_factory.h" |
14 #include "testing/gmock/include/gmock/gmock.h" | 15 #include "testing/gmock/include/gmock/gmock.h" |
15 | 16 |
16 #if defined(ENABLE_MDNS) | 17 #if defined(ENABLE_MDNS) |
17 #include "chrome/browser/local_discovery/test_service_discovery_client.h" | 18 #include "chrome/browser/local_discovery/test_service_discovery_client.h" |
18 #endif // ENABLE_MDNS | 19 #endif // ENABLE_MDNS |
19 | 20 |
20 namespace api = extensions::api; | 21 namespace api = extensions::api; |
21 | 22 |
22 namespace { | 23 namespace { |
23 | 24 |
(...skipping 23 matching lines...) Expand all Loading... |
47 " \"connectionStatus\": \"offline\"" | 48 " \"connectionStatus\": \"offline\"" |
48 " }" | 49 " }" |
49 " }," | 50 " }," |
50 " \"channel\": {" | 51 " \"channel\": {" |
51 " \"supportedType\": \"xmpp\"" | 52 " \"supportedType\": \"xmpp\"" |
52 " }," | 53 " }," |
53 " \"personalizedInfo\": {" | 54 " \"personalizedInfo\": {" |
54 " \"maxRole\": \"owner\"" | 55 " \"maxRole\": \"owner\"" |
55 " }}]}"; | 56 " }}]}"; |
56 | 57 |
| 58 const char kPrivetInfoResponse[] = |
| 59 "{" |
| 60 "\"x-privet-token\": \"sample\"" |
| 61 "}"; |
| 62 |
| 63 const char kPrivetPingResponse[] = |
| 64 "{" |
| 65 "\"response\": \"pong\"" |
| 66 "}"; |
| 67 |
57 #if defined(ENABLE_MDNS) | 68 #if defined(ENABLE_MDNS) |
58 | 69 |
59 const uint8 kAnnouncePacket[] = { | 70 const uint8 kAnnouncePacket[] = { |
60 // Header | 71 // Header |
61 0x00, 0x00, // ID is zeroed out | 72 0x00, 0x00, // ID is zeroed out |
62 0x80, 0x00, // Standard query response, no error | 73 0x80, 0x00, // Standard query response, no error |
63 0x00, 0x00, // No questions (for simplicity) | 74 0x00, 0x00, // No questions (for simplicity) |
64 0x00, 0x05, // 5 RR (answers) | 75 0x00, 0x05, // 5 RR (answers) |
65 0x00, 0x00, // 0 authority RRs | 76 0x00, 0x00, // 0 authority RRs |
66 0x00, 0x00, // 0 additional RRs | 77 0x00, 0x00, // 0 additional RRs |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 | 209 |
199 private: | 210 private: |
200 FakeGCDApiFlowFactory* factory_; | 211 FakeGCDApiFlowFactory* factory_; |
201 }; | 212 }; |
202 | 213 |
203 std::map<GURL /*request url*/, std::string /*response json*/> responses_; | 214 std::map<GURL /*request url*/, std::string /*response json*/> responses_; |
204 }; | 215 }; |
205 | 216 |
206 class GcdPrivateAPITest : public ExtensionApiTest { | 217 class GcdPrivateAPITest : public ExtensionApiTest { |
207 public: | 218 public: |
208 GcdPrivateAPITest() { | 219 GcdPrivateAPITest() : url_fetcher_factory_(NULL) { |
209 #if defined(ENABLE_MDNS) | 220 #if defined(ENABLE_MDNS) |
210 test_service_discovery_client_ = | 221 test_service_discovery_client_ = |
211 new local_discovery::TestServiceDiscoveryClient(); | 222 new local_discovery::TestServiceDiscoveryClient(); |
212 test_service_discovery_client_->Start(); | 223 test_service_discovery_client_->Start(); |
213 #endif // ENABLE_MDNS | 224 #endif // ENABLE_MDNS |
214 } | 225 } |
215 | 226 |
216 protected: | 227 protected: |
217 FakeGCDApiFlowFactory api_flow_factory_; | 228 FakeGCDApiFlowFactory api_flow_factory_; |
| 229 net::FakeURLFetcherFactory url_fetcher_factory_; |
218 | 230 |
219 #if defined(ENABLE_MDNS) | 231 #if defined(ENABLE_MDNS) |
220 scoped_refptr<local_discovery::TestServiceDiscoveryClient> | 232 scoped_refptr<local_discovery::TestServiceDiscoveryClient> |
221 test_service_discovery_client_; | 233 test_service_discovery_client_; |
222 #endif // ENABLE_MDNS | 234 #endif // ENABLE_MDNS |
223 }; | 235 }; |
224 | 236 |
225 IN_PROC_BROWSER_TEST_F(GcdPrivateAPITest, GetCloudList) { | 237 IN_PROC_BROWSER_TEST_F(GcdPrivateAPITest, GetCloudList) { |
226 api_flow_factory_.SetResponse( | 238 api_flow_factory_.SetResponse( |
227 GURL("https://www.google.com/cloudprint/search"), kCloudPrintResponse); | 239 GURL("https://www.google.com/cloudprint/search"), kCloudPrintResponse); |
228 | 240 |
229 api_flow_factory_.SetResponse( | 241 api_flow_factory_.SetResponse( |
230 GURL("https://www.googleapis.com/clouddevices/v1/devices"), kGCDResponse); | 242 GURL("https://www.googleapis.com/clouddevices/v1/devices"), kGCDResponse); |
231 | 243 |
232 EXPECT_TRUE(RunExtensionSubtest("gcd_private/api", "get_cloud_list.html")); | 244 EXPECT_TRUE(RunExtensionSubtest("gcd_private/api", "get_cloud_list.html")); |
233 } | 245 } |
234 | 246 |
| 247 IN_PROC_BROWSER_TEST_F(GcdPrivateAPITest, Session) { |
| 248 url_fetcher_factory_.SetFakeResponse(GURL("http://1.2.3.4:9090/privet/info"), |
| 249 kPrivetInfoResponse, |
| 250 net::HTTP_OK, |
| 251 net::URLRequestStatus::SUCCESS); |
| 252 |
| 253 url_fetcher_factory_.SetFakeResponse(GURL("http://1.2.3.4:9090/privet/ping"), |
| 254 kPrivetPingResponse, |
| 255 net::HTTP_OK, |
| 256 net::URLRequestStatus::SUCCESS); |
| 257 |
| 258 EXPECT_TRUE(RunExtensionSubtest("gcd_private/api", "session.html")); |
| 259 } |
| 260 |
235 #if defined(ENABLE_MDNS) | 261 #if defined(ENABLE_MDNS) |
236 | 262 |
237 IN_PROC_BROWSER_TEST_F(GcdPrivateAPITest, AddBefore) { | 263 IN_PROC_BROWSER_TEST_F(GcdPrivateAPITest, AddBefore) { |
238 test_service_discovery_client_->SimulateReceive(kAnnouncePacket, | 264 test_service_discovery_client_->SimulateReceive(kAnnouncePacket, |
239 sizeof(kAnnouncePacket)); | 265 sizeof(kAnnouncePacket)); |
240 | 266 |
241 EXPECT_TRUE( | 267 EXPECT_TRUE( |
242 RunExtensionSubtest("gcd_private/api", "receive_new_device.html")); | 268 RunExtensionSubtest("gcd_private/api", "receive_new_device.html")); |
243 } | 269 } |
244 | 270 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 EXPECT_CALL(*test_service_discovery_client_, | 304 EXPECT_CALL(*test_service_discovery_client_, |
279 OnSendTo(std::string(reinterpret_cast<const char*>(kQueryPacket), | 305 OnSendTo(std::string(reinterpret_cast<const char*>(kQueryPacket), |
280 sizeof(kQueryPacket)))).Times(2); | 306 sizeof(kQueryPacket)))).Times(2); |
281 #endif | 307 #endif |
282 EXPECT_TRUE(RunExtensionSubtest("gcd_private/api", "send_query.html")); | 308 EXPECT_TRUE(RunExtensionSubtest("gcd_private/api", "send_query.html")); |
283 } | 309 } |
284 | 310 |
285 #endif // ENABLE_MDNS | 311 #endif // ENABLE_MDNS |
286 | 312 |
287 } // namespace | 313 } // namespace |
OLD | NEW |