• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2017 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 
5 #include <gtest/gtest.h>
6 
7 #include <base/files/file_util.h>
8 #include <base/files/scoped_temp_dir.h>
9 
10 #include "policy/policy_util.h"
11 
12 namespace em = enterprise_management;
13 
14 namespace policy {
15 
16 // Test LoadPolicyFromPath returns correct values and has policy data when
17 // successful.
TEST(DevicePolicyUtilTest,LoadPolicyFromPath)18 TEST(DevicePolicyUtilTest, LoadPolicyFromPath) {
19   // Create the temporary directory.
20   base::ScopedTempDir temp_dir;
21   ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
22 
23   base::FilePath invalid_policy_data_path(temp_dir.GetPath().Append("policy"));
24   base::FilePath inexistent_file(temp_dir.GetPath().Append("policy.1"));
25   base::FilePath good_policy_data_path(temp_dir.GetPath().Append("policy.2"));
26 
27   // Create the file with invalid data.
28   std::string data = "invalid data";
29   ASSERT_TRUE(
30       base::WriteFile(invalid_policy_data_path, data.data(), data.size()));
31 
32   // Create the file with good policy data.
33   em::PolicyData policy_data;
34   policy_data.set_username("user@example.com");
35   policy_data.set_management_mode(em::PolicyData::LOCAL_OWNER);
36   policy_data.set_request_token("codepath-must-ignore-dmtoken");
37   std::string policy_blob;
38   policy_data.SerializeToString(&policy_blob);
39   ASSERT_TRUE(base::WriteFile(good_policy_data_path, policy_blob.data(),
40                               policy_blob.size()));
41 
42   std::string policy_data_str;
43   enterprise_management::PolicyFetchResponse policy;
44   EXPECT_EQ(
45       LoadPolicyResult::kInvalidPolicyData,
46       LoadPolicyFromPath(invalid_policy_data_path, &policy_data_str, &policy));
47   EXPECT_EQ(LoadPolicyResult::kFileNotFound,
48             LoadPolicyFromPath(inexistent_file, &policy_data_str, &policy));
49   EXPECT_EQ(
50       LoadPolicyResult::kSuccess,
51       LoadPolicyFromPath(good_policy_data_path, &policy_data_str, &policy));
52   ASSERT_TRUE(policy.has_policy_data());
53 }
54 
55 }  // namespace policy
56