Adding Peter Thatcher to the owners file.
[chromium-blink-merge.git] / chromeos / dbus / cros_disks_client_unittest.cc
blobfc4c23f4d21417d1f7d073e97e40e6a2eecafbcf
1 // Copyright 2013 The Chromium 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.
5 #include "chromeos/dbus/cros_disks_client.h"
7 #include "base/memory/scoped_ptr.h"
8 #include "dbus/message.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "third_party/cros_system_api/dbus/service_constants.h"
12 namespace chromeos {
14 namespace {
16 // Appends a boolean entry to a dictionary of type "a{sv}"
17 void AppendBoolDictEntry(dbus::MessageWriter* array_writer,
18 const std::string& key,
19 bool value) {
20 dbus::MessageWriter entry_writer(NULL);
21 array_writer->OpenDictEntry(&entry_writer);
22 entry_writer.AppendString(key);
23 entry_writer.AppendVariantOfBool(value);
24 array_writer->CloseContainer(&entry_writer);
27 // Appends a string entry to a dictionary of type "a{sv}"
28 void AppendStringDictEntry(dbus::MessageWriter* array_writer,
29 const std::string& key,
30 const std::string& value) {
31 dbus::MessageWriter entry_writer(NULL);
32 array_writer->OpenDictEntry(&entry_writer);
33 entry_writer.AppendString(key);
34 entry_writer.AppendVariantOfString(value);
35 array_writer->CloseContainer(&entry_writer);
38 } // namespace
40 TEST(CrosDisksClientTest, DiskInfo) {
41 const std::string kDeviceFile = "/dev/sdb1";
42 const bool kDeviceIsDrive = true;
43 const bool kDeviceIsMediaAvailable = true;
44 const bool kDeviceIsMounted = true;
45 const bool kDeviceIsOnBootDevice = true;
46 const bool kDeviceIsOnRemovableDevice = true;
47 const bool kDeviceIsReadOnly = true;
48 const uint32 kDeviceMediaType = cros_disks::DEVICE_MEDIA_SD;
49 const std::string kMountPath = "/media/removable/UNTITLED";
50 const bool kDevicePresentationHide = false;
51 const uint64 kDeviceSize = 16005464064;
52 const std::string kDriveModel = "DriveModel";
53 const std::string kIdLabel = "UNTITLED";
54 const std::string kIdUuid = "XXXX-YYYY";
55 const std::string kNativePath = "/sys/devices/.../sdb/sdb1";
56 const std::string kProductId = "1234";
57 const std::string kProductName = "Product Name";
58 const std::string kVendorId = "0000";
59 const std::string kVendorName = "Vendor Name";
61 // Construct a fake response of GetDeviceProperties().
62 scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
64 dbus::MessageWriter writer(response.get());
65 dbus::MessageWriter array_writer(NULL);
66 writer.OpenArray("{sv}", &array_writer);
68 AppendStringDictEntry(&array_writer, cros_disks::kDeviceFile, kDeviceFile);
69 AppendBoolDictEntry(&array_writer, cros_disks::kDeviceIsDrive,
70 kDeviceIsDrive);
71 AppendBoolDictEntry(&array_writer, cros_disks::kDeviceIsMediaAvailable,
72 kDeviceIsMediaAvailable);
73 AppendBoolDictEntry(&array_writer, cros_disks::kDeviceIsMounted,
74 kDeviceIsMounted);
75 AppendBoolDictEntry(&array_writer, cros_disks::kDeviceIsOnBootDevice,
76 kDeviceIsOnBootDevice);
77 AppendBoolDictEntry(&array_writer, cros_disks::kDeviceIsOnRemovableDevice,
78 kDeviceIsOnRemovableDevice);
79 AppendBoolDictEntry(&array_writer, cros_disks::kDeviceIsReadOnly,
80 kDeviceIsReadOnly);
82 dbus::MessageWriter entry_writer(NULL);
83 array_writer.OpenDictEntry(&entry_writer);
84 entry_writer.AppendString(cros_disks::kDeviceMediaType);
85 entry_writer.AppendVariantOfUint32(kDeviceMediaType);
86 array_writer.CloseContainer(&entry_writer);
89 std::vector<std::string> mounted_paths;
90 mounted_paths.push_back(kMountPath);
92 dbus::MessageWriter entry_writer(NULL);
93 array_writer.OpenDictEntry(&entry_writer);
94 entry_writer.AppendString(cros_disks::kDeviceMountPaths);
95 dbus::MessageWriter variant_writer(NULL);
96 entry_writer.OpenVariant("as", &variant_writer);
97 variant_writer.AppendArrayOfStrings(mounted_paths);
98 entry_writer.CloseContainer(&variant_writer);
99 array_writer.CloseContainer(&entry_writer);
101 AppendBoolDictEntry(&array_writer, cros_disks::kDevicePresentationHide,
102 kDevicePresentationHide);
104 dbus::MessageWriter entry_writer(NULL);
105 array_writer.OpenDictEntry(&entry_writer);
106 entry_writer.AppendString(cros_disks::kDeviceSize);
107 entry_writer.AppendVariantOfUint64(kDeviceSize);
108 array_writer.CloseContainer(&entry_writer);
110 AppendStringDictEntry(&array_writer, cros_disks::kDriveModel, kDriveModel);
111 AppendStringDictEntry(&array_writer, cros_disks::kIdLabel, kIdLabel);
112 AppendStringDictEntry(&array_writer, cros_disks::kIdUuid, kIdUuid);
113 AppendStringDictEntry(&array_writer, cros_disks::kNativePath, kNativePath);
114 AppendStringDictEntry(&array_writer, cros_disks::kProductId, kProductId);
115 AppendStringDictEntry(&array_writer, cros_disks::kProductName,
116 kProductName);
117 AppendStringDictEntry(&array_writer, cros_disks::kVendorId, kVendorId);
118 AppendStringDictEntry(&array_writer, cros_disks::kVendorName, kVendorName);
120 writer.CloseContainer(&array_writer);
123 // Construct DiskInfo.
124 DiskInfo result(kDeviceFile, response.get());
125 EXPECT_EQ(kDeviceFile, result.device_path());
126 EXPECT_EQ(kDeviceIsDrive, result.is_drive());
127 EXPECT_EQ(kDeviceIsReadOnly, result.is_read_only());
128 // Use EXPECT_TRUE(kDevicePresentationHide == result.is_hidden()) instead of
129 // EXPECT_EQ(kDevicePresentationHide, result.is_hidden()) as gcc 4.7 issues
130 // the following warning on EXPECT_EQ(false, x), which is turned into an error
131 // with -Werror=conversion-null:
133 // converting 'false' to pointer type for argument 1 of
134 // 'char testing::internal::IsNullLiteralHelper(testing::internal::Secret*)'
135 EXPECT_TRUE(kDevicePresentationHide == result.is_hidden());
136 EXPECT_EQ(kDeviceIsMediaAvailable, result.has_media());
137 EXPECT_EQ(kDeviceIsOnBootDevice, result.on_boot_device());
138 EXPECT_EQ(kDeviceIsOnRemovableDevice, result.on_removable_device());
139 EXPECT_EQ(kNativePath, result.system_path());
140 EXPECT_EQ(kDeviceFile, result.file_path());
141 EXPECT_EQ(kVendorId, result.vendor_id());
142 EXPECT_EQ(kVendorName, result.vendor_name());
143 EXPECT_EQ(kProductId, result.product_id());
144 EXPECT_EQ(kProductName, result.product_name());
145 EXPECT_EQ(kDriveModel, result.drive_label());
146 EXPECT_EQ(kIdLabel, result.label());
147 EXPECT_EQ(kIdUuid, result.uuid());
148 EXPECT_EQ(kDeviceSize, result.total_size_in_bytes());
149 EXPECT_EQ(DEVICE_TYPE_SD, result.device_type());
150 EXPECT_EQ(kMountPath, result.mount_path());
153 } // namespace chromeos