Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(107)

Unified Diff: syzygy/experimental/protect/protect_unittest/protect_app_unittests.cc

Issue 2535563002: Added all code for integrity check transform (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: syzygy/experimental/protect/protect_unittest/protect_app_unittests.cc
diff --git a/syzygy/experimental/protect/protect_unittest/protect_app_unittests.cc b/syzygy/experimental/protect/protect_unittest/protect_app_unittests.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ee9b7861102d4c4a395a7a664844c9c039b50777
--- /dev/null
+++ b/syzygy/experimental/protect/protect_unittest/protect_app_unittests.cc
@@ -0,0 +1,120 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "syzygy/experimental/protect/protect_lib/protect_app.h"
+
+#include "base/strings/utf_string_conversions.h"
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+#include "syzygy/core/unittest_util.h"
+#include "syzygy/pe/unittest_util.h"
+
+namespace protect {
+
+namespace {
+static wchar_t kConfigGoodExistingOutput[] =
+ L"syzygy/experimental/protect/test_data/config-good-existing-output.txt";
+
+class TestProtectApp : public ProtectApp {
+public:
+ using ProtectApp::overwrite_;
+};
+
+typedef application::Application<TestProtectApp> TestApp;
+
+class ProtectAppTest : public testing::PELibUnitTest {
+public:
+ typedef testing::PELibUnitTest Super;
+
+ ProtectAppTest()
+ : cmd_line_(base::FilePath(L"protect.exe")),
+ test_impl_(test_app_.implementation()) {
+ }
+
+ void SetUp() {
+ Super::SetUp();
+
+ logging::SetMinLogLevel(logging::LOG_ERROR);
+
+ // Setup the IO streams.
+ CreateTemporaryDir(&temp_dir_);
+ stdin_path_ = temp_dir_.Append(L"NUL");
+ stdout_path_ = temp_dir_.Append(L"stdout.txt");
+ stderr_path_ = temp_dir_.Append(L"stderr.txt");
+ InitStreams(stdin_path_, stdout_path_, stderr_path_);
+
+ ASSERT_NO_FATAL_FAILURE(ConfigureTestApp(&test_app_));
+
+ config_file_ = temp_dir_.Append(L"config.txt");
+ }
+
+ // Points the application at the fixture's command-line and IO streams.
+ template<typename TestAppType>
+ void ConfigureTestApp(TestAppType* test_app) {
+ test_app->set_command_line(&cmd_line_);
+ test_app->set_in(in());
+ test_app->set_out(out());
+ test_app->set_err(err());
+ }
+
+ // Stashes the current log-level before each test instance and restores it
+ // after each test completes.
+ testing::ScopedLogLevelSaver log_level_saver;
+
+ // @name The application under test.
+ // @{
+ TestApp test_app_;
+ TestApp::Implementation& test_impl_;
+ base::FilePath temp_dir_;
+ base::FilePath stdin_path_;
+ base::FilePath stdout_path_;
+ base::FilePath stderr_path_;
+ // @}
+
+ base::CommandLine cmd_line_;
+ base::FilePath config_file_;
+};
+
+} // namespace
+
+TEST_F(ProtectAppTest, ParseEmptyCommandLineFails) {
+ ASSERT_FALSE(test_impl_.ParseCommandLine(&cmd_line_));
+}
+
+TEST_F(ProtectAppTest, ConfigurationFailsExistingOutput) {
+ base::FilePath input_module = testing::GetOutputRelativePath(
+ testing::kTestDllName);
+ base::FilePath output_module = temp_dir_.Append(testing::kTestDllName);
+
+ config_file_ = testing::GetSrcRelativePath(kConfigGoodExistingOutput);
+ cmd_line_.AppendSwitchPath("input-image", input_module);
+ cmd_line_.AppendSwitchPath("output-image", output_module);
+ cmd_line_.AppendSwitchPath("flummox-config-path", config_file_);
+ ASSERT_TRUE(test_impl_.ParseCommandLine(&cmd_line_));
+}
+
+TEST_F(ProtectAppTest, ConfigurationLoadsExistingOutput) {
+ base::FilePath input_module = testing::GetOutputRelativePath(
+ testing::kTestDllName);
+ base::FilePath output_module = temp_dir_.Append(testing::kTestDllName);
+
+ config_file_ = testing::GetSrcRelativePath(kConfigGoodExistingOutput);
+ cmd_line_.AppendSwitchPath("input-image", input_module);
+ cmd_line_.AppendSwitchPath("output-image", output_module);
+ cmd_line_.AppendSwitchPath("flummox-config-path", config_file_);
+ cmd_line_.AppendSwitch("overwrite");
+ ASSERT_TRUE(test_impl_.ParseCommandLine(&cmd_line_));
+}
+
+} // namespace protect
« no previous file with comments | « syzygy/experimental/protect/protect_unittest/integrity_check_transform_unittests.cc ('k') | syzygy/pe/pe_file_writer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698