Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(397)

Side by Side Diff: chrome/common/extensions/docs/server2/owners_data_source_test.py

Issue 453713002: Docserver: Generate a table of extension/app API owners (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: mlg rebasing Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright 2014 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.
5
6 import unittest
7
8 from owners_data_source import ParseOwnersFile, OwnersDataSource
9 from server_instance import ServerInstance
10 from servlet import Request
11 from test_file_system import TestFileSystem
12
13
14 _TEST_FS = {
15 'chrome': {
16 'browser': {
17 'extensions': {
18 'OWNERS': '\n'.join([
19 '# Core owners.',
20 'satsuki@revocs.tld'
21 ]),
22 'api': {
23 'some_api': {
24 'OWNERS': '\n'.join([
25 'matoi@owner.tld'
26 ]),
27 'some_api.cc': ''
28 },
29 'another_api': {
30 'another_api.cc': '',
31 'another_api.h': ''
32 },
33 'moar_apis': {
34 'OWNERS': '\n'.join([
35 '# For editing moar_apis.',
36 'satsuki@revocs.tld'
37 ])
38 }
39 }
40 }
41 }
42 },
43 'extensions': {
44 'browser': {
45 'api': {
46 'a_different_api': {
47 'OWNERS': '\n'.join([
48 '# Hallo!',
49 'nonon@owner.tld',
50 'matoi@owner.tld'
51 ])
52 }
53 }
54 }
55 }
56 }
57
58
59 class OwnersDataSourceTest(unittest.TestCase):
60 def setUp(self):
61 server_instance = ServerInstance.ForTest(
62 file_system=TestFileSystem(_TEST_FS))
63 # Don't randomize the owners to avoid testing issues.
64 self._owners_ds = OwnersDataSource(server_instance,
65 Request.ForTest('/'),
66 randomize=False)
67
68 def testParseOwnersFile(self):
69 owners_content = '\n'.join([
70 'satsuki@revocs.tld',
71 'mankanshoku@owner.tld',
72 '',
73 'matoi@owner.tld'
74 ])
75 owners, notes = ParseOwnersFile(owners_content, randomize=False)
76 # The order of the owners list should reflect the order of the owners file.
77 self.assertEqual(owners, [
78 {
79 'email': 'satsuki@revocs.tld',
80 'username': 'satsuki'
81 },
82 {
83 'email': 'mankanshoku@owner.tld',
84 'username': 'mankanshoku'
85 },
86 {
87 'email': 'matoi@owner.tld',
88 'username': 'matoi',
89 'last': True
90 }
91 ])
92 self.assertEqual(notes, '')
93
94 owners_content_with_comments = '\n'.join([
95 '# This is a comment concerning this file',
96 '# that should not be ignored.',
97 'matoi@owner.tld',
98 'mankanshoku@owner.tld',
99 '',
100 '# Only bug satsuki if matoi or mankanshoku are unavailable.',
101 'satsuki@revocs.tld'
102 ])
103 owners, notes = ParseOwnersFile(owners_content_with_comments,
104 randomize=False)
105 self.assertEqual(owners, [
106 {
107 'email': 'matoi@owner.tld',
108 'username': 'matoi'
109 },
110 {
111 'email': 'mankanshoku@owner.tld',
112 'username': 'mankanshoku'
113 },
114 {
115 'email': 'satsuki@revocs.tld',
116 'username': 'satsuki',
117 'last': True
118 }
119 ])
120 self.assertEqual(notes, '\n'.join([
121 'This is a comment concerning this file',
122 'that should not be ignored.',
123 'Only bug satsuki if matoi or mankanshoku are unavailable.'
124 ]))
125
126
127 def testCollectOwners(self):
128 # NOTE: Order matters. The list should be sorted by 'apiName'.
129 self.assertEqual(self._owners_ds.get('apis'), [{
130 'apiName': 'Core Extensions/Apps Owners',
131 'owners': [
132 {
133 'email': 'satsuki@revocs.tld',
134 'username': 'satsuki',
135 'last': True
136 }
137 ],
138 'notes': 'Core owners.',
139 'id': 'core'
140 },
141 {
142 'apiName': 'a_different_api',
143 'owners': [
144 {
145 'email': 'nonon@owner.tld',
146 'username': 'nonon'
147 },
148 {
149 'email': 'matoi@owner.tld',
150 'username': 'matoi',
151 'last': True
152 }
153 ],
154 'notes': 'Hallo!',
155 'id': 'a_different_api'
156 },
157 {
158 'apiName': 'another_api',
159 'owners': [],
160 'notes': 'Use one of the Core Extensions/Apps Owners.',
161 'id': 'another_api'
162 },
163 {
164 'apiName': 'moar_apis',
165 'owners': [
166 {
167 'email': 'satsuki@revocs.tld',
168 'username': 'satsuki',
169 'last': True
170 }
171 ],
172 'notes': 'For editing moar_apis.',
173 'id': 'moar_apis'
174 },
175 {
176 'apiName': 'some_api',
177 'owners': [
178 {
179 'email': 'matoi@owner.tld',
180 'username': 'matoi',
181 'last': True
182 }
183 ],
184 'notes': '',
185 'id': 'some_api'
186 }])
187
188 if __name__ == '__main__':
189 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698