aboutsummaryrefslogtreecommitdiff
path: root/policy/tests/policy_util_unittest.cc
blob: f26622f8b41f4bbeb0bbf8931cb1349a0d394d16 (plain)
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
// Copyright 2017 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <gtest/gtest.h>

#include <base/files/file_util.h>
#include <base/files/scoped_temp_dir.h>

#include "policy/policy_util.h"

namespace em = enterprise_management;

namespace policy {

// Test LoadPolicyFromPath returns correct values and has policy data when
// successful.
TEST(DevicePolicyUtilTest, LoadPolicyFromPath) {
  // Create the temporary directory.
  base::ScopedTempDir temp_dir;
  ASSERT_TRUE(temp_dir.CreateUniqueTempDir());

  base::FilePath invalid_policy_data_path(temp_dir.GetPath().Append("policy"));
  base::FilePath inexistent_file(temp_dir.GetPath().Append("policy.1"));
  base::FilePath good_policy_data_path(temp_dir.GetPath().Append("policy.2"));

  // Create the file with invalid data.
  std::string data = "invalid data";
  ASSERT_TRUE(
      base::WriteFile(invalid_policy_data_path, data.data(), data.size()));

  // Create the file with good policy data.
  em::PolicyData policy_data;
  policy_data.set_username("user@example.com");
  policy_data.set_management_mode(em::PolicyData::LOCAL_OWNER);
  policy_data.set_request_token("codepath-must-ignore-dmtoken");
  std::string policy_blob;
  policy_data.SerializeToString(&policy_blob);
  ASSERT_TRUE(base::WriteFile(good_policy_data_path, policy_blob.data(),
                              policy_blob.size()));

  std::string policy_data_str;
  enterprise_management::PolicyFetchResponse policy;
  EXPECT_EQ(
      LoadPolicyResult::kInvalidPolicyData,
      LoadPolicyFromPath(invalid_policy_data_path, &policy_data_str, &policy));
  EXPECT_EQ(LoadPolicyResult::kFileNotFound,
            LoadPolicyFromPath(inexistent_file, &policy_data_str, &policy));
  EXPECT_EQ(
      LoadPolicyResult::kSuccess,
      LoadPolicyFromPath(good_policy_data_path, &policy_data_str, &policy));
  ASSERT_TRUE(policy.has_policy_data());
}

}  // namespace policy