blob: 11c398b97423ddf615a7fc778d7a6d6f8307dad2 [file] [log] [blame]
Christopher Wilcox7e152582020-09-28 15:27:20 -07001# Copyright 2020 Google LLC
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -07002#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15"""Noxfile for automating system tests.
16
17This file handles setting up environments needed by the system tests. This
18separates the tests from their environment configuration.
19
20See the `nox docs`_ for details on how this file works:
21
22.. _nox docs: http://nox.readthedocs.io/en/latest/
23"""
24
25import os
Jon Wayne Parrottb551ef22016-10-28 12:35:15 -070026import subprocess
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -070027
28from nox.command import which
Bu Sun Kim65e33c02019-10-25 10:45:00 -070029import nox
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -070030import py.path
31
Jon Wayne Parrottb551ef22016-10-28 12:35:15 -070032HERE = os.path.abspath(os.path.dirname(__file__))
Bu Sun Kim621f54b2021-01-22 13:43:41 -070033LIBRARY_DIR = os.path.abspath(os.path.dirname(HERE))
Bu Sun Kim9eec0912019-10-21 17:04:21 -070034DATA_DIR = os.path.join(HERE, "data")
35SERVICE_ACCOUNT_FILE = os.path.join(DATA_DIR, "service_account.json")
36AUTHORIZED_USER_FILE = os.path.join(DATA_DIR, "authorized_user.json")
37EXPLICIT_CREDENTIALS_ENV = "GOOGLE_APPLICATION_CREDENTIALS"
38EXPLICIT_PROJECT_ENV = "GOOGLE_CLOUD_PROJECT"
39EXPECT_PROJECT_ENV = "EXPECT_PROJECT_ID"
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -070040
Bu Sun Kim9eec0912019-10-21 17:04:21 -070041SKIP_GAE_TEST_ENV = "SKIP_APP_ENGINE_SYSTEM_TEST"
42GAE_APP_URL_TMPL = "https://{}-dot-{}.appspot.com"
43GAE_TEST_APP_SERVICE = "google-auth-system-tests"
Jon Wayne Parrottb551ef22016-10-28 12:35:15 -070044
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -070045# The download location for the Cloud SDK
Bu Sun Kim9eec0912019-10-21 17:04:21 -070046CLOUD_SDK_DIST_FILENAME = "google-cloud-sdk.tar.gz"
47CLOUD_SDK_DOWNLOAD_URL = "https://dl.google.com/dl/cloudsdk/release/{}".format(
48 CLOUD_SDK_DIST_FILENAME
49)
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -070050
51# This environment variable is recognized by the Cloud SDK and overrides
52# the location of the SDK's configuration files (which is usually at
53# ${HOME}/.config).
Bu Sun Kim9eec0912019-10-21 17:04:21 -070054CLOUD_SDK_CONFIG_ENV = "CLOUDSDK_CONFIG"
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -070055
56# If set, this is where the environment setup will install the Cloud SDK.
57# If unset, it will download the SDK to a temporary directory.
Bu Sun Kim9eec0912019-10-21 17:04:21 -070058CLOUD_SDK_ROOT = os.environ.get("CLOUD_SDK_ROOT")
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -070059
60if CLOUD_SDK_ROOT is not None:
61 CLOUD_SDK_ROOT = py.path.local(CLOUD_SDK_ROOT)
62 CLOUD_SDK_ROOT.ensure(dir=True) # Makes sure the directory exists.
63else:
64 CLOUD_SDK_ROOT = py.path.local.mkdtemp()
65
66# The full path the cloud sdk install directory
Bu Sun Kim9eec0912019-10-21 17:04:21 -070067CLOUD_SDK_INSTALL_DIR = CLOUD_SDK_ROOT.join("google-cloud-sdk")
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -070068
69# The full path to the gcloud cli executable.
Bu Sun Kim9eec0912019-10-21 17:04:21 -070070GCLOUD = str(CLOUD_SDK_INSTALL_DIR.join("bin", "gcloud"))
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -070071
72# gcloud requires Python 2 and doesn't work on 3, so we need to tell it
73# where to find 2 when we're running in a 3 environment.
Bu Sun Kim9eec0912019-10-21 17:04:21 -070074CLOUD_SDK_PYTHON_ENV = "CLOUDSDK_PYTHON"
75CLOUD_SDK_PYTHON = which("python2", None)
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -070076
77# Cloud SDK helpers
78
79
80def install_cloud_sdk(session):
81 """Downloads and installs the Google Cloud SDK."""
82 # Configure environment variables needed by the SDK.
83 # This sets the config root to the tests' config root. This prevents
84 # our tests from clobbering a developer's configuration when running
85 # these tests locally.
86 session.env[CLOUD_SDK_CONFIG_ENV] = str(CLOUD_SDK_ROOT)
87 # This tells gcloud which Python interpreter to use (always use 2.7)
88 session.env[CLOUD_SDK_PYTHON_ENV] = CLOUD_SDK_PYTHON
Jon Wayne Parrott0c09c732017-03-24 12:10:44 -070089 # This set the $PATH for the subprocesses so they can find the gcloud
90 # executable.
Bu Sun Kim9eec0912019-10-21 17:04:21 -070091 session.env["PATH"] = (
92 str(CLOUD_SDK_INSTALL_DIR.join("bin")) + os.pathsep + os.environ["PATH"]
93 )
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -070094
Jon Wayne Parrott87161412017-03-01 09:28:15 -080095 # If gcloud cli executable already exists, just update it.
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -070096 if py.path.local(GCLOUD).exists():
Bu Sun Kim9eec0912019-10-21 17:04:21 -070097 session.run(GCLOUD, "components", "update", "-q")
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -070098 return
99
100 tar_path = CLOUD_SDK_ROOT.join(CLOUD_SDK_DIST_FILENAME)
101
102 # Download the release.
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700103 session.run("wget", CLOUD_SDK_DOWNLOAD_URL, "-O", str(tar_path), silent=True)
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700104
105 # Extract the release.
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700106 session.run("tar", "xzf", str(tar_path), "-C", str(CLOUD_SDK_ROOT))
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700107 session.run(tar_path.remove)
108
109 # Run the install script.
110 session.run(
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700111 str(CLOUD_SDK_INSTALL_DIR.join("install.sh")),
112 "--usage-reporting",
113 "false",
114 "--path-update",
115 "false",
116 "--command-completion",
117 "false",
118 silent=True,
119 )
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700120
121
122def copy_credentials(credentials_path):
123 """Copies credentials into the SDK root as the application default
124 credentials."""
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700125 dest = CLOUD_SDK_ROOT.join("application_default_credentials.json")
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700126 if dest.exists():
127 dest.remove()
128 py.path.local(credentials_path).copy(dest)
129
130
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700131def configure_cloud_sdk(session, application_default_credentials, project=False):
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700132 """Installs and configures the Cloud SDK with the given application default
133 credentials.
134
135 If project is True, then a project will be set in the active config.
136 If it is false, this will ensure no project is set.
137 """
138 install_cloud_sdk(session)
139
Jon Wayne Parrott0c09c732017-03-24 12:10:44 -0700140 # Setup the service account as the default user account. This is
141 # needed for the project ID detection to work. Note that this doesn't
142 # change the application default credentials file, which is user
143 # credentials instead of service account credentials sometimes.
144 session.run(
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700145 GCLOUD, "auth", "activate-service-account", "--key-file", SERVICE_ACCOUNT_FILE
146 )
Jon Wayne Parrott0c09c732017-03-24 12:10:44 -0700147
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700148 if project:
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700149 session.run(GCLOUD, "config", "set", "project", "example-project")
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700150 else:
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700151 session.run(GCLOUD, "config", "unset", "project")
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700152
153 # Copy the credentials file to the config root. This is needed because
154 # unfortunately gcloud doesn't provide a clean way to tell it to use
155 # a particular set of credentials. However, this does verify that gcloud
156 # also considers the credentials valid by calling application-default
157 # print-access-token
158 session.run(copy_credentials, application_default_credentials)
159
160 # Calling this forces the Cloud SDK to read the credentials we just wrote
161 # and obtain a new access token with those credentials. This validates
162 # that our credentials matches the format expected by gcloud.
163 # Silent is set to True to prevent leaking secrets in test logs.
164 session.run(
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700165 GCLOUD, "auth", "application-default", "print-access-token", silent=True
166 )
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700167
168
169# Test sesssions
170
David Buxtonb790e652020-10-29 21:38:01 +0000171TEST_DEPENDENCIES_ASYNC = ["aiohttp", "pytest-asyncio", "nest-asyncio"]
Bu Sun Kim621f54b2021-01-22 13:43:41 -0700172TEST_DEPENDENCIES_SYNC = ["pytest", "requests", "mock"]
Christopher Wilcox7e152582020-09-28 15:27:20 -0700173PYTHON_VERSIONS_ASYNC = ["3.7"]
174PYTHON_VERSIONS_SYNC = ["2.7", "3.7"]
Bu Sun Kim82e224b2020-03-13 13:21:18 -0700175
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700176
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600177def default(session, *test_paths):
178 # replace 'session._runner.friendly_name' with
179 # session.name once nox has released a new version
180 # https://github.com/theacodes/nox/pull/386
181 sponge_log = f"--junitxml=system_{str(session._runner.friendly_name)}_sponge_log.xml"
182 session.run(
183 "pytest", sponge_log, *test_paths,
184 )
185
186
Christopher Wilcox7e152582020-09-28 15:27:20 -0700187@nox.session(python=PYTHON_VERSIONS_SYNC)
188def service_account_sync(session):
189 session.install(*TEST_DEPENDENCIES_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700190 session.install(LIBRARY_DIR)
Tres Seaverd3944af2021-07-08 15:51:47 -0400191 default(
192 session,
193 "system_tests_sync/test_service_account.py",
194 *session.posargs,
195 )
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700196
197
Christopher Wilcox7e152582020-09-28 15:27:20 -0700198@nox.session(python=PYTHON_VERSIONS_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700199def default_explicit_service_account(session):
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700200 session.env[EXPLICIT_CREDENTIALS_ENV] = SERVICE_ACCOUNT_FILE
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700201 session.env[EXPECT_PROJECT_ENV] = "1"
Christopher Wilcox7e152582020-09-28 15:27:20 -0700202 session.install(*TEST_DEPENDENCIES_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700203 session.install(LIBRARY_DIR)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600204 default(
205 session,
206 "system_tests_sync/test_default.py",
207 "system_tests_sync/test_id_token.py",
Tres Seaverd3944af2021-07-08 15:51:47 -0400208 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600209 )
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700210
211
Christopher Wilcox7e152582020-09-28 15:27:20 -0700212@nox.session(python=PYTHON_VERSIONS_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700213def default_explicit_authorized_user(session):
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700214 session.env[EXPLICIT_CREDENTIALS_ENV] = AUTHORIZED_USER_FILE
Christopher Wilcox7e152582020-09-28 15:27:20 -0700215 session.install(*TEST_DEPENDENCIES_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700216 session.install(LIBRARY_DIR)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600217 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400218 session,
219 "system_tests_sync/test_default.py",
220 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600221 )
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700222
223
Christopher Wilcox7e152582020-09-28 15:27:20 -0700224@nox.session(python=PYTHON_VERSIONS_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700225def default_explicit_authorized_user_explicit_project(session):
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700226 session.env[EXPLICIT_CREDENTIALS_ENV] = AUTHORIZED_USER_FILE
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700227 session.env[EXPLICIT_PROJECT_ENV] = "example-project"
228 session.env[EXPECT_PROJECT_ENV] = "1"
Christopher Wilcox7e152582020-09-28 15:27:20 -0700229 session.install(*TEST_DEPENDENCIES_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700230 session.install(LIBRARY_DIR)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600231 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400232 session,
233 "system_tests_sync/test_default.py",
234 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600235 )
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700236
237
Christopher Wilcox7e152582020-09-28 15:27:20 -0700238@nox.session(python=PYTHON_VERSIONS_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700239def default_cloud_sdk_service_account(session):
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700240 configure_cloud_sdk(session, SERVICE_ACCOUNT_FILE)
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700241 session.env[EXPECT_PROJECT_ENV] = "1"
Christopher Wilcox7e152582020-09-28 15:27:20 -0700242 session.install(*TEST_DEPENDENCIES_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700243 session.install(LIBRARY_DIR)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600244 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400245 session,
246 "system_tests_sync/test_default.py",
247 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600248 )
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700249
250
Christopher Wilcox7e152582020-09-28 15:27:20 -0700251@nox.session(python=PYTHON_VERSIONS_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700252def default_cloud_sdk_authorized_user(session):
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700253 configure_cloud_sdk(session, AUTHORIZED_USER_FILE)
Christopher Wilcox7e152582020-09-28 15:27:20 -0700254 session.install(*TEST_DEPENDENCIES_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700255 session.install(LIBRARY_DIR)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600256 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400257 session,
258 "system_tests_sync/test_default.py",
259 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600260 )
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700261
262
Christopher Wilcox7e152582020-09-28 15:27:20 -0700263@nox.session(python=PYTHON_VERSIONS_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700264def default_cloud_sdk_authorized_user_configured_project(session):
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700265 configure_cloud_sdk(session, AUTHORIZED_USER_FILE, project=True)
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700266 session.env[EXPECT_PROJECT_ENV] = "1"
Christopher Wilcox7e152582020-09-28 15:27:20 -0700267 session.install(*TEST_DEPENDENCIES_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700268 session.install(LIBRARY_DIR)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600269 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400270 session,
271 "system_tests_sync/test_default.py",
272 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600273 )
274
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700275
Christopher Wilcox7e152582020-09-28 15:27:20 -0700276@nox.session(python=PYTHON_VERSIONS_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700277def compute_engine(session):
Christopher Wilcox7e152582020-09-28 15:27:20 -0700278 session.install(*TEST_DEPENDENCIES_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700279 # unset Application Default Credentials so
280 # credentials are detected from environment
281 del session.virtualenv.env["GOOGLE_APPLICATION_CREDENTIALS"]
282 session.install(LIBRARY_DIR)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600283 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400284 session,
285 "system_tests_sync/test_compute_engine.py",
286 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600287 )
Jon Wayne Parrottbbc39432016-10-27 23:12:39 -0700288
289
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700290@nox.session(python=["2.7"])
291def app_engine(session):
Jon Wayne Parrottb551ef22016-10-28 12:35:15 -0700292 if SKIP_GAE_TEST_ENV in os.environ:
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700293 session.log("Skipping App Engine tests.")
Jon Wayne Parrottb551ef22016-10-28 12:35:15 -0700294 return
295
Bu Sun Kim621f54b2021-01-22 13:43:41 -0700296 session.install(LIBRARY_DIR)
Jon Wayne Parrottb551ef22016-10-28 12:35:15 -0700297 # Unlike the default tests above, the App Engine system test require a
298 # 'real' gcloud sdk installation that is configured to deploy to an
299 # app engine project.
300 # Grab the project ID from the cloud sdk.
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700301 project_id = (
302 subprocess.check_output(
303 ["gcloud", "config", "list", "project", "--format", "value(core.project)"]
304 )
305 .decode("utf-8")
306 .strip()
307 )
Jon Wayne Parrottb551ef22016-10-28 12:35:15 -0700308
309 if not project_id:
310 session.error(
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700311 "The Cloud SDK must be installed and configured to deploy to App " "Engine."
312 )
Jon Wayne Parrottb551ef22016-10-28 12:35:15 -0700313
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700314 application_url = GAE_APP_URL_TMPL.format(GAE_TEST_APP_SERVICE, project_id)
Jon Wayne Parrottb551ef22016-10-28 12:35:15 -0700315
316 # Vendor in the test application's dependencies
Bu Sun Kim621f54b2021-01-22 13:43:41 -0700317 session.chdir(os.path.join(HERE, "system_tests_sync/app_engine_test_app"))
Christopher Wilcox7e152582020-09-28 15:27:20 -0700318 session.install(*TEST_DEPENDENCIES_SYNC)
Jon Wayne Parrottb551ef22016-10-28 12:35:15 -0700319 session.run(
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700320 "pip", "install", "--target", "lib", "-r", "requirements.txt", silent=True
321 )
Jon Wayne Parrottb551ef22016-10-28 12:35:15 -0700322
323 # Deploy the application.
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700324 session.run("gcloud", "app", "deploy", "-q", "app.yaml")
Jon Wayne Parrottb551ef22016-10-28 12:35:15 -0700325
326 # Run the tests
Bu Sun Kim9eec0912019-10-21 17:04:21 -0700327 session.env["TEST_APP_URL"] = application_url
Jon Wayne Parrottb551ef22016-10-28 12:35:15 -0700328 session.chdir(HERE)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600329 default(
330 session, "system_tests_sync/test_app_engine.py",
331 )
Jon Wayne Parrottb9897dc2016-11-02 20:31:14 -0700332
333
Christopher Wilcox7e152582020-09-28 15:27:20 -0700334@nox.session(python=PYTHON_VERSIONS_SYNC)
Bu Sun Kim65e33c02019-10-25 10:45:00 -0700335def grpc(session):
336 session.install(LIBRARY_DIR)
Bu Sun Kim621f54b2021-01-22 13:43:41 -0700337 session.install(*TEST_DEPENDENCIES_SYNC, "google-cloud-pubsub==1.7.0")
Jon Wayne Parrottb9897dc2016-11-02 20:31:14 -0700338 session.env[EXPLICIT_CREDENTIALS_ENV] = SERVICE_ACCOUNT_FILE
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600339 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400340 session,
341 "system_tests_sync/test_grpc.py",
342 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600343 )
arithmetic1728bb9215a2020-03-20 09:49:44 -0700344
345
Christopher Wilcox7e152582020-09-28 15:27:20 -0700346@nox.session(python=PYTHON_VERSIONS_SYNC)
Bu Sun Kim7a94acb2021-02-03 16:57:08 -0700347def requests(session):
348 session.install(LIBRARY_DIR)
349 session.install(*TEST_DEPENDENCIES_SYNC)
350 session.env[EXPLICIT_CREDENTIALS_ENV] = SERVICE_ACCOUNT_FILE
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600351 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400352 session,
353 "system_tests_sync/test_requests.py",
354 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600355 )
Bu Sun Kim7a94acb2021-02-03 16:57:08 -0700356
357
358@nox.session(python=PYTHON_VERSIONS_SYNC)
359def urllib3(session):
360 session.install(LIBRARY_DIR)
361 session.install(*TEST_DEPENDENCIES_SYNC)
362 session.env[EXPLICIT_CREDENTIALS_ENV] = SERVICE_ACCOUNT_FILE
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600363 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400364 session,
365 "system_tests_sync/test_urllib3.py",
366 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600367 )
Bu Sun Kim7a94acb2021-02-03 16:57:08 -0700368
369
370@nox.session(python=PYTHON_VERSIONS_SYNC)
arithmetic1728bb9215a2020-03-20 09:49:44 -0700371def mtls_http(session):
372 session.install(LIBRARY_DIR)
Christopher Wilcox7e152582020-09-28 15:27:20 -0700373 session.install(*TEST_DEPENDENCIES_SYNC, "pyopenssl")
arithmetic1728bb9215a2020-03-20 09:49:44 -0700374 session.env[EXPLICIT_CREDENTIALS_ENV] = SERVICE_ACCOUNT_FILE
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600375 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400376 session,
377 "system_tests_sync/test_mtls_http.py",
378 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600379 )
Christopher Wilcox7e152582020-09-28 15:27:20 -0700380
Bu Sun Kim7a94acb2021-02-03 16:57:08 -0700381
Ryan Kohler48e8be32021-03-25 17:35:43 -0700382@nox.session(python=PYTHON_VERSIONS_SYNC)
383def external_accounts(session):
Tres Seaverd3944af2021-07-08 15:51:47 -0400384 session.install(
385 *TEST_DEPENDENCIES_SYNC,
386 "google-auth",
387 "google-api-python-client",
388 "enum34",
389 )
390 default(
391 session,
392 "system_tests_sync/test_external_accounts.py",
393 *session.posargs,
394 )
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600395
Christopher Wilcox7e152582020-09-28 15:27:20 -0700396
Ryan Kohler48e8be32021-03-25 17:35:43 -0700397# ASYNC SYSTEM TESTS
398
Christopher Wilcox7e152582020-09-28 15:27:20 -0700399@nox.session(python=PYTHON_VERSIONS_ASYNC)
400def service_account_async(session):
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600401 session.install(*(TEST_DEPENDENCIES_SYNC + TEST_DEPENDENCIES_ASYNC))
Christopher Wilcox7e152582020-09-28 15:27:20 -0700402 session.install(LIBRARY_DIR)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600403 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400404 session,
405 "system_tests_async/test_service_account.py",
406 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600407 )
Christopher Wilcox7e152582020-09-28 15:27:20 -0700408
409
410@nox.session(python=PYTHON_VERSIONS_ASYNC)
411def default_explicit_service_account_async(session):
412 session.env[EXPLICIT_CREDENTIALS_ENV] = SERVICE_ACCOUNT_FILE
413 session.env[EXPECT_PROJECT_ENV] = "1"
414 session.install(*(TEST_DEPENDENCIES_SYNC + TEST_DEPENDENCIES_ASYNC))
415 session.install(LIBRARY_DIR)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600416 default(
417 session,
Ryan Kohler48e8be32021-03-25 17:35:43 -0700418 "system_tests_async/test_default.py",
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600419 "system_tests_async/test_id_token.py",
Tres Seaverd3944af2021-07-08 15:51:47 -0400420 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600421 )
Christopher Wilcox7e152582020-09-28 15:27:20 -0700422
423
424@nox.session(python=PYTHON_VERSIONS_ASYNC)
425def default_explicit_authorized_user_async(session):
426 session.env[EXPLICIT_CREDENTIALS_ENV] = AUTHORIZED_USER_FILE
427 session.install(*(TEST_DEPENDENCIES_SYNC + TEST_DEPENDENCIES_ASYNC))
428 session.install(LIBRARY_DIR)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600429 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400430 session,
431 "system_tests_async/test_default.py",
432 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600433 )
Christopher Wilcox7e152582020-09-28 15:27:20 -0700434
435
436@nox.session(python=PYTHON_VERSIONS_ASYNC)
437def default_explicit_authorized_user_explicit_project_async(session):
438 session.env[EXPLICIT_CREDENTIALS_ENV] = AUTHORIZED_USER_FILE
439 session.env[EXPLICIT_PROJECT_ENV] = "example-project"
440 session.env[EXPECT_PROJECT_ENV] = "1"
441 session.install(*(TEST_DEPENDENCIES_SYNC + TEST_DEPENDENCIES_ASYNC))
442 session.install(LIBRARY_DIR)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600443 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400444 session,
445 "system_tests_async/test_default.py",
446 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600447 )
Christopher Wilcox7e152582020-09-28 15:27:20 -0700448
449
450@nox.session(python=PYTHON_VERSIONS_ASYNC)
451def default_cloud_sdk_service_account_async(session):
452 configure_cloud_sdk(session, SERVICE_ACCOUNT_FILE)
453 session.env[EXPECT_PROJECT_ENV] = "1"
454 session.install(*(TEST_DEPENDENCIES_SYNC + TEST_DEPENDENCIES_ASYNC))
455 session.install(LIBRARY_DIR)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600456 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400457 session,
458 "system_tests_async/test_default.py",
459 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600460 )
Christopher Wilcox7e152582020-09-28 15:27:20 -0700461
462
463@nox.session(python=PYTHON_VERSIONS_ASYNC)
464def default_cloud_sdk_authorized_user_async(session):
465 configure_cloud_sdk(session, AUTHORIZED_USER_FILE)
466 session.install(*(TEST_DEPENDENCIES_SYNC + TEST_DEPENDENCIES_ASYNC))
467 session.install(LIBRARY_DIR)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600468 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400469 session,
470 "system_tests_async/test_default.py",
471 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600472 )
Christopher Wilcox7e152582020-09-28 15:27:20 -0700473
474
475@nox.session(python=PYTHON_VERSIONS_ASYNC)
476def default_cloud_sdk_authorized_user_configured_project_async(session):
477 configure_cloud_sdk(session, AUTHORIZED_USER_FILE, project=True)
478 session.env[EXPECT_PROJECT_ENV] = "1"
479 session.install(*(TEST_DEPENDENCIES_SYNC + TEST_DEPENDENCIES_ASYNC))
480 session.install(LIBRARY_DIR)
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600481 default(
Tres Seaverd3944af2021-07-08 15:51:47 -0400482 session,
483 "system_tests_async/test_default.py",
484 *session.posargs,
Bu Sun Kime87b1ec2021-03-15 09:02:06 -0600485 )