fix: enforce constraints during unit tests (#760)

Drop explicit pin / constraint on 'urllib3':  specific 'requests'
versions have very narrow pins, and ours is only likely to create
conflicts.

Bump the 'requests' lower bound to '2.20.0', the lowest version for
which our tests pass once constraints are being checked.

Closes #759
diff --git a/noxfile.py b/noxfile.py
index 236b59c..94661df 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -12,10 +12,14 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import shutil
 import os
+import pathlib
+import shutil
+
 import nox
 
+CURRENT_DIRECTORY = pathlib.Path(__file__).parent.absolute()
+
 TEST_DEPENDENCIES = [
     "flask",
     "freezegun",
@@ -84,15 +88,20 @@
 
 @nox.session(python=["3.6", "3.7", "3.8", "3.9"])
 def unit(session):
-    session.install(*TEST_DEPENDENCIES)
-    session.install(*(ASYNC_DEPENDENCIES))
-    session.install(".")
+    constraints_path = str(
+        CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt"
+    )
+    add_constraints = ["-c", constraints_path]
+    session.install(*(TEST_DEPENDENCIES + add_constraints))
+    session.install(*(ASYNC_DEPENDENCIES + add_constraints))
+    session.install(".", *add_constraints)
     session.run(
         "pytest",
         f"--junitxml=unit_{session.python}_sponge_log.xml",
         "--cov=google.auth",
         "--cov=google.oauth2",
         "--cov=tests",
+        "--cov-report=term-missing",
         "tests",
         "tests_async",
     )
@@ -123,7 +132,7 @@
         "--cov=google.oauth2",
         "--cov=tests",
         "--cov=tests_async",
-        "--cov-report=",
+        "--cov-report=term-missing",
         "tests",
         "tests_async",
     )