[presubmit] Extend depot tools auth to use luci context
Bug: 509672 Change-Id: Ie3cb2fa1a2276f1fe658cdf7b9ffb657d03556e8 Reviewed-on: https://chromium-review.googlesource.com/754340 Commit-Queue: Mun Yong Jang <myjang@google.com> Reviewed-by: Nodir Turakulov <nodir@chromium.org>changes/40/754340/27
parent
7d9d9233cb
commit
acc8e3ebaa
@ -0,0 +1,106 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright (c) 2017 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
"""Unit Tests for auth.py"""
|
||||
|
||||
import __builtin__
|
||||
import datetime
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import unittest
|
||||
import sys
|
||||
import time
|
||||
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
|
||||
from testing_support import auto_stub
|
||||
from third_party import httplib2
|
||||
from third_party import mock
|
||||
|
||||
import auth
|
||||
|
||||
|
||||
class TestGetLuciContextAccessToken(auto_stub.TestCase):
|
||||
mock_env = {'LUCI_CONTEXT': 'default/test/path'}
|
||||
|
||||
def _mock_local_auth(self, account_id, secret, rpc_port):
|
||||
self.mock(auth, '_load_luci_context', mock.Mock())
|
||||
auth._load_luci_context.return_value = {
|
||||
'local_auth': {
|
||||
'default_account_id': account_id,
|
||||
'secret': secret,
|
||||
'rpc_port': rpc_port,
|
||||
}
|
||||
}
|
||||
|
||||
def _mock_loc_server_resp(self, status, content):
|
||||
mock_resp = mock.Mock()
|
||||
mock_resp.status = status
|
||||
self.mock(httplib2.Http, 'request', mock.Mock())
|
||||
httplib2.Http.request.return_value = (mock_resp, content)
|
||||
|
||||
def test_correct_local_auth_format(self):
|
||||
self._mock_local_auth('dead', 'beef', 10)
|
||||
expiry_time = datetime.datetime.min + datetime.timedelta(minutes=60)
|
||||
resp_content = {
|
||||
'error_code': None,
|
||||
'error_message': None,
|
||||
'access_token': 'token',
|
||||
'expiry': time.mktime(expiry_time.timetuple()),
|
||||
}
|
||||
self._mock_loc_server_resp(200, json.dumps(resp_content))
|
||||
token = auth._get_luci_context_access_token(
|
||||
self.mock_env, datetime.datetime.min)
|
||||
self.assertEquals(token.token, 'token')
|
||||
|
||||
def test_incorrect_port_format(self):
|
||||
self._mock_local_auth('foo', 'bar', 'bar')
|
||||
with self.assertRaises(auth.LuciContextAuthError):
|
||||
auth._get_luci_context_access_token(self.mock_env, datetime.datetime.min)
|
||||
|
||||
def test_no_account_id(self):
|
||||
self._mock_local_auth(None, 'bar', 10)
|
||||
token = auth._get_luci_context_access_token(
|
||||
self.mock_env, datetime.datetime.min)
|
||||
self.assertIsNone(token)
|
||||
|
||||
def test_expired_token(self):
|
||||
self._mock_local_auth('dead', 'beef', 10)
|
||||
resp_content = {
|
||||
'error_code': None,
|
||||
'error_message': None,
|
||||
'access_token': 'token',
|
||||
'expiry': 1,
|
||||
}
|
||||
self._mock_loc_server_resp(200, json.dumps(resp_content))
|
||||
with self.assertRaises(auth.LuciContextAuthError):
|
||||
auth._get_luci_context_access_token(
|
||||
self.mock_env, datetime.datetime.utcfromtimestamp(1))
|
||||
|
||||
def test_incorrect_expiry_format(self):
|
||||
self._mock_local_auth('dead', 'beef', 10)
|
||||
resp_content = {
|
||||
'error_code': None,
|
||||
'error_message': None,
|
||||
'access_token': 'token',
|
||||
'expiry': 'dead',
|
||||
}
|
||||
self._mock_loc_server_resp(200, json.dumps(resp_content))
|
||||
with self.assertRaises(auth.LuciContextAuthError):
|
||||
auth._get_luci_context_access_token(self.mock_env, datetime.datetime.min)
|
||||
|
||||
def test_incorrect_response_content_format(self):
|
||||
self._mock_local_auth('dead', 'beef', 10)
|
||||
self._mock_loc_server_resp(200, '5')
|
||||
with self.assertRaises(auth.LuciContextAuthError):
|
||||
auth._get_luci_context_access_token(self.mock_env, datetime.datetime.min)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if '-v' in sys.argv:
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
unittest.main()
|
||||
Loading…
Reference in New Issue