-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaccel_3d_test.cc
102 lines (77 loc) · 3.47 KB
/
accel_3d_test.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// Copyright 2021 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <base/files/file_util.h>
#include <gtest/gtest.h>
#include <libmems/common_types.h>
#include <libmems/iio_context.h>
#include <libmems/iio_device.h>
#include <libmems/iio_device_impl.h>
#include <libmems/test_fakes.h>
#include "mems_setup/configuration.h"
#include "mems_setup/delegate.h"
#include "mems_setup/sensor_location.h"
#include "mems_setup/test_fakes.h"
#include "mems_setup/test_helper.h"
namespace mems_setup {
namespace {
using mems_setup::testing::SensorTestBase;
static gid_t kIioserviceGroupId = 777;
constexpr int kDeviceId = 1;
constexpr char kAccelSamplingFrequency[] = "in_accel_sampling_frequency";
constexpr char kInvalidSamplingFrequency[] = "accel_sampling_frequency";
constexpr char kScanElementsString[] = "scan_elements";
constexpr char kFakeChannel[] = "in_accel_a_en";
constexpr char kInvalidChannel[] = "in_accel_a_enn";
class HidAccelerometerTest : public SensorTestBase, public ::testing::Test {
public:
HidAccelerometerTest() : SensorTestBase("accel_3d", kDeviceId) {
mock_delegate_->AddGroup(GetConfiguration()->GetGroupNameForSysfs(),
kIioserviceGroupId);
}
void CheckPermissionsAndOwnershipForFile(const base::FilePath& path,
int permission) {
uid_t user;
gid_t group;
EXPECT_TRUE(mock_delegate_->GetOwnership(path, &user, &group));
EXPECT_EQ(group, kIioserviceGroupId);
EXPECT_EQ(permission, mock_delegate_->GetPermissions(path));
}
};
TEST_F(HidAccelerometerTest, CheckPermissionsAndOwnership) {
// /sys/bus/iio/devices/iio:device1
base::FilePath sys_dev_path = mock_device_->GetPath();
// Create the files to set permissions and ownership for test.
mock_delegate_->CreateFile(sys_dev_path.Append(kAccelSamplingFrequency));
mock_delegate_->CreateFile(sys_dev_path.Append(kInvalidSamplingFrequency));
mock_delegate_->CreateFile(
sys_dev_path.Append(kScanElementsString).Append(kFakeChannel));
mock_delegate_->CreateFile(
sys_dev_path.Append(kScanElementsString).Append(kInvalidChannel));
EXPECT_TRUE(GetConfiguration()->Configure());
std::string dev_name = libmems::IioDeviceImpl::GetStringFromId(kDeviceId);
CheckPermissionsAndOwnershipForFile(
sys_dev_path.Append(kAccelSamplingFrequency),
base::FILE_PERMISSION_WRITE_BY_GROUP |
base::FILE_PERMISSION_READ_BY_GROUP);
// The file name doesn't match the regex to be set the write permission.
CheckPermissionsAndOwnershipForFile(
sys_dev_path.Append(kInvalidSamplingFrequency),
base::FILE_PERMISSION_READ_BY_GROUP);
CheckPermissionsAndOwnershipForFile(
sys_dev_path.Append(kScanElementsString).Append(kFakeChannel),
base::FILE_PERMISSION_WRITE_BY_GROUP |
base::FILE_PERMISSION_READ_BY_GROUP);
// The file name doesn't match the regex to be set the write permission.
CheckPermissionsAndOwnershipForFile(
sys_dev_path.Append(kScanElementsString).Append(kInvalidChannel),
base::FILE_PERMISSION_READ_BY_GROUP);
// /dev/iio:deviceX
base::FilePath dev_path =
base::FilePath(libmems::kDevString).Append(dev_name.c_str());
CheckPermissionsAndOwnershipForFile(dev_path,
base::FILE_PERMISSION_WRITE_BY_GROUP |
base::FILE_PERMISSION_READ_BY_GROUP);
}
} // namespace
} // namespace mems_setup