Home | History | Annotate | Download | only in minijail
      1 // Copyright (C) 2017 The Android Open Source Project
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //      http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 #include <string>
     16 
     17 #include <android-base/file.h>
     18 #include <android-base/unique_fd.h>
     19 
     20 #include <gtest/gtest.h>
     21 
     22 #include "minijail.h"
     23 
     24 class WritePolicyTest : public ::testing::Test
     25 {
     26   protected:
     27     const std::string base_policy_ =
     28         "read: 1\n"
     29         "write: 1\n"
     30         "rt_sigreturn: 1\n"
     31         "exit: 1\n";
     32 
     33     const std::string additional_policy_ =
     34         "mmap: 1\n"
     35         "munmap: 1\n";
     36 
     37     const std::string full_policy_ = base_policy_ + std::string("\n") + additional_policy_;
     38 };
     39 
     40 TEST_F(WritePolicyTest, OneFile)
     41 {
     42     std::string final_string;
     43     android::base::unique_fd fd(android::WritePolicyToPipe(base_policy_, std::string()));
     44     EXPECT_LE(0, fd.get());
     45     bool success = android::base::ReadFdToString(fd.get(), &final_string);
     46     EXPECT_TRUE(success);
     47     EXPECT_EQ(final_string, base_policy_);
     48 }
     49 
     50 TEST_F(WritePolicyTest, TwoFiles)
     51 {
     52     std::string final_string;
     53     android::base::unique_fd fd(android::WritePolicyToPipe(base_policy_, additional_policy_));
     54     EXPECT_LE(0, fd.get());
     55     bool success = android::base::ReadFdToString(fd.get(), &final_string);
     56     EXPECT_TRUE(success);
     57     EXPECT_EQ(final_string, full_policy_);
     58 }
     59