Enable Enterprise enrollment on desktop builds.
[chromium-blink-merge.git] / chrome / common / extensions / docs / server2 / reference_resolver_test.py
blobb35567a628120ae008e92acf1d30041a26dd9711
1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
6 import os
7 import unittest
9 from future import Future
10 from reference_resolver import ReferenceResolver
11 from test_object_store import TestObjectStore
12 from test_util import Server2Path
13 from third_party.json_schema_compiler.model import Namespace
16 _TEST_DATA = {
17 'baz': {
18 'namespace': 'baz',
19 'description': '',
20 'types': [
22 'id': 'baz_t1',
23 'type': 'any',
26 'id': 'baz_t2',
27 'type': 'any',
30 'id': 'baz_t3',
31 'type': 'any',
34 'functions': [
36 'name': 'baz_f1',
37 'type': 'function'
40 'name': 'baz_f2',
41 'type': 'function'
44 'name': 'baz_f3',
45 'type': 'function'
48 'events': [
50 'name': 'baz_e1',
51 'type': 'function'
54 'name': 'baz_e2',
55 'type': 'function'
58 'name': 'baz_e3',
59 'type': 'function'
62 'properties': {
63 'baz_p1': {'type': 'any'},
64 'baz_p2': {'type': 'any'},
65 'baz_p3': {'type': 'any'}
68 'bar.bon': {
69 'namespace': 'bar.bon',
70 'description': '',
71 'types': [
73 'id': 'bar_bon_t1',
74 'type': 'any',
77 'id': 'bar_bon_t2',
78 'type': 'any',
81 'id': 'bar_bon_t3',
82 'type': 'any',
85 'functions': [
87 'name': 'bar_bon_f1',
88 'type': 'function'
91 'name': 'bar_bon_f2',
92 'type': 'function'
95 'name': 'bar_bon_f3',
96 'type': 'function'
99 'events': [
101 'name': 'bar_bon_e1',
102 'type': 'function'
105 'name': 'bar_bon_e2',
106 'type': 'function'
109 'name': 'bar_bon_e3',
110 'type': 'function'
113 'properties': {
114 'bar_bon_p1': {'type': 'any'},
115 'bar_bon_p2': {'type': 'any'},
116 'bar_bon_p3': {'type': 'any'}
119 'bar': {
120 'namespace': 'bar',
121 'description': '',
122 'types': [
124 'id': 'bar_t1',
125 'type': 'any',
126 'properties': {
127 'bar_t1_p1': {
128 'type': 'any'
133 'id': 'bar_t2',
134 'type': 'any',
135 'properties': {
136 'bar_t2_p1': {
137 'type': 'any'
142 'id': 'bar_t3',
143 'type': 'any',
146 'id': 'bon',
147 'type': 'any'
150 'functions': [
152 'name': 'bar_f1',
153 'type': 'function'
156 'name': 'bar_f2',
157 'type': 'function'
160 'name': 'bar_f3',
161 'type': 'function'
164 'events': [
166 'name': 'bar_e1',
167 'type': 'function'
170 'name': 'bar_e2',
171 'type': 'function'
174 'name': 'bar_e3',
175 'type': 'function'
178 'properties': {
179 'bar_p1': {'type': 'any'},
180 'bar_p2': {'type': 'any'},
181 'bar_p3': {'$ref': 'bar_t1'}
184 'foo': {
185 'namespace': 'foo',
186 'description': '',
187 'types': [
189 'id': 'foo_t1',
190 'type': 'any',
193 'id': 'foo_t2',
194 'type': 'any',
197 'id': 'foo_t3',
198 'type': 'any',
199 'events': [
201 'name': 'foo_t3_e1',
202 'type': 'function'
207 'functions': [
209 'name': 'foo_f1',
210 'type': 'function'
213 'name': 'foo_f2',
214 'type': 'function'
217 'name': 'foo_f3',
218 'type': 'function'
221 'events': [
223 'name': 'foo_e1',
224 'type': 'function'
227 'name': 'foo_e2',
228 'type': 'function'
231 'name': 'foo_e3',
232 'type': 'function'
235 'properties': {
236 'foo_p1': {'$ref': 'foo_t3'},
237 'foo_p2': {'type': 'any'},
238 'foo_p3': {'type': 'any'}
244 class _FakeAPIModels(object):
245 def __init__(self, apis):
246 self._apis = apis
248 def GetNames(self):
249 return self._apis.keys()
251 def GetModel(self, name):
252 return Future(value=Namespace(self._apis[name], 'fake/path.json'))
255 class ReferenceResolverTest(unittest.TestCase):
256 def setUp(self):
257 self._base_path = Server2Path('test_data', 'test_json')
259 def _ReadLocalFile(self, filename):
260 with open(os.path.join(self._base_path, filename), 'r') as f:
261 return f.read()
263 def testGetLink(self):
264 resolver = ReferenceResolver(_FakeAPIModels(_TEST_DATA),
265 TestObjectStore('test'))
266 self.assertEqual({
267 'href': 'foo',
268 'text': 'foo',
269 'name': 'foo'
270 }, resolver.GetLink('foo', namespace='baz'))
271 self.assertEqual({
272 'href': 'foo#type-foo_t1',
273 'text': 'foo.foo_t1',
274 'name': 'foo_t1'
275 }, resolver.GetLink('foo.foo_t1', namespace='baz'))
276 self.assertEqual({
277 'href': 'baz#event-baz_e1',
278 'text': 'baz_e1',
279 'name': 'baz_e1'
280 }, resolver.GetLink('baz.baz_e1', namespace='baz'))
281 self.assertEqual({
282 'href': 'baz#event-baz_e1',
283 'text': 'baz_e1',
284 'name': 'baz_e1'
285 }, resolver.GetLink('baz_e1', namespace='baz'))
286 self.assertEqual({
287 'href': 'foo#method-foo_f1',
288 'text': 'foo.foo_f1',
289 'name': 'foo_f1'
290 }, resolver.GetLink('foo.foo_f1', namespace='baz'))
291 self.assertEqual({
292 'href': 'foo#property-foo_p3',
293 'text': 'foo.foo_p3',
294 'name': 'foo_p3'
295 }, resolver.GetLink('foo.foo_p3', namespace='baz'))
296 self.assertEqual({
297 'href': 'bar.bon#type-bar_bon_t3',
298 'text': 'bar.bon.bar_bon_t3',
299 'name': 'bar_bon_t3'
300 }, resolver.GetLink('bar.bon.bar_bon_t3', namespace='baz'))
301 self.assertEqual({
302 'href': 'bar.bon#property-bar_bon_p3',
303 'text': 'bar_bon_p3',
304 'name': 'bar_bon_p3'
305 }, resolver.GetLink('bar_bon_p3', namespace='bar.bon'))
306 self.assertEqual({
307 'href': 'bar.bon#property-bar_bon_p3',
308 'text': 'bar_bon_p3',
309 'name': 'bar_bon_p3'
310 }, resolver.GetLink('bar.bon.bar_bon_p3', namespace='bar.bon'))
311 self.assertEqual({
312 'href': 'bar#event-bar_e2',
313 'text': 'bar_e2',
314 'name': 'bar_e2'
315 }, resolver.GetLink('bar.bar_e2', namespace='bar'))
316 self.assertEqual({
317 'href': 'bar#type-bon',
318 'text': 'bon',
319 'name': 'bon'
320 }, resolver.GetLink('bar.bon', namespace='bar'))
321 self.assertEqual({
322 'href': 'foo#event-foo_t3-foo_t3_e1',
323 'text': 'foo_t3.foo_t3_e1',
324 'name': 'foo_t3_e1'
325 }, resolver.GetLink('foo_t3.foo_t3_e1', namespace='foo'))
326 self.assertEqual({
327 'href': 'foo#event-foo_t3-foo_t3_e1',
328 'text': 'foo_t3.foo_t3_e1',
329 'name': 'foo_t3_e1'
330 }, resolver.GetLink('foo.foo_t3.foo_t3_e1', namespace='foo'))
331 self.assertEqual({
332 'href': 'foo#event-foo_t3-foo_t3_e1',
333 'text': 'foo_t3.foo_t3_e1',
334 'name': 'foo_t3_e1'
335 }, resolver.GetLink('foo.foo_p1.foo_t3_e1', namespace='foo'))
336 self.assertEqual({
337 'href': 'bar#property-bar_t1-bar_t1_p1',
338 'text': 'bar.bar_t1.bar_t1_p1',
339 'name': 'bar_t1_p1'
340 }, resolver.GetLink('bar.bar_p3.bar_t1_p1', namespace='foo'))
341 self.assertEqual({
342 'href': 'bar#property-bar_t1-bar_t1_p1',
343 'text': 'bar_t1.bar_t1_p1',
344 'name': 'bar_t1_p1'
345 }, resolver.GetLink('bar_p3.bar_t1_p1', namespace='bar'))
346 self.assertEqual(
347 None,
348 resolver.GetLink('bar.bar_p3.bar_t2_p1', namespace='bar'))
349 self.assertEqual(
350 None,
351 resolver.GetLink('bar.bon.bar_e3', namespace='bar'))
352 self.assertEqual(
353 None,
354 resolver.GetLink('bar_p3', namespace='baz.bon'))
355 self.assertEqual(
356 None,
357 resolver.GetLink('falafel.faf', namespace='a'))
358 self.assertEqual(
359 None,
360 resolver.GetLink('bar_p3', namespace='foo'))
362 if __name__ == '__main__':
363 unittest.main()