Nox system test refactor (#60)
* Add basic noxfile to orchestrate system tests
* Move explicit system tests to nox
* Add cloud sdk environment automation
diff --git a/system_tests/test_default.py b/system_tests/test_default.py
index 02242e9..0e0bcc6 100644
--- a/system_tests/test_default.py
+++ b/system_tests/test_default.py
@@ -14,108 +14,17 @@
import os
-import py
-
import google.auth
-from google.auth import environment_vars
-import google.oauth2.credentials
-from google.oauth2 import service_account
+
+EXPECT_PROJECT_ID = os.environ.get('EXPECT_PROJECT_ID')
-def validate_refresh(credentials, http_request):
- if credentials.requires_scopes:
- credentials = credentials.with_scopes(['email', 'profile'])
-
- credentials.refresh(http_request)
-
- assert credentials.token
- assert credentials.valid
-
-
-def test_explicit_credentials_service_account(
- monkeypatch, service_account_file, http_request):
- monkeypatch.setitem(
- os.environ, environment_vars.CREDENTIALS, service_account_file)
-
+def test_explicit_credentials(verify_refresh):
credentials, project_id = google.auth.default()
- assert isinstance(credentials, service_account.Credentials)
- assert project_id is not None
+ if EXPECT_PROJECT_ID is not None:
+ assert project_id is not None
+ else:
+ assert project_id is None
- validate_refresh(credentials, http_request)
-
-
-def test_explicit_credentials_authorized_user(
- monkeypatch, authorized_user_file, http_request):
- monkeypatch.setitem(
- os.environ, environment_vars.CREDENTIALS, authorized_user_file)
-
- credentials, project_id = google.auth.default()
-
- assert isinstance(credentials, google.oauth2.credentials.Credentials)
- assert project_id is None
-
- validate_refresh(credentials, http_request)
-
-
-def test_explicit_credentials_explicit_project_id(
- monkeypatch, service_account_file, http_request):
- project = 'system-test-project'
- monkeypatch.setitem(
- os.environ, environment_vars.CREDENTIALS, service_account_file)
- monkeypatch.setitem(
- os.environ, environment_vars.PROJECT, project)
-
- _, project_id = google.auth.default()
-
- assert project_id == project
-
-
-def generate_cloud_sdk_config(
- tmpdir, credentials_file, active_config='default', project=None):
- tmpdir.join('active_config').write(
- '{}\n'.format(active_config), ensure=True)
-
- if project is not None:
- config_file = tmpdir.join(
- 'configurations', 'config_{}'.format(active_config))
- config_file.write(
- '[core]\nproject = {}'.format(project), ensure=True)
-
- py.path.local(credentials_file).copy(
- tmpdir.join('application_default_credentials.json'))
-
-
-def test_cloud_sdk_credentials_service_account(
- tmpdir, monkeypatch, service_account_file, http_request):
- # Create the Cloud SDK configuration tree
- project = 'system-test-project'
- generate_cloud_sdk_config(tmpdir, service_account_file, project=project)
- monkeypatch.setitem(
- os.environ, environment_vars.CLOUD_SDK_CONFIG_DIR, str(tmpdir))
-
- credentials, project_id = google.auth.default()
-
- assert isinstance(credentials, service_account.Credentials)
- assert project_id is not None
- # The project ID should be the project ID specified in the the service
- # account file, not the project in the config.
- assert project_id is not project
-
- validate_refresh(credentials, http_request)
-
-
-def test_cloud_sdk_credentials_authorized_user(
- tmpdir, monkeypatch, authorized_user_file, http_request):
- # Create the Cloud SDK configuration tree
- project = 'system-test-project'
- generate_cloud_sdk_config(tmpdir, authorized_user_file, project=project)
- monkeypatch.setitem(
- os.environ, environment_vars.CLOUD_SDK_CONFIG_DIR, str(tmpdir))
-
- credentials, project_id = google.auth.default()
-
- assert isinstance(credentials, google.oauth2.credentials.Credentials)
- assert project_id == project
-
- validate_refresh(credentials, http_request)
+ verify_refresh(credentials)