feat: add asyncio based auth flow (#612)

* feat: asyncio http request logic and asynchronous credentials logic  (#572)

Co-authored-by: Anirudh Baddepudi <[email protected]>
diff --git a/noxfile.py b/noxfile.py
index c39f27c..d497f53 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -29,8 +29,18 @@
     "responses",
     "grpcio",
 ]
+
+ASYNC_DEPENDENCIES = ["pytest-asyncio", "aioresponses"]
+
 BLACK_VERSION = "black==19.3b0"
-BLACK_PATHS = ["google", "tests", "noxfile.py", "setup.py", "docs/conf.py"]
+BLACK_PATHS = [
+    "google",
+    "tests",
+    "tests_async",
+    "noxfile.py",
+    "setup.py",
+    "docs/conf.py",
+]
 
 
 @nox.session(python="3.7")
@@ -44,6 +54,7 @@
         "--application-import-names=google,tests,system_tests",
         "google",
         "tests",
+        "tests_async",
     )
     session.run(
         "python", "setup.py", "check", "--metadata", "--restructuredtext", "--strict"
@@ -64,9 +75,24 @@
     session.run("black", *BLACK_PATHS)
 
 
[email protected](python=["2.7", "3.5", "3.6", "3.7", "3.8"])
[email protected](python=["3.6", "3.7", "3.8"])
 def unit(session):
     session.install(*TEST_DEPENDENCIES)
+    session.install(*(ASYNC_DEPENDENCIES))
+    session.install(".")
+    session.run(
+        "pytest",
+        "--cov=google.auth",
+        "--cov=google.oauth2",
+        "--cov=tests",
+        "tests",
+        "tests_async",
+    )
+
+
[email protected](python=["2.7", "3.5"])
+def unit_prev_versions(session):
+    session.install(*TEST_DEPENDENCIES)
     session.install(".")
     session.run(
         "pytest", "--cov=google.auth", "--cov=google.oauth2", "--cov=tests", "tests"
@@ -76,14 +102,17 @@
 @nox.session(python="3.7")
 def cover(session):
     session.install(*TEST_DEPENDENCIES)
+    session.install(*(ASYNC_DEPENDENCIES))
     session.install(".")
     session.run(
         "pytest",
         "--cov=google.auth",
         "--cov=google.oauth2",
         "--cov=tests",
+        "--cov=tests_async",
         "--cov-report=",
         "tests",
+        "tests_async",
     )
     session.run("coverage", "report", "--show-missing", "--fail-under=100")
 
@@ -117,5 +146,10 @@
     session.install(*TEST_DEPENDENCIES)
     session.install(".")
     session.run(
-        "pytest", "--cov=google.auth", "--cov=google.oauth2", "--cov=tests", "tests"
+        "pytest",
+        "--cov=google.auth",
+        "--cov=google.oauth2",
+        "--cov=tests",
+        "tests",
+        "tests_async",
     )