Add service providers integration tests

This patch adds the tests for the Service Provider API (part of
the Federated Identity API).

To run the tests install keystone and run (in tempest):

    $ tox -e all-plugin -- keystone

Change-Id: I6d6f44736e4187dd2a500c7c0b6715e52296a9b3
diff --git a/keystone_tempest_plugin/services/identity/clients.py b/keystone_tempest_plugin/services/identity/clients.py
index f796cd7..d8c8692 100644
--- a/keystone_tempest_plugin/services/identity/clients.py
+++ b/keystone_tempest_plugin/services/identity/clients.py
@@ -34,3 +34,30 @@
             SERVICE_TYPE,
             CONF.identity.region,
             endpoint_type='adminURL')
+
+
+class Federation(Identity):
+    """Tempest REST client for keystone's Federated Identity API."""
+
+    subpath_prefix = 'OS-FEDERATION'
+    subpath_suffix = None
+
+    def _build_path(self, entity_id=None):
+        subpath = '%s/%s' % (self.subpath_prefix, self.subpath_suffix)
+        return '%s/%s' % (subpath, entity_id) if entity_id else subpath
+
+    def _delete(self, entity_id, **kwargs):
+        url = self._build_path(entity_id)
+        return super(Federation, self).delete(url, **kwargs)
+
+    def _get(self, entity_id=None, **kwargs):
+        url = self._build_path(entity_id)
+        return super(Federation, self).get(url, **kwargs)
+
+    def _patch(self, entity_id, body, **kwargs):
+        url = self._build_path(entity_id)
+        return super(Federation, self).patch(url, body, **kwargs)
+
+    def _put(self, entity_id, body, **kwargs):
+        url = self._build_path(entity_id)
+        return super(Federation, self).put(url, body, **kwargs)