| 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..c9a4e5e97e50f86777e9b1dd98bf96d6b6ae1a9e
|
| --- /dev/null
|
| +++ b/remoting/test/chromoting_test_driver_environment_unittest.cc
|
| @@ -0,0 +1,189 @@
|
| +// 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 "base/files/file_path.h"
|
| +#include "remoting/test/fake_access_token_fetcher.h"
|
| +#include "remoting/test/fake_host_list_fetcher.h"
|
| +#include "remoting/test/fake_refresh_token_store.h"
|
| +#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";
|
| +const unsigned int kExpectedHostListSize = 1;
|
| +} // 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);
|
| +};
|
| +
|
| +ChromotingTestDriverEnvironmentTest::ChromotingTestDriverEnvironmentTest() {
|
| +}
|
| +
|
| +ChromotingTestDriverEnvironmentTest::~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_);
|
| +}
|
| +
|
| +TEST_F(ChromotingTestDriverEnvironmentTest, InitializeObjectWithAuthCode) {
|
| + // Pass in an auth code to initialize the environment.
|
| + EXPECT_TRUE(environment_object_->Initialize(kAuthCodeValue));
|
| +
|
| + 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_EQ(environment_object_->access_token(),
|
| + kFakeAccessTokenFetcherAccessTokenValue);
|
| +
|
| + // Should only have one host in the list.
|
| + EXPECT_EQ(environment_object_->host_list().size(), kExpectedHostListSize);
|
| + HostInfo fake_host = environment_object_->host_list().at(0);
|
| + EXPECT_EQ(fake_host.host_id, kFakeHostIdValue);
|
| + EXPECT_EQ(fake_host.host_jid, kFakeHostJidValue);
|
| + EXPECT_EQ(fake_host.host_name, kFakeHostNameValue);
|
| + EXPECT_EQ(fake_host.public_key, kFakeHostPublicKeyValue);
|
| + EXPECT_EQ(fake_host.token_url_patterns.at(0), kFakeHostFirstTokenUrlValue);
|
| + EXPECT_EQ(fake_host.token_url_patterns.at(1), kFakeHostSecondTokenUrlValue);
|
| + EXPECT_EQ(fake_host.token_url_patterns.at(2), kFakeHostThirdTokenUrlValue);
|
| +}
|
| +
|
| +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_EQ(environment_object_->access_token(),
|
| + kFakeAccessTokenFetcherAccessTokenValue);
|
| +
|
| + // Should only have one host in the list.
|
| + EXPECT_EQ(environment_object_->host_list().size(), kExpectedHostListSize);
|
| + HostInfo fake_host = environment_object_->host_list().at(0);
|
| + EXPECT_EQ(fake_host.host_id, kFakeHostIdValue);
|
| + EXPECT_EQ(fake_host.host_jid, kFakeHostJidValue);
|
| + EXPECT_EQ(fake_host.host_name, kFakeHostNameValue);
|
| + EXPECT_EQ(fake_host.public_key, kFakeHostPublicKeyValue);
|
| + EXPECT_EQ(fake_host.token_url_patterns.at(0), kFakeHostFirstTokenUrlValue);
|
| + EXPECT_EQ(fake_host.token_url_patterns.at(1), kFakeHostSecondTokenUrlValue);
|
| + EXPECT_EQ(fake_host.token_url_patterns.at(2), kFakeHostThirdTokenUrlValue);
|
| +}
|
| +
|
| +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
|
|
|