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