Ben Chan | e31d2aa | 2011-06-15 13:52:59 -0700 | [diff] [blame] | 1 | // Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
Alex Deymo | 4527b9c | 2014-11-10 19:55:35 -0800 | [diff] [blame] | 5 | #include "cros-disks/mount_options.h" |
| 6 | |
Ben Chan | e31d2aa | 2011-06-15 13:52:59 -0700 | [diff] [blame] | 7 | #include <sys/mount.h> |
| 8 | |
| 9 | #include <string> |
| 10 | #include <vector> |
| 11 | |
Sergei Datsenko | f5553d1 | 2020-11-25 07:51:59 +1100 | [diff] [blame] | 12 | #include <gmock/gmock.h> |
Ben Chan | e31d2aa | 2011-06-15 13:52:59 -0700 | [diff] [blame] | 13 | #include <gtest/gtest.h> |
| 14 | |
Ben Chan | e31d2aa | 2011-06-15 13:52:59 -0700 | [diff] [blame] | 15 | namespace cros_disks { |
| 16 | |
Sergei Datsenko | f5553d1 | 2020-11-25 07:51:59 +1100 | [diff] [blame] | 17 | using testing::ElementsAre; |
| 18 | |
Sergei Datsenko | 3928f78 | 2020-12-31 09:14:04 +1100 | [diff] [blame] | 19 | TEST(MountOptionsTest, IsReadOnlyMount) { |
Sergei Datsenko | f5553d1 | 2020-11-25 07:51:59 +1100 | [diff] [blame] | 20 | EXPECT_FALSE(IsReadOnlyMount({})); |
| 21 | EXPECT_FALSE(IsReadOnlyMount({"foo", "bar"})); |
| 22 | EXPECT_TRUE(IsReadOnlyMount({"ro"})); |
| 23 | EXPECT_FALSE(IsReadOnlyMount({"ro", "rw"})); |
| 24 | EXPECT_TRUE(IsReadOnlyMount({"foo", "ro", "bar", "rw", "ro", "baz"})); |
| 25 | } |
| 26 | |
Sergei Datsenko | 3928f78 | 2020-12-31 09:14:04 +1100 | [diff] [blame] | 27 | TEST(MountOptionsTest, GetParamValue) { |
Sergei Datsenko | f5553d1 | 2020-11-25 07:51:59 +1100 | [diff] [blame] | 28 | std::string value; |
| 29 | EXPECT_FALSE(GetParamValue({}, "foo", &value)); |
| 30 | EXPECT_TRUE(GetParamValue({"a=b", "foo=bar", "baz", "x=y"}, "foo", &value)); |
| 31 | EXPECT_EQ("bar", value); |
| 32 | EXPECT_FALSE(GetParamValue({"foo"}, "foo", &value)); |
| 33 | EXPECT_TRUE(GetParamValue({"foo=bar", "foo=baz"}, "foo", &value)); |
| 34 | EXPECT_EQ("baz", value); |
| 35 | } |
| 36 | |
Sergei Datsenko | 3928f78 | 2020-12-31 09:14:04 +1100 | [diff] [blame] | 37 | TEST(MountOptionsTest, SetParamValue) { |
Sergei Datsenko | f5553d1 | 2020-11-25 07:51:59 +1100 | [diff] [blame] | 38 | std::vector<std::string> params; |
| 39 | SetParamValue(¶ms, "foo", "bar"); |
| 40 | SetParamValue(¶ms, "baz", ""); |
| 41 | EXPECT_THAT(params, ElementsAre("foo=bar", "baz=")); |
| 42 | } |
| 43 | |
Sergei Datsenko | 7e7c764 | 2021-01-08 19:15:34 +1100 | [diff] [blame] | 44 | TEST(MountOptionsTest, HasExactParam) { |
| 45 | EXPECT_TRUE(HasExactParam({"abc", "foo", "bar=baz"}, "foo")); |
| 46 | EXPECT_FALSE(HasExactParam({"abc", "foo", "bar=baz"}, "bar")); |
| 47 | } |
| 48 | |
| 49 | TEST(MountOptionsTest, RemoveParamsEqualTo) { |
| 50 | std::vector<std::string> params = {"abc", "foo", "bar=baz", "abc"}; |
| 51 | EXPECT_EQ(0, RemoveParamsEqualTo(¶ms, "bar")); |
| 52 | EXPECT_THAT(params, ElementsAre("abc", "foo", "bar=baz", "abc")); |
| 53 | EXPECT_EQ(1, RemoveParamsEqualTo(¶ms, "foo")); |
| 54 | EXPECT_THAT(params, ElementsAre("abc", "bar=baz", "abc")); |
| 55 | EXPECT_EQ(2, RemoveParamsEqualTo(¶ms, "abc")); |
| 56 | EXPECT_THAT(params, ElementsAre("bar=baz")); |
| 57 | } |
| 58 | |
| 59 | TEST(MountOptionsTest, RemoveParamsWithSameName) { |
| 60 | std::vector<std::string> params = {"abc", "foo=0", "bar=baz", "foo=1"}; |
| 61 | EXPECT_EQ(0, RemoveParamsWithSameName(¶ms, "abc")); |
| 62 | EXPECT_THAT(params, ElementsAre("abc", "foo=0", "bar=baz", "foo=1")); |
| 63 | EXPECT_EQ(1, RemoveParamsWithSameName(¶ms, "bar")); |
| 64 | EXPECT_THAT(params, ElementsAre("abc", "foo=0", "foo=1")); |
| 65 | EXPECT_EQ(2, RemoveParamsWithSameName(¶ms, "foo")); |
| 66 | EXPECT_THAT(params, ElementsAre("abc")); |
| 67 | } |
| 68 | |
Sergei Datsenko | 1bb0bdc | 2021-02-17 11:26:43 +1100 | [diff] [blame] | 69 | TEST(MountOptionsTest, JoinParamsIntoOptions) { |
| 70 | std::string result; |
| 71 | |
| 72 | EXPECT_TRUE(JoinParamsIntoOptions({}, &result)); |
| 73 | EXPECT_EQ("", result); |
| 74 | |
| 75 | EXPECT_TRUE(JoinParamsIntoOptions({"foo"}, &result)); |
| 76 | EXPECT_EQ("foo", result); |
| 77 | |
| 78 | EXPECT_TRUE(JoinParamsIntoOptions({"foo", "bar=baz", "abc=123"}, &result)); |
| 79 | EXPECT_EQ("foo,bar=baz,abc=123", result); |
| 80 | |
| 81 | EXPECT_FALSE(JoinParamsIntoOptions({"foo", "bar,zoo"}, &result)); |
| 82 | |
| 83 | EXPECT_FALSE(JoinParamsIntoOptions({"foo", "bar=baz,zoo"}, &result)); |
| 84 | } |
| 85 | |
Ben Chan | e31d2aa | 2011-06-15 13:52:59 -0700 | [diff] [blame] | 86 | } // namespace cros_disks |