15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#!/usr/bin/env python 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (c) 2012 The Chromium Authors. All rights reserved. 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file. 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import unittest 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)from api_data_source import APIDataSource 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)from extensions_paths import CHROME_EXTENSIONS 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)from servlet import Request 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)from server_instance import ServerInstance 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifrom test_data.api_data_source.canned_master_fs import CANNED_MASTER_FS_DATA 13ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochfrom test_file_system import TestFileSystem 14ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 15424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class APIDataSourceTest(unittest.TestCase): 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def setUp(self): 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.server_instance = ServerInstance.ForTest( 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TestFileSystem(CANNED_MASTER_FS_DATA, relative_to=CHROME_EXTENSIONS)) 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) def testGet(self): 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) api_ds = APIDataSource(self.server_instance, Request.ForTest('/')) 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) jsc_view = api_ds.get('extensions').get('tester') 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) funcs_arr = [{ 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'availability': None, 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'callback': { 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'callback', 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'optional': False, 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'parameters': [{ 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'array': { 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'availability': None, 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'description': None, 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'events': [], 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'functions': [], 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'id': 'type-results-resultsType', 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'is_object': False, 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'link': { 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'TypeA', 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'ref': 'tester.TypeA', 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'text': 'TypeA' 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }, 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'resultsType', 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'properties': [] 44ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch }, 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'availability': None, 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'description': None, 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'functions': [], 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'id': 'property-callback-results', 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'is_object': False, 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'last': True, 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'results', 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'optional': None, 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'parameters': [], 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'parentName': 'callback', 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'properties': [], 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'returns': None 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }], 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'simple_type': { 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'simple_type': 'function' 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 61ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch }, 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'description': 'Gets stuff.', 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'id': 'method-get', 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'get', 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'parameters': [{ 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'availability': None, 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'choices': [{ 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'availability': None, 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'description': None, 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'events': [], 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'functions': [], 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'id': 'type-a-string', 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'is_object': False, 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'string', 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'properties': [], 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'simple_type': 'string' 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }, 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'array': { 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'availability': None, 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'description': None, 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'events': [], 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'functions': [], 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'id': 'type-strings-stringsType', 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'is_object': False, 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'stringsType', 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'properties': [], 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'simple_type': 'string' 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }, 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'availability': None, 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'description': None, 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'events': [], 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'functions': [], 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'id': 'type-a-strings', 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'is_object': False, 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'last': True, 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'strings', 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'properties': [] 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }], 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'description': 'a param', 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'functions': [], 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'id': 'property-get-a', 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'is_object': False, 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'a', 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'optional': None, 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'parameters': [], 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'parentName': 'get', 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'properties': [], 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'returns': None 110558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch }, 1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { 1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'asFunction': { 1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'callback', 1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'optional': False, 1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'parameters': [{ 1165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'array': { 1175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'availability': None, 1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'description': None, 1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'events': [], 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'functions': [], 1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'id': 'type-results-resultsType', 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'is_object': False, 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'link': { 1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'TypeA', 1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'ref': 'tester.TypeA', 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'text': 'TypeA' 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }, 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'resultsType', 1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'properties': [] 1305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }, 1315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'availability': None, 1325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'description': None, 1335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'functions': [], 1345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'id': 'property-callback-results', 1355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'is_object': False, 1365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'last': True, 1375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'results', 1385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'optional': None, 1395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'parameters': [], 1405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'parentName': 'callback', 1415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'properties': [], 1425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'returns': None 1435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }], 1445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'simple_type': { 1455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'simple_type': 'function' 146ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 1475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }, 1485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'description': None, 1495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'id': 'property-get-callback', 1505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'isCallback': True, 1515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'last': True, 1525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'callback', 1535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'optional': False, 1545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'parentName': 'get', 1555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'simple_type': 'function' 1565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }], 1575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'returns': None 1585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }] 1595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertEquals(funcs_arr, jsc_view['functions']) 1605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) types_arr = [{ 1615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'availability': None, 1625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'description': 'A cool thing.', 1635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'events': [], 1645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'functions': [], 1655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'id': 'type-TypeA', 1665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'is_object': True, 1675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'TypeA', 1685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'properties': [{ 1695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'array': { 1705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'availability': None, 1715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'description': None, 1725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'events': [], 1735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'functions': [], 1745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'id': 'type-b-bType', 1755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'is_object': False, 1765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'link': { 1775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'TypeA', 1785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'ref': 'tester.TypeA', 1795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'text': 'TypeA' 1805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }, 1815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'bType', 1825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'properties': [] 1835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }, 1845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'availability': None, 1855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'description': 'List of TypeA.', 1865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'functions': [], 1875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'id': 'property-TypeA-b', 1885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'is_object': False, 1895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': 'b', 1905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'optional': True, 1915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'parameters': [], 1925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'parentName': 'TypeA', 1935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'properties': [], 1945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'returns': None 1955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }], 1965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'simple_type': 'object' 1975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }] 1985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertEquals(types_arr, jsc_view['types']) 1993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if __name__ == '__main__': 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unittest.main() 202