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

Side by Side Diff: telemetry/third_party/webpagereplay/rules_parser_test.py

Issue 2210063003: Rename third_party/webpagereplay to third_party/web-page-replay (Closed) Base URL: https://github.com/catapult-project/catapult@master
Patch Set: Created 4 years, 4 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 # Copyright 2015 Google Inc. All Rights Reserved.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 """Unit tests for rules_parser. Usage: ./rules_parser_test.py"""
16
17 import collections
18 import logging
19 from StringIO import StringIO
20 import unittest
21
22 import rules_parser
23
24
25 class RuleParserTest(unittest.TestCase):
26
27 @classmethod
28 def setUpClass(cls):
29 if not logging.root.handlers:
30 logging.basicConfig(level=logging.DEBUG, # Enable log_url stdout.
31 format='%(asctime)s %(levelname)s %(message)s')
32
33 def testCall(self):
34 my_rules = rules_parser.Rules(StringIO(r'''
35 [{"comment": "ignore me"},
36 {"LogUrl": {"url": "example\\.com/ss.*"}},
37 {"LogUrl": {"url": "example\\.com/blah$"}}]'''))
38 log_url = my_rules.Find('log_url')
39 self.assertEquals(True, log_url(FakeRequest(full_path='/ss'), None))
40 self.assertEquals(True, log_url(FakeRequest(full_path='/ssxxxx'), None))
41 self.assertEquals(True, log_url(FakeRequest(full_path='/blah'), None))
42 self.assertEquals(None, log_url(FakeRequest(full_path='/blahxxx'), None))
43 self.assertEquals(None, log_url(FakeRequest(full_path='/'), None))
44
45 def testImport(self):
46 my_rules = rules_parser.Rules(StringIO(r'''
47 [{"rules.LogUrl": {"url": "example\\.com/ss.*"}}]'''))
48 self.assertTrue(my_rules.Contains('log_url'))
49
50 def testRaises(self):
51 input_pairs = [
52 'bad_json',
53 '123',
54 '{}',
55 '[42]',
56 '[{12:34}]',
57 '[{"a":"b","c":"d"}]',
58 '[{"bad+rule@name":{}}]',
59 '["unallowed.Path":{}]',
60 '["NoSuchRule":{}]',
61 '["LogUrl":"bad"]',
62 '["LogUrl":{}]',
63 '["LogUrl":{"url":123}]',
64 '["LogUrl":{"url":"", "bad_arg":123}]',
65 ]
66 for input_text in input_pairs:
67 self.assertRaises(Exception, rules_parser.Rules, StringIO(input_text))
68
69
70 class FakeRequest(collections.namedtuple(
71 'FakeRequest', ('command', 'host', 'full_path', 'request_body',
72 'headers', 'is_ssl'))):
73
74 def __new__(cls, command='GET', host='example.com', full_path='/',
75 request_body=None, headers=None, is_ssl=False):
76 return super(FakeRequest, cls).__new__(
77 cls, command, host, full_path, request_body, headers or {}, is_ssl)
78
79
80 if __name__ == '__main__':
81 unittest.main()
OLDNEW
« no previous file with comments | « telemetry/third_party/webpagereplay/rules_parser.py ('k') | telemetry/third_party/webpagereplay/run_tests » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698