1// Copyright 2014 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.
4
5#include "base/files/file_path.h"
6#include "base/json/json_reader.h"
7#include "chrome/browser/local_discovery/storage/privet_filesystem_attribute_cache.h"
8#include "testing/gtest/include/gtest/gtest.h"
9
10namespace local_discovery {
11
12namespace {
13
14const char kPrivetStorageJSON[] =
15    "{"
16    " \"name\": \"foo\","
17    " \"type\": \"dir\","
18    " \"entries\" : [  "
19    " { \"name\": \"bar\", \"type\": \"dir\" },"
20    " { \"name\": \"baz.txt\", \"type\": \"file\", \"size\": 12345 }"
21    " ]}";
22
23class PrivetFileSystemAttributeCacheTest : public ::testing::Test {
24 public:
25  PrivetFileSystemAttributeCacheTest() {}
26
27  virtual ~PrivetFileSystemAttributeCacheTest() {}
28
29  PrivetFileSystemAttributeCache cache_;
30};
31
32TEST_F(PrivetFileSystemAttributeCacheTest, AllAdded) {
33  scoped_ptr<base::Value> json(base::JSONReader::Read(kPrivetStorageJSON));
34  const base::DictionaryValue* dictionary_json;
35  json->GetAsDictionary(&dictionary_json);
36
37  cache_.AddFileInfoFromJSON(
38      base::FilePath(FILE_PATH_LITERAL("/test/path/foo")), dictionary_json);
39
40  const base::File::Info* info_foo =
41      cache_.GetFileInfo(base::FilePath(FILE_PATH_LITERAL("/test/path/foo")));
42  EXPECT_TRUE(info_foo->is_directory);
43  EXPECT_FALSE(info_foo->is_symbolic_link);
44
45  const base::File::Info* info_bar = cache_.GetFileInfo(
46      base::FilePath(FILE_PATH_LITERAL("/test/path/foo/bar")));
47  EXPECT_TRUE(info_bar->is_directory);
48  EXPECT_FALSE(info_bar->is_symbolic_link);
49
50  const base::File::Info* info_baz = cache_.GetFileInfo(
51      base::FilePath(FILE_PATH_LITERAL("/test/path/foo/baz.txt")));
52  EXPECT_FALSE(info_baz->is_directory);
53  EXPECT_FALSE(info_baz->is_symbolic_link);
54  EXPECT_EQ(12345, info_baz->size);
55
56  const base::File::Info* info_notfound = cache_.GetFileInfo(
57      base::FilePath(FILE_PATH_LITERAL("/test/path/foo/notfound.txt")));
58  EXPECT_EQ(NULL, info_notfound);
59}
60
61}  // namespace
62
63}  // namespace local_discovery
64