summaryrefslogtreecommitdiffstats
path: root/extensions/common/test_util.cc
blob: 03b35b84801522cd6f945ee3b99549e9a9efb362 (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
56
57
58
59
// Copyright 2014 The Chromium 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 "extensions/common/test_util.h"

#include "base/json/json_reader.h"
#include "base/values.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_builder.h"
#include "extensions/common/value_builder.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace extensions {
namespace test_util {

ExtensionBuilder& BuildExtension(ExtensionBuilder& builder) {
  return builder
         .SetManifest(DictionaryBuilder()
                      .Set("name", "Test extension")
                      .Set("version", "1.0")
                      .Set("manifest_version", 2));
}

scoped_refptr<Extension> CreateEmptyExtension() {
  scoped_refptr<Extension> empty_extension(
      ExtensionBuilder()
          .SetManifest(
               DictionaryBuilder().Set("name", "Test").Set("version", "1.0"))
          .Build());
  return empty_extension;
}

scoped_refptr<Extension> CreateExtensionWithID(const std::string& id) {
  return ExtensionBuilder()
      .SetManifest(
           DictionaryBuilder().Set("name", "test").Set("version", "0.1"))
      .SetID(id)
      .Build();
}

scoped_ptr<base::DictionaryValue> ParseJsonDictionaryWithSingleQuotes(
    std::string json) {
  std::replace(json.begin(), json.end(), '\'', '"');
  std::string error_msg;
  scoped_ptr<base::Value> result(base::JSONReader::ReadAndReturnError(
      json, base::JSON_ALLOW_TRAILING_COMMAS, NULL, &error_msg));
  scoped_ptr<base::DictionaryValue> result_dict;
  if (result && result->IsType(base::Value::TYPE_DICTIONARY)) {
    result_dict.reset(static_cast<base::DictionaryValue*>(result.release()));
  } else {
    ADD_FAILURE() << "Failed to parse \"" << json << "\": " << error_msg;
    result_dict.reset(new base::DictionaryValue());
  }
  return result_dict.Pass();
}

}  // namespace test_util
}  // namespace extensions