1# Copyright 2015 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import json
6import unittest
7
8import webapp2
9import webtest
10
11from dashboard import post_data_handler
12from dashboard import testing_common
13
14_SAMPLE_POINT = {
15    'master': 'ChromiumPerf',
16    'bot': 'win7',
17    'test': 'foo/bar/baz',
18    'revision': '12345',
19    'value': '10',
20}
21
22
23class PostDataHandlerTest(testing_common.TestCase):
24
25  def setUp(self):
26    super(PostDataHandlerTest, self).setUp()
27    app = webapp2.WSGIApplication(
28        [('/whitelist_test', post_data_handler.PostDataHandler)])
29    self.testapp = webtest.TestApp(app)
30
31  def testPost_NoIPWhitelist_Authorized(self):
32    self.testapp.post('/whitelist_test', {'data': json.dumps([_SAMPLE_POINT])})
33
34  def testPost_IPNotInWhitelist_NotAuthorized(self):
35    testing_common.SetIpWhitelist(['123.45.67.89', '98.76.54.32'])
36    self.testapp.post(
37        '/whitelist_test', {'data': json.dumps([_SAMPLE_POINT])}, status=403,
38        extra_environ={'REMOTE_ADDR': '22.45.67.89'})
39
40  def testPost_IPInWhiteList_Authorized(self):
41    testing_common.SetIpWhitelist(['123.45.67.89', '98.76.54.32'])
42    self.testapp.post(
43        '/whitelist_test', {'data': json.dumps([_SAMPLE_POINT])},
44        extra_environ={'REMOTE_ADDR': '123.45.67.89'})
45
46
47if __name__ == '__main__':
48  unittest.main()
49