Merge "Obtain a token right before API test execution" into mcp/pike
diff --git a/heat_tempest_plugin/tests/api/fixtures.py b/heat_tempest_plugin/tests/api/fixtures.py
new file mode 100644
index 0000000..6c770c8
--- /dev/null
+++ b/heat_tempest_plugin/tests/api/fixtures.py
@@ -0,0 +1,28 @@
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import os
+
+from gabbi import fixture
+from heat_tempest_plugin.services import clients
+from tempest import config
+
+
+class AuthenticationFixture(fixture.GabbiFixture):
+    def start_fixture(self):
+        conf = config.CONF.heat_plugin
+        manager = clients.ClientManager(conf)
+        os.environ['OS_TOKEN'] = manager.identity_client.auth_token
+
+    def stop_fixture(self):
+        pass
diff --git a/heat_tempest_plugin/tests/api/gabbits/environments.yaml b/heat_tempest_plugin/tests/api/gabbits/environments.yaml
index 17ac476..18f304c 100644
--- a/heat_tempest_plugin/tests/api/gabbits/environments.yaml
+++ b/heat_tempest_plugin/tests/api/gabbits/environments.yaml
@@ -1,3 +1,6 @@
+fixtures:
+    - AuthenticationFixture
+
 defaults:
   request_headers:
     X-Auth-Token: $ENVIRON['OS_TOKEN']
diff --git a/heat_tempest_plugin/tests/api/gabbits/resources.yaml b/heat_tempest_plugin/tests/api/gabbits/resources.yaml
index 41da444..39380d7 100644
--- a/heat_tempest_plugin/tests/api/gabbits/resources.yaml
+++ b/heat_tempest_plugin/tests/api/gabbits/resources.yaml
@@ -1,3 +1,6 @@
+fixtures:
+    - AuthenticationFixture
+
 defaults:
   request_headers:
     X-Auth-Token: $ENVIRON['OS_TOKEN']
diff --git a/heat_tempest_plugin/tests/api/gabbits/resourcetypes.yaml b/heat_tempest_plugin/tests/api/gabbits/resourcetypes.yaml
index 0730cc8..5d11e93 100644
--- a/heat_tempest_plugin/tests/api/gabbits/resourcetypes.yaml
+++ b/heat_tempest_plugin/tests/api/gabbits/resourcetypes.yaml
@@ -1,3 +1,6 @@
+fixtures:
+    - AuthenticationFixture
+
 defaults:
   request_headers:
     X-Auth-Token: $ENVIRON['OS_TOKEN']
diff --git a/heat_tempest_plugin/tests/api/gabbits/stacks.yaml b/heat_tempest_plugin/tests/api/gabbits/stacks.yaml
index bc670e4..c230984 100644
--- a/heat_tempest_plugin/tests/api/gabbits/stacks.yaml
+++ b/heat_tempest_plugin/tests/api/gabbits/stacks.yaml
@@ -1,3 +1,6 @@
+fixtures:
+    - AuthenticationFixture
+
 defaults:
   request_headers:
     X-Auth-Token: $ENVIRON['OS_TOKEN']
diff --git a/heat_tempest_plugin/tests/api/gabbits/templates.yaml b/heat_tempest_plugin/tests/api/gabbits/templates.yaml
index 7b67054..9a40c6d 100644
--- a/heat_tempest_plugin/tests/api/gabbits/templates.yaml
+++ b/heat_tempest_plugin/tests/api/gabbits/templates.yaml
@@ -1,3 +1,6 @@
+fixtures:
+    - AuthenticationFixture
+
 defaults:
   request_headers:
     X-Auth-Token: $ENVIRON['OS_TOKEN']
diff --git a/heat_tempest_plugin/tests/api/test_heat_api.py b/heat_tempest_plugin/tests/api/test_heat_api.py
index bf86839..3d17484 100644
--- a/heat_tempest_plugin/tests/api/test_heat_api.py
+++ b/heat_tempest_plugin/tests/api/test_heat_api.py
@@ -16,10 +16,10 @@
 import os
 
 from gabbi import driver
-from six.moves.urllib import parse as urlparse
 
 from heat_tempest_plugin.common import test
 from heat_tempest_plugin.services import clients
+from heat_tempest_plugin.tests.api import fixtures
 from tempest import config
 
 TESTS_DIR = 'gabbits'
@@ -36,9 +36,6 @@
     manager = clients.ClientManager(conf)
     endpoint = manager.identity_client.get_endpoint_url(
         'orchestration', region=conf.region, endpoint_type=conf.endpoint_type)
-    host = urlparse.urlparse(endpoint).hostname
-    os.environ['OS_TOKEN'] = manager.identity_client.auth_token
     os.environ['PREFIX'] = test.rand_name('api')
-
-    return driver.build_tests(test_dir, loader, host=host,
+    return driver.build_tests(test_dir, loader, fixture_module=fixtures,
                               url=endpoint, test_loader_name=__name__)