Add a test that exercises the GCS Credentials class

We subclass the GCS Credentials class.  We can't completely test
it without either hitting the live Google cloud or substantial
mocking, but we should be able to exercise most of the functionality
we typically use.  Do that by asking it to load a token from disk
and assert that it adds that token to a fake request headers
dictionary.

This also corrects a "problem" detected by the test.  The current
super() call uses the python3 form, which is fine in that all current
uses of this code are using python3, but we still run python27 tests
on this repo, so we'll use the python2/python3 compat syntax.

Change-Id: Ifa4209617f4be52008b6294ebd10f0deb9bd6a51
This commit is contained in:
James E. Blair 2020-07-16 12:53:03 -07:00
parent c0abf5cffc
commit a488ed2cdc
3 changed files with 13 additions and 1 deletions

View File

@ -0,0 +1 @@
{"access_token": "something", "expires_in": 3599, "token_type": "Bearer"}

View File

@ -26,6 +26,7 @@ import fixtures
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from .zuul_google_storage_upload import FileList, Indexer, FileDetail from .zuul_google_storage_upload import FileList, Indexer, FileDetail
from .zuul_google_storage_upload import Credentials
FIXTURE_DIR = os.path.join(os.path.dirname(__file__), FIXTURE_DIR = os.path.join(os.path.dirname(__file__),
@ -404,3 +405,13 @@ class TestFileDetail(testtools.TestCase):
self.assertEqual(time.gmtime(0), file_detail.last_modified) self.assertEqual(time.gmtime(0), file_detail.last_modified)
self.assertEqual(0, file_detail.size) self.assertEqual(0, file_detail.size)
class TestCredential(testtools.TestCase):
def test_credential(self):
path = os.path.join(FIXTURE_DIR, 'auth.json')
headers = {}
c = Credentials(path)
c.before_request(None, None, None, headers)
self.assertEqual("Bearer something", headers['authorization'])

View File

@ -260,7 +260,7 @@ def sizeof_fmt(num, suffix='B'):
class Credentials(gce_cred.Credentials): class Credentials(gce_cred.Credentials):
def __init__(self, path): def __init__(self, path):
super().__init__() super(Credentials, self).__init__()
self._path = path self._path = path
self.refresh(None) self.refresh(None)