| 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
|
|
|