blob: 8e1047cfc4cd9e0d24bad3accb4be28cbe44dc74 [file] [log] [blame]
// 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 "blimp/engine/app/blimp_engine_config.h"
#include <memory>
#include <string>
#include <vector>
#include "base/command_line.h"
#include "base/files/file_util.h"
#include "base/files/scoped_temp_dir.h"
#include "base/strings/stringprintf.h"
#include "blimp/common/switches.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace blimp {
namespace engine {
namespace {
// Reference client token.
static const char kTestClientAuthToken[] = "Reference client token";
class BlimpEngineConfigTest : public testing::Test {
protected:
void SetUp() override {
// Create a temporary directory and populate it with all of the switches
// If a test requires a switch's file to be missing, call
// RemoveFileForSwitch().
ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
CreateFileForSwitch(kClientAuthTokenPath, kTestClientAuthToken);
}
// Creates a file in the temp directory for a given filepath switch.
void CreateFileForSwitch(const std::string& filepath_switch,
const std::string& data) const {
ASSERT_TRUE(base::WriteFile(GetFilepathForSwitch(filepath_switch),
data.c_str(), data.size()));
}
// Removes the associated file for a given filepath switch.
void RemoveFileForSwitch(const std::string& filepath_switch) const {
base::DeleteFile(GetFilepathForSwitch(filepath_switch), false);
}
// Creates and returns a CommandLine object with specified filepath switches.
base::CommandLine CreateCommandLine(
const std::vector<std::string>& filepath_switches) {
base::CommandLine::StringVector cmd_vec = {"dummy_program"};
for (const std::string& filepath_switch : filepath_switches) {
cmd_vec.push_back(base::StringPrintf(
"--%s=%s", filepath_switch.c_str(),
GetFilepathForSwitch(filepath_switch).AsUTF8Unsafe().c_str()));
}
return base::CommandLine(cmd_vec);
}
base::FilePath GetFilepathForSwitch(
const std::string& filepath_switch) const {
return temp_dir_.GetPath().Append(filepath_switch);
}
const std::vector<std::string> all_filepath_switches_ = {
kClientAuthTokenPath};
base::ScopedTempDir temp_dir_;
};
TEST_F(BlimpEngineConfigTest, ClientAuthTokenCorrect) {
auto cmd_line = CreateCommandLine(all_filepath_switches_);
auto engine_config = BlimpEngineConfig::Create(cmd_line);
EXPECT_NE(nullptr, engine_config);
EXPECT_EQ(kTestClientAuthToken, engine_config->client_auth_token());
}
TEST_F(BlimpEngineConfigTest, ClientAuthTokenEmpty) {
RemoveFileForSwitch(kClientAuthTokenPath);
CreateFileForSwitch(kClientAuthTokenPath, " ");
auto cmd_line = CreateCommandLine(all_filepath_switches_);
auto engine_config = BlimpEngineConfig::Create(cmd_line);
EXPECT_EQ(nullptr, engine_config);
}
} // namespace
} // namespace engine
} // namespace blimp