Debug env for tox

Running a test with pdb was difficult because testr captures
output and causes pdb prompt to quit.

Tips for how to run testr with debug are provided here:
  https://wiki.openstack.org/wiki/Testr#Debugging_.28pdb.29_Tests

This change puts these commands into a debug env in tox.ini so
you can do a command like

 tox -e debug test_auth_token_middleware

or, for more granularity:
 tox -e debug keystone.tests.test_sql_migrate_extensions.EndpointFilterExtension
 tox -e debug keystone.tests.test_sql_migrate_extensions.EndpointFilterExtension.test_downgrade

and when it hits your breakpoint you'll get the debug prompt.

This same change was made to keystone in commit c8302509 .

Change-Id: I2b5dc81f4652dc89ecbcc7c785245a81cf77a1ca
Verify token binding in auth_token middleware

The server side has had token bind checking implemented for a while. Now
that it is possible to generate bound tokens auth_token middleware
should be capable of verifying them.

Change-Id: I4f9c5855ab3102333b0738864c506e2501bf9c7e
Saner debug log message generation

For some reason building the debug log would include spaces in the
message elements and join on the empty string. It makes much more sense
to just build the list and join on the space.

Change-Id: Idd82787b87518c56122d0b13551f84529306337c
Removes use of timeutils.set_time_override

The set_time_override function in timeutils was written as a
helper function to mock utcnow for unittests before 'mock' was
generally used. Now that we have mock and fixture, we no longer
need to use it.

Partial-Bug: #1266962

Change-Id: I56935911a08ccd9847419eb118af2d2c9dd6c1cd
Use install_venv from oslo to fix no post_process issue

In a recent oslo sync commit Ieb73d5f799423fa8abf71634c86601ba6d32df2f
post_process() has been removed from tools/install_venv_common.py, which
is still called in tools/install_venv.py

Further investigation shows install_venv.py has some legacy distro
specific code, which should be removed at the time introducing
install_venv_common from oslo.

This change switch tools/install_venv.py to use oslo code to align the
effort as well as fixing original no 'post_process' issue.

Changes being pulled into in install_venv are:
12bcdb7 - 2013-11-25 12:16:11 +0800 - Remove vim header
b5cca99 - 2013-10-09 21:34:00 +0100 - Remove obsolete
redhat-eventlet.patch
9378d3c - 2013-08-13 18:06:11 +0300 - Move `./run_tests.sh` to Oslo

Note: openstack-common.conf is not updated, because the project name
variable in install_venv has to be modified after syncing from oslo.
That makes it not an exact sync but modification after sync. Besides
other openstack projects using install_venv from oslo also don't change
openstack-common.conf. So this patch simply follow the common practice
here.

Change-Id: I78a7563fbbde70cfd98cf1bd7a5a4eec5370d31d
Closes-Bug: #1263940
Tests cleanup temporary files

Some tests in test_auth_token_middleware weren't cleaning up
temporary files because the original filename was lost when
set_middleware() was called twice or tearDown() didn't clean up
the files.

The fix strategy is to use cleanUp(), because it will delete all
files even if called multiple times, and it doesn't rely on
tearDown() being called in subclasses.

Change-Id: Ib78150378ba6b622c9bc451ef4b331a87c17c56a
auth_token tests close temp file descriptor

The auth_token middleware tests were failing to close the
file descriptor of the named temporary file.

The fix strategy is to use tempfile.NamedTemporaryFile in a
context manager rather than mkstemp.

Change-Id: Ie20e2b4faa6a0d6bb8c4817ed2c9a04adee96f0f
Merge "Use install_venv from oslo to fix no post_process issue"
Updated from global requirements

Change-Id: Ia662a33f3615611c380ff5862f74f18ea459bf8e
auth_token tests use assertIs/Not/None

The tests in test_auth_token_middleware were using
assertEqual(res, None) and assertNotEqual(res, None) when they
should use assertIsNone and assertIsNotNone.

Change-Id: Ib1601b3a6101f843d9c29f3cd00aab339e671e61
Merge "Removes use of timeutils.set_time_override"
Merge "auth_token tests use assertIs/Not/None"
Make assertQueryStringIs usage simpler

As requested in https://review.openstack.org/#/c/65728/, this "fixes"
assertQueryStringIs so it takes a query string, rather than a dict
of lists, which is a less convenient format in many tests.

Change-Id: Ib4c49ba71f7e12bb5bcb4dfde77974f3418c7854
Fix incorrect assertTrue usage

Several self.assertTrue(len(returned_list)) statements exist,
which don't make any sense as we're testing an integer length
as a boolean.  Instead test the returned list length matches
the list passed in to stub the request.

Change-Id: I713c3a6afcc93ebb2a8f7ffde45aade2154ebf2c
Merge "Debug env for tox"
Merge "Updated from global requirements"
Merge "Verify token binding in auth_token middleware"
Merge "Make assertQueryStringIs usage simpler"
Clarify roles validation error messages

When doing the xor validation tests, we should differentiate between
the case where the user passed both arguments vs passing neither,
otherwise the error message is confusing when you don't pass either.

Change-Id: I99c307339ccd045a4c5b71824f3b7d91e2908154
Merge "Saner debug log message generation"