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

Unified Diff: src/platform/minijail/options_unittest.cc

Issue 542124: Update minijail tests with real mocks and packaging testing deps (Closed)
Patch Set: integrate notes from cmasone Created 10 years, 11 months 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
« no previous file with comments | « src/platform/minijail/mock_options.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/platform/minijail/options_unittest.cc
diff --git a/src/platform/minijail/options_unittest.cc b/src/platform/minijail/options_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f57adefda69aeddb6f7e7d57c45e435a0821e057
--- /dev/null
+++ b/src/platform/minijail/options_unittest.cc
@@ -0,0 +1,112 @@
+// Copyright (c) 2009-2010 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Tests for minijail::Options
+#include "mock_env.h"
+#include "mock_options.h"
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+namespace chromeos {
+
+using ::testing::_; // wildcard mock matcher
+using ::testing::AtLeast; // Times modifier
+using ::testing::Invoke; // Allow concrete call redirection
+using ::testing::DefaultValue; // allow for easy default return value change
+using ::testing::Return; // mock Return action
+
+class OptionsDepsTest : public ::testing::Test {
+ public:
+ OptionsDepsTest() : options_(new minijail::MockOptions) { }
+ ~OptionsDepsTest() { }
+ void SetUp() {
+ ON_CALL(*options_, FixUpDependencies())
+ .WillByDefault(Invoke(options_.get(),
+ &minijail::MockOptions::OptionsFixUpDependencies));
+ }
+ protected:
+ scoped_ptr<minijail::MockOptions> options_;
+};
+
+TEST_F(OptionsDepsTest, NothingToCorrect) {
+ // Since all options default to false, this should just work.
+ EXPECT_TRUE(options_->FixUpDependencies());
+}
+
+TEST_F(OptionsDepsTest, MountsWithoutVfs) {
+ // Set up the case in need of correction
+ EXPECT_CALL(*options_, add_readonly_mounts())
+ .Times(1)
+ .WillOnce(Return(true));
+ EXPECT_CALL(*options_, namespace_vfs())
+ .Times(1)
+ .WillOnce(Return(false));
+ EXPECT_CALL(*options_, set_namespace_vfs(true)) // Proof of correction
+ .Times(1);
+ EXPECT_TRUE(options_->FixUpDependencies());
+}
+
+TEST_F(OptionsDepsTest, MountsWithVfs) {
+ // Setup case which should be untouched
+ EXPECT_CALL(*options_, add_readonly_mounts())
+ .Times(1)
+ .WillOnce(Return(true));
+ EXPECT_CALL(*options_, namespace_vfs())
+ .Times(1)
+ .WillOnce(Return(true));
+ EXPECT_CALL(*options_, set_namespace_vfs(_)) // Proof of correction
+ .Times(0);
+ EXPECT_TRUE(options_->FixUpDependencies());
+}
+
+TEST_F(OptionsDepsTest, NoMounts) {
+ // Setup case which should be untouched
+ EXPECT_CALL(*options_, add_readonly_mounts())
+ .Times(1)
+ .WillOnce(Return(false));
+ // VFS check should never be run since the conditional short circuits
+ EXPECT_CALL(*options_, namespace_vfs())
+ .Times(0);
+ EXPECT_CALL(*options_, set_namespace_vfs(_))
+ .Times(0);
+ EXPECT_TRUE(options_->FixUpDependencies());
+}
+
+TEST_F(OptionsDepsTest, BothSyscallEnforcements) {
+ // Case which fails
+ EXPECT_CALL(*options_, enforce_syscalls_benchmark())
+ .Times(1)
+ .WillOnce(Return(true));
+ EXPECT_CALL(*options_, enforce_syscalls_by_source())
+ .Times(1)
+ .WillOnce(Return(true));
+ EXPECT_FALSE(options_->FixUpDependencies());
+}
+
+TEST_F(OptionsDepsTest, SyscallBenchmarkOnly) {
+ EXPECT_CALL(*options_, enforce_syscalls_benchmark())
+ .Times(1)
+ .WillOnce(Return(true));
+ EXPECT_CALL(*options_, enforce_syscalls_by_source())
+ .Times(1)
+ .WillOnce(Return(false));
+ EXPECT_TRUE(options_->FixUpDependencies());
+}
+
+TEST_F(OptionsDepsTest, SyscallNoBenchmark) {
+ EXPECT_CALL(*options_, enforce_syscalls_benchmark())
+ .Times(1)
+ .WillOnce(Return(false));
+ EXPECT_CALL(*options_, enforce_syscalls_by_source())
+ .Times(0);
+ EXPECT_TRUE(options_->FixUpDependencies());
+}
+
+
+
+
+
+
+
+} // namespace chromeos
« no previous file with comments | « src/platform/minijail/mock_options.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698