| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "remoting/test/remote_host_info_fetcher.h" | 5 #include "remoting/test/remote_host_info_fetcher.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "net/url_request/test_url_fetcher_factory.h" | 10 #include "net/url_request/test_url_fetcher_factory.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 12 | 12 |
| 13 namespace { | 13 namespace { |
| 14 const char kTestApplicationId[] = "klasdfjlkasdfjklasjfdkljsadf"; | 14 const char kTestApplicationId[] = "klasdfjlkasdfjklasjfdkljsadf"; |
| 15 const char kTestApplicationId2[] = "klasdfjlkasdfjklasjfdkljsadf2"; |
| 15 const char kAccessTokenValue[] = "test_access_token_value"; | 16 const char kAccessTokenValue[] = "test_access_token_value"; |
| 16 const char kRemoteHostInfoReadyResponse[] = | 17 const char kRemoteHostInfoReadyResponse[] = |
| 17 "{" | 18 "{" |
| 18 " \"status\": \"done\"," | 19 " \"status\": \"done\"," |
| 19 " \"host\": {" | 20 " \"host\": {" |
| 20 " \"kind\": \"test_kind\"," | 21 " \"kind\": \"test_kind\"," |
| 21 " \"applicationId\": \"klasdfjlkasdfjklasjfdkljsadf\"," | 22 " \"applicationId\": \"klasdfjlkasdfjklasjfdkljsadf\"," |
| 22 " \"hostId\": \"test_host_id\"" | 23 " \"hostId\": \"test_host_id\"" |
| 23 " }," | 24 " }," |
| 24 " \"hostJid\": \"test_host_jid\"," | 25 " \"hostJid\": \"test_host_jid\"," |
| 25 " \"authorizationCode\": \"test_authorization_code\"," | 26 " \"authorizationCode\": \"test_authorization_code\"," |
| 26 " \"sharedSecret\": \"test_shared_secret\"" | 27 " \"sharedSecret\": \"test_shared_secret\"" |
| 27 "}"; | 28 "}"; |
| 29 const char kRemoteHostInfoReadyResponse2[] = |
| 30 "{" |
| 31 " \"status\": \"done\"," |
| 32 " \"host\": {" |
| 33 " \"kind\": \"test_kind\"," |
| 34 " \"applicationId\": \"klasdfjlkasdfjklasjfdkljsadf2\"," |
| 35 " \"hostId\": \"test_host_id\"" |
| 36 " }," |
| 37 " \"hostJid\": \"test_host_jid\"," |
| 38 " \"authorizationCode\": \"test_authorization_code\"," |
| 39 " \"sharedSecret\": \"test_shared_secret\"" |
| 40 "}"; |
| 28 const char kRemoteHostInfoPendingResponse[] = | 41 const char kRemoteHostInfoPendingResponse[] = |
| 29 "{" | 42 "{" |
| 30 " \"status\": \"pending\"" | 43 " \"status\": \"pending\"" |
| 31 "}"; | 44 "}"; |
| 32 const char kRemoteHostInfoEmptyResponse[] = "{}"; | 45 const char kRemoteHostInfoEmptyResponse[] = "{}"; |
| 33 } // namespace | 46 } // namespace |
| 34 | 47 |
| 35 namespace remoting { | 48 namespace remoting { |
| 36 namespace test { | 49 namespace test { |
| 37 | 50 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 57 // Sets the HTTP status and data returned for a specified URL. | 70 // Sets the HTTP status and data returned for a specified URL. |
| 58 void SetFakeResponse(const GURL& url, | 71 void SetFakeResponse(const GURL& url, |
| 59 const std::string& data, | 72 const std::string& data, |
| 60 net::HttpStatusCode code, | 73 net::HttpStatusCode code, |
| 61 net::URLRequestStatus::Status status); | 74 net::URLRequestStatus::Status status); |
| 62 | 75 |
| 63 // Used for result verification. | 76 // Used for result verification. |
| 64 RemoteHostInfo remote_host_info_; | 77 RemoteHostInfo remote_host_info_; |
| 65 | 78 |
| 66 std::string dev_service_environment_url_; | 79 std::string dev_service_environment_url_; |
| 67 std::string test_service_environment_url_; | 80 std::string dev_service_environment_url_2_; |
| 68 std::string staging_service_environment_url_; | |
| 69 | 81 |
| 70 private: | 82 private: |
| 71 net::FakeURLFetcherFactory url_fetcher_factory_; | 83 net::FakeURLFetcherFactory url_fetcher_factory_; |
| 72 scoped_ptr<base::MessageLoopForIO> message_loop_; | 84 scoped_ptr<base::MessageLoopForIO> message_loop_; |
| 73 | 85 |
| 74 DISALLOW_COPY_AND_ASSIGN(RemoteHostInfoFetcherTest); | 86 DISALLOW_COPY_AND_ASSIGN(RemoteHostInfoFetcherTest); |
| 75 }; | 87 }; |
| 76 | 88 |
| 77 void RemoteHostInfoFetcherTest::OnRemoteHostInfoRetrieved( | 89 void RemoteHostInfoFetcherTest::OnRemoteHostInfoRetrieved( |
| 78 base::Closure done_closure, | 90 base::Closure done_closure, |
| 79 const RemoteHostInfo& retrieved_remote_host_info) { | 91 const RemoteHostInfo& retrieved_remote_host_info) { |
| 80 remote_host_info_ = retrieved_remote_host_info; | 92 remote_host_info_ = retrieved_remote_host_info; |
| 81 | 93 |
| 82 done_closure.Run(); | 94 done_closure.Run(); |
| 83 } | 95 } |
| 84 | 96 |
| 85 void RemoteHostInfoFetcherTest::SetUp() { | 97 void RemoteHostInfoFetcherTest::SetUp() { |
| 86 DCHECK(!message_loop_); | 98 DCHECK(!message_loop_); |
| 87 message_loop_.reset(new base::MessageLoopForIO); | 99 message_loop_.reset(new base::MessageLoopForIO); |
| 88 | 100 |
| 89 dev_service_environment_url_ = | 101 dev_service_environment_url_ = |
| 90 GetRunApplicationUrl(kTestApplicationId, kDeveloperEnvironment); | 102 GetRunApplicationUrl(kTestApplicationId, kDeveloperEnvironment); |
| 91 SetFakeResponse(GURL(dev_service_environment_url_), | 103 SetFakeResponse(GURL(dev_service_environment_url_), |
| 92 kRemoteHostInfoEmptyResponse, net::HTTP_NOT_FOUND, | 104 kRemoteHostInfoEmptyResponse, net::HTTP_NOT_FOUND, |
| 93 net::URLRequestStatus::FAILED); | 105 net::URLRequestStatus::FAILED); |
| 94 | 106 |
| 95 test_service_environment_url_ = | 107 dev_service_environment_url_2_ = |
| 96 GetRunApplicationUrl(kTestApplicationId, kTestingEnvironment); | 108 GetRunApplicationUrl(kTestApplicationId2, kDeveloperEnvironment); |
| 97 SetFakeResponse(GURL(test_service_environment_url_), | 109 SetFakeResponse(GURL(dev_service_environment_url_2_), |
| 98 kRemoteHostInfoEmptyResponse, net::HTTP_NOT_FOUND, | |
| 99 net::URLRequestStatus::FAILED); | |
| 100 | |
| 101 staging_service_environment_url_ = | |
| 102 GetRunApplicationUrl(kTestApplicationId, kStagingEnvironment); | |
| 103 SetFakeResponse(GURL(staging_service_environment_url_), | |
| 104 kRemoteHostInfoEmptyResponse, net::HTTP_NOT_FOUND, | 110 kRemoteHostInfoEmptyResponse, net::HTTP_NOT_FOUND, |
| 105 net::URLRequestStatus::FAILED); | 111 net::URLRequestStatus::FAILED); |
| 106 } | 112 } |
| 107 | 113 |
| 108 void RemoteHostInfoFetcherTest::SetFakeResponse( | 114 void RemoteHostInfoFetcherTest::SetFakeResponse( |
| 109 const GURL& url, | 115 const GURL& url, |
| 110 const std::string& data, | 116 const std::string& data, |
| 111 net::HttpStatusCode code, | 117 net::HttpStatusCode code, |
| 112 net::URLRequestStatus::Status status) { | 118 net::URLRequestStatus::Status status) { |
| 113 url_fetcher_factory_.SetFakeResponse(url, data, code, status); | 119 url_fetcher_factory_.SetFakeResponse(url, data, code, status); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 132 | 138 |
| 133 EXPECT_TRUE(request_started); | 139 EXPECT_TRUE(request_started); |
| 134 EXPECT_TRUE(remote_host_info_.IsReadyForConnection()); | 140 EXPECT_TRUE(remote_host_info_.IsReadyForConnection()); |
| 135 EXPECT_EQ(remote_host_info_.application_id.compare(kTestApplicationId), 0); | 141 EXPECT_EQ(remote_host_info_.application_id.compare(kTestApplicationId), 0); |
| 136 EXPECT_TRUE(!remote_host_info_.host_id.empty()); | 142 EXPECT_TRUE(!remote_host_info_.host_id.empty()); |
| 137 EXPECT_TRUE(!remote_host_info_.host_jid.empty()); | 143 EXPECT_TRUE(!remote_host_info_.host_jid.empty()); |
| 138 EXPECT_TRUE(!remote_host_info_.authorization_code.empty()); | 144 EXPECT_TRUE(!remote_host_info_.authorization_code.empty()); |
| 139 EXPECT_TRUE(!remote_host_info_.shared_secret.empty()); | 145 EXPECT_TRUE(!remote_host_info_.shared_secret.empty()); |
| 140 } | 146 } |
| 141 | 147 |
| 142 TEST_F(RemoteHostInfoFetcherTest, RetrieveRemoteHostInfoFromTest) { | |
| 143 SetFakeResponse(GURL(test_service_environment_url_), | |
| 144 kRemoteHostInfoReadyResponse, net::HTTP_OK, | |
| 145 net::URLRequestStatus::SUCCESS); | |
| 146 | |
| 147 base::RunLoop run_loop; | |
| 148 RemoteHostInfoCallback remote_host_info_callback = | |
| 149 base::Bind(&RemoteHostInfoFetcherTest::OnRemoteHostInfoRetrieved, | |
| 150 base::Unretained(this), run_loop.QuitClosure()); | |
| 151 | |
| 152 RemoteHostInfoFetcher remote_host_info_fetcher; | |
| 153 bool request_started = remote_host_info_fetcher.RetrieveRemoteHostInfo( | |
| 154 kTestApplicationId, kAccessTokenValue, kTestingEnvironment, | |
| 155 remote_host_info_callback); | |
| 156 | |
| 157 run_loop.Run(); | |
| 158 | |
| 159 EXPECT_TRUE(request_started); | |
| 160 EXPECT_TRUE(remote_host_info_.IsReadyForConnection()); | |
| 161 EXPECT_EQ(remote_host_info_.application_id.compare(kTestApplicationId), 0); | |
| 162 EXPECT_TRUE(!remote_host_info_.host_id.empty()); | |
| 163 EXPECT_TRUE(!remote_host_info_.host_jid.empty()); | |
| 164 EXPECT_TRUE(!remote_host_info_.authorization_code.empty()); | |
| 165 EXPECT_TRUE(!remote_host_info_.shared_secret.empty()); | |
| 166 } | |
| 167 | |
| 168 TEST_F(RemoteHostInfoFetcherTest, RetrieveRemoteHostInfoFromStaging) { | |
| 169 SetFakeResponse(GURL(staging_service_environment_url_), | |
| 170 kRemoteHostInfoReadyResponse, net::HTTP_OK, | |
| 171 net::URLRequestStatus::SUCCESS); | |
| 172 | |
| 173 base::RunLoop run_loop; | |
| 174 RemoteHostInfoCallback remote_host_info_callback = | |
| 175 base::Bind(&RemoteHostInfoFetcherTest::OnRemoteHostInfoRetrieved, | |
| 176 base::Unretained(this), run_loop.QuitClosure()); | |
| 177 | |
| 178 RemoteHostInfoFetcher remote_host_info_fetcher; | |
| 179 bool request_started = remote_host_info_fetcher.RetrieveRemoteHostInfo( | |
| 180 kTestApplicationId, kAccessTokenValue, kStagingEnvironment, | |
| 181 remote_host_info_callback); | |
| 182 | |
| 183 run_loop.Run(); | |
| 184 | |
| 185 EXPECT_TRUE(request_started); | |
| 186 EXPECT_TRUE(remote_host_info_.IsReadyForConnection()); | |
| 187 EXPECT_EQ(remote_host_info_.application_id.compare(kTestApplicationId), 0); | |
| 188 EXPECT_TRUE(!remote_host_info_.host_id.empty()); | |
| 189 EXPECT_TRUE(!remote_host_info_.host_jid.empty()); | |
| 190 EXPECT_TRUE(!remote_host_info_.authorization_code.empty()); | |
| 191 EXPECT_TRUE(!remote_host_info_.shared_secret.empty()); | |
| 192 } | |
| 193 | |
| 194 TEST_F(RemoteHostInfoFetcherTest, RetrieveRemoteHostInfoInvalidEnvironment) { | 148 TEST_F(RemoteHostInfoFetcherTest, RetrieveRemoteHostInfoInvalidEnvironment) { |
| 195 base::RunLoop run_loop; | 149 base::RunLoop run_loop; |
| 196 RemoteHostInfoCallback remote_host_info_callback = | 150 RemoteHostInfoCallback remote_host_info_callback = |
| 197 base::Bind(&RemoteHostInfoFetcherTest::OnRemoteHostInfoRetrieved, | 151 base::Bind(&RemoteHostInfoFetcherTest::OnRemoteHostInfoRetrieved, |
| 198 base::Unretained(this), run_loop.QuitClosure()); | 152 base::Unretained(this), run_loop.QuitClosure()); |
| 199 | 153 |
| 200 RemoteHostInfoFetcher remote_host_info_fetcher; | 154 RemoteHostInfoFetcher remote_host_info_fetcher; |
| 201 bool request_started = remote_host_info_fetcher.RetrieveRemoteHostInfo( | 155 bool request_started = remote_host_info_fetcher.RetrieveRemoteHostInfo( |
| 202 kTestApplicationId, kAccessTokenValue, kUnknownEnvironment, | 156 kTestApplicationId, kAccessTokenValue, kUnknownEnvironment, |
| 203 remote_host_info_callback); | 157 remote_host_info_callback); |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 dev_run_loop.Run(); | 261 dev_run_loop.Run(); |
| 308 | 262 |
| 309 EXPECT_TRUE(dev_request_started); | 263 EXPECT_TRUE(dev_request_started); |
| 310 EXPECT_TRUE(remote_host_info_.IsReadyForConnection()); | 264 EXPECT_TRUE(remote_host_info_.IsReadyForConnection()); |
| 311 EXPECT_EQ(remote_host_info_.application_id.compare(kTestApplicationId), 0); | 265 EXPECT_EQ(remote_host_info_.application_id.compare(kTestApplicationId), 0); |
| 312 EXPECT_TRUE(!remote_host_info_.host_id.empty()); | 266 EXPECT_TRUE(!remote_host_info_.host_id.empty()); |
| 313 EXPECT_TRUE(!remote_host_info_.host_jid.empty()); | 267 EXPECT_TRUE(!remote_host_info_.host_jid.empty()); |
| 314 EXPECT_TRUE(!remote_host_info_.authorization_code.empty()); | 268 EXPECT_TRUE(!remote_host_info_.authorization_code.empty()); |
| 315 EXPECT_TRUE(!remote_host_info_.shared_secret.empty()); | 269 EXPECT_TRUE(!remote_host_info_.shared_secret.empty()); |
| 316 | 270 |
| 317 // Next, we will fetch info from the test service environment. | 271 // Next, we will fetch a different application info block from the dev |
| 318 SetFakeResponse(GURL(test_service_environment_url_), | 272 // service environment. |
| 319 kRemoteHostInfoReadyResponse, net::HTTP_OK, | 273 SetFakeResponse(GURL(dev_service_environment_url_2_), |
| 274 kRemoteHostInfoReadyResponse2, net::HTTP_OK, |
| 320 net::URLRequestStatus::SUCCESS); | 275 net::URLRequestStatus::SUCCESS); |
| 321 | 276 |
| 322 base::RunLoop test_run_loop; | 277 base::RunLoop test_run_loop; |
| 323 RemoteHostInfoCallback test_remote_host_info_callback = | 278 RemoteHostInfoCallback test_remote_host_info_callback = |
| 324 base::Bind(&RemoteHostInfoFetcherTest::OnRemoteHostInfoRetrieved, | 279 base::Bind(&RemoteHostInfoFetcherTest::OnRemoteHostInfoRetrieved, |
| 325 base::Unretained(this), test_run_loop.QuitClosure()); | 280 base::Unretained(this), test_run_loop.QuitClosure()); |
| 326 | 281 |
| 327 // Reset the state of our internal |remote_host_info_| object. | 282 // Reset the state of our internal |remote_host_info_| object. |
| 328 remote_host_info_ = RemoteHostInfo(); | 283 remote_host_info_ = RemoteHostInfo(); |
| 329 EXPECT_FALSE(remote_host_info_.IsReadyForConnection()); | 284 EXPECT_FALSE(remote_host_info_.IsReadyForConnection()); |
| 330 | 285 |
| 331 bool test_request_started = remote_host_info_fetcher.RetrieveRemoteHostInfo( | 286 bool test_request_started = remote_host_info_fetcher.RetrieveRemoteHostInfo( |
| 332 kTestApplicationId, kAccessTokenValue, kTestingEnvironment, | 287 kTestApplicationId2, kAccessTokenValue, kDeveloperEnvironment, |
| 333 test_remote_host_info_callback); | 288 test_remote_host_info_callback); |
| 334 | 289 |
| 335 test_run_loop.Run(); | 290 test_run_loop.Run(); |
| 336 | 291 |
| 337 EXPECT_TRUE(test_request_started); | 292 EXPECT_TRUE(test_request_started); |
| 338 EXPECT_TRUE(remote_host_info_.IsReadyForConnection()); | 293 EXPECT_TRUE(remote_host_info_.IsReadyForConnection()); |
| 339 EXPECT_EQ(remote_host_info_.application_id.compare(kTestApplicationId), 0); | 294 EXPECT_EQ(remote_host_info_.application_id.compare(kTestApplicationId2), 0); |
| 340 EXPECT_TRUE(!remote_host_info_.host_id.empty()); | 295 EXPECT_TRUE(!remote_host_info_.host_id.empty()); |
| 341 EXPECT_TRUE(!remote_host_info_.host_jid.empty()); | 296 EXPECT_TRUE(!remote_host_info_.host_jid.empty()); |
| 342 EXPECT_TRUE(!remote_host_info_.authorization_code.empty()); | 297 EXPECT_TRUE(!remote_host_info_.authorization_code.empty()); |
| 343 EXPECT_TRUE(!remote_host_info_.shared_secret.empty()); | 298 EXPECT_TRUE(!remote_host_info_.shared_secret.empty()); |
| 344 } | 299 } |
| 345 | 300 |
| 346 } // namespace test | 301 } // namespace test |
| 347 } // namespace remoting | 302 } // namespace remoting |
| OLD | NEW |