Chromium Code Reviews| Index: remoting/test/chromoting_test_driver_environment_unittest.cc |
| diff --git a/remoting/test/chromoting_test_driver_environment_unittest.cc b/remoting/test/chromoting_test_driver_environment_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..8136f6e76e71b5619adc99da465362c183e2782c |
| --- /dev/null |
| +++ b/remoting/test/chromoting_test_driver_environment_unittest.cc |
| @@ -0,0 +1,169 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "remoting/test/chromoting_test_driver_environment.h" |
| + |
| +#include <algorithm> |
|
joedow
2015/07/16 03:00:38
I used algorithm for sorting the list of hosts to
tonychun
2015/07/16 18:46:53
Done.
|
| + |
| +#include "base/files/file_path.h" |
| +#include "remoting/test/fake_access_token_fetcher.h" |
| +#include "remoting/test/fake_app_remoting_report_issue_request.h" |
|
joedow
2015/07/16 03:00:38
Pretty sure you don't need this file...please remo
tonychun
2015/07/16 18:46:53
Done.
|
| +#include "remoting/test/fake_host_list_fetcher.h" |
| +#include "remoting/test/fake_refresh_token_store.h" |
| +#include "remoting/test/refresh_token_store.h" |
|
joedow
2015/07/16 03:00:38
I don't think this header is needed since you only
tonychun
2015/07/16 18:46:53
Done.
|
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +namespace { |
| +const char kAuthCodeValue[] = "4/892379827345jkefvkdfbv"; |
| +const char kUserNameValue[] = "remoting_user@gmail.com"; |
| +const char kHostNameValue[] = "remote_host_name"; |
| +const char kFakeHostNameValue[] = "fake_host_name"; |
| +const char kFakeHostIdValue[] = "fake_host_id"; |
| +const char kFakeHostJidValue[] = "fake_host_jid"; |
| +const char kFakeHostOfflineReasonValue[] = "fake_offline_reason"; |
| +const char kFakeHostPublicKeyValue[] = "fake_public_key"; |
| +const char kFakeHostFirstTokenUrlValue[] = "token_url_1"; |
| +const char kFakeHostSecondTokenUrlValue[] = "token_url_2"; |
| +const char kFakeHostThirdTokenUrlValue[] = "token_url_3"; |
| +} // namespace |
| + |
| +namespace remoting { |
| +namespace test { |
| + |
| +class ChromotingTestDriverEnvironmentTest : public ::testing::Test { |
| + public: |
| + ChromotingTestDriverEnvironmentTest(); |
| + ~ChromotingTestDriverEnvironmentTest() override; |
| + |
| + protected: |
| + // testing::Test interface. |
| + void SetUp() override; |
| + |
| + FakeAccessTokenFetcher fake_access_token_fetcher_; |
| + FakeRefreshTokenStore fake_token_store_; |
| + FakeHostListFetcher fake_host_list_fetcher_; |
| + |
| + scoped_ptr<ChromotingTestDriverEnvironment> environment_object_; |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(ChromotingTestDriverEnvironmentTest); |
| +}; |
| + |
| +void ChromotingTestDriverEnvironmentTest::SetUp() { |
| + ChromotingTestDriverEnvironment::EnvironmentOptions options; |
| + options.user_name = kUserNameValue; |
| + options.host_name = kHostNameValue; |
| + |
| + environment_object_.reset(new ChromotingTestDriverEnvironment(options)); |
| + |
| + std::vector<HostInfo> fake_host_list; |
| + HostInfo fake_host; |
| + fake_host.host_id = kFakeHostIdValue; |
| + fake_host.host_jid = kFakeHostJidValue; |
| + fake_host.host_name = kFakeHostNameValue; |
| + fake_host.offline_reason = kFakeHostOfflineReasonValue; |
| + fake_host.public_key = kFakeHostPublicKeyValue; |
| + fake_host.token_url_patterns.push_back(kFakeHostFirstTokenUrlValue); |
| + fake_host.token_url_patterns.push_back(kFakeHostSecondTokenUrlValue); |
| + fake_host.token_url_patterns.push_back(kFakeHostThirdTokenUrlValue); |
| + fake_host_list.push_back(fake_host); |
| + |
| + fake_host_list_fetcher_.set_retrieved_host_list(fake_host_list); |
| + |
| + environment_object_->SetAccessTokenFetcherForTest( |
| + &fake_access_token_fetcher_); |
| + environment_object_->SetRefreshTokenStoreForTest(&fake_token_store_); |
| + environment_object_->SetHostListFetcherForTest(&fake_host_list_fetcher_); |
| +} |
| + |
| +ChromotingTestDriverEnvironmentTest::ChromotingTestDriverEnvironmentTest() { |
| +} |
| + |
| +ChromotingTestDriverEnvironmentTest::~ChromotingTestDriverEnvironmentTest() { |
| +} |
| + |
| +TEST_F(ChromotingTestDriverEnvironmentTest, InitializeObjectWithAuthCode) { |
| + EXPECT_TRUE(environment_object_->Initialize(kAuthCodeValue)); |
|
joedow
2015/07/16 03:00:39
some newlines here would make this much more reada
tonychun
2015/07/16 18:46:53
Done.
|
| + EXPECT_TRUE(fake_token_store_.refresh_token_write_attempted()); |
| + EXPECT_EQ(fake_token_store_.stored_refresh_token_value(), |
| + kFakeAccessTokenFetcherRefreshTokenValue); |
| + EXPECT_EQ(environment_object_->user_name(), kUserNameValue); |
| + EXPECT_EQ(environment_object_->host_name(), kHostNameValue); |
| + EXPECT_FALSE(environment_object_->host_list().empty()); |
|
joedow
2015/07/16 03:00:39
Should be validating that the data in the host_lis
tonychun
2015/07/16 18:46:53
Done.
|
| + EXPECT_EQ(environment_object_->access_token(), |
| + kFakeAccessTokenFetcherAccessTokenValue); |
| +} |
| + |
| +TEST_F(ChromotingTestDriverEnvironmentTest, |
| + InitializeObjectWithAuthCodeFailed) { |
| + fake_access_token_fetcher_.set_fail_access_token_from_auth_code(true); |
| + |
| + EXPECT_FALSE(environment_object_->Initialize(kAuthCodeValue)); |
| + EXPECT_FALSE(fake_token_store_.refresh_token_write_attempted()); |
| +} |
| + |
| +TEST_F(ChromotingTestDriverEnvironmentTest, InitializeObjectWithRefreshToken) { |
| + // Pass in an empty auth code since we are using a refresh token. |
| + EXPECT_TRUE(environment_object_->Initialize(std::string())); |
| + |
| + // We should not write the refresh token a second time if we read from the |
| + // disk originally. |
| + EXPECT_FALSE(fake_token_store_.refresh_token_write_attempted()); |
| + |
| + // Verify the object was initialized correctly. |
| + EXPECT_EQ(environment_object_->user_name(), kUserNameValue); |
| + EXPECT_EQ(environment_object_->host_name(), kHostNameValue); |
| + EXPECT_FALSE(environment_object_->host_list().empty()); |
| + EXPECT_EQ(environment_object_->access_token(), |
| + kFakeAccessTokenFetcherAccessTokenValue); |
| +} |
| + |
| +TEST_F(ChromotingTestDriverEnvironmentTest, |
| + InitializeObjectWithRefreshTokenFailed) { |
| + fake_access_token_fetcher_.set_fail_access_token_from_refresh_token(true); |
| + |
| + // Pass in an empty auth code since we are using a refresh token. |
| + EXPECT_FALSE(environment_object_->Initialize(std::string())); |
| + EXPECT_FALSE(fake_token_store_.refresh_token_write_attempted()); |
| +} |
| + |
| +TEST_F(ChromotingTestDriverEnvironmentTest, TearDownAfterInitializeSucceeds) { |
| + // Pass in an empty auth code since we are using a refresh token. |
| + EXPECT_TRUE(environment_object_->Initialize(std::string())); |
| + |
| + // Note: We are using a static cast here because the TearDown() method is |
| + // private as it is an interface method that we only want to call |
| + // directly in tests or by the GTEST framework. |
| + static_cast<testing::Environment*>(environment_object_.get())->TearDown(); |
| +} |
| + |
| +TEST_F(ChromotingTestDriverEnvironmentTest, |
| + InitializeObjectNoAuthCodeOrRefreshToken) { |
| + // Clear out the 'stored' refresh token value. |
| + fake_token_store_.set_refresh_token_value(std::string()); |
| + |
| + // With no auth code or refresh token, then the initialization should fail. |
| + EXPECT_FALSE(environment_object_->Initialize(std::string())); |
| + EXPECT_FALSE(fake_token_store_.refresh_token_write_attempted()); |
| +} |
| + |
| +TEST_F(ChromotingTestDriverEnvironmentTest, |
| + InitializeObjectWithAuthCodeWriteFailed) { |
| + // Simulate a failure writing the token to the disk. |
| + fake_token_store_.set_refresh_token_write_succeeded(false); |
| + |
| + EXPECT_FALSE(environment_object_->Initialize(kAuthCodeValue)); |
| + EXPECT_TRUE(fake_token_store_.refresh_token_write_attempted()); |
| +} |
| + |
| +TEST_F(ChromotingTestDriverEnvironmentTest, HostListEmptyFromDirectory) { |
| + // Set the host list fetcher to return an empty list. |
| + fake_host_list_fetcher_.set_retrieved_host_list(std::vector<HostInfo>()); |
| + |
| + EXPECT_FALSE(environment_object_->Initialize(kAuthCodeValue)); |
| + EXPECT_TRUE(fake_token_store_.refresh_token_write_attempted()); |
| +} |
| + |
| +} // namespace test |
| +} // namespace remoting |