diff options
Diffstat (limited to 'utils/test')
-rw-r--r-- | utils/test/testapi/3rd_party/static/testapi-ui/components/home/home.html | 2 | ||||
-rw-r--r-- | utils/test/testapi/3rd_party/static/testapi-ui/config.json | 2 | ||||
-rw-r--r-- | utils/test/testapi/3rd_party/static/testapi-ui/shared/header/header.html | 2 | ||||
-rw-r--r-- | utils/test/testapi/etc/config.ini | 50 | ||||
-rw-r--r-- | utils/test/testapi/opnfv_testapi/router/url_mappings.py | 10 | ||||
-rw-r--r-- | utils/test/testapi/opnfv_testapi/ui/__init__.py | 0 | ||||
-rw-r--r-- | utils/test/testapi/opnfv_testapi/ui/auth/__init__.py | 0 | ||||
-rw-r--r-- | utils/test/testapi/opnfv_testapi/ui/auth/constants.py | 14 | ||||
-rw-r--r-- | utils/test/testapi/opnfv_testapi/ui/auth/handlers.py | 37 | ||||
-rw-r--r-- | utils/test/testapi/opnfv_testapi/ui/auth/utils.py | 23 | ||||
-rw-r--r-- | utils/test/testapi/opnfv_testapi/ui/root.py (renamed from utils/test/testapi/opnfv_testapi/resources/ui_handlers.py) | 3 | ||||
-rw-r--r-- | utils/test/testapi/requirements.txt | 1 |
12 files changed, 136 insertions, 8 deletions
diff --git a/utils/test/testapi/3rd_party/static/testapi-ui/components/home/home.html b/utils/test/testapi/3rd_party/static/testapi-ui/components/home/home.html index 04f64d52b..47d747fd8 100644 --- a/utils/test/testapi/3rd_party/static/testapi-ui/components/home/home.html +++ b/utils/test/testapi/3rd_party/static/testapi-ui/components/home/home.html @@ -1,6 +1,6 @@ <div class="jumbotron openstack-intro"> <div class="pull-right right openstack-intro__logo"> - <img src="swagger/testapi-ui/assets/img/opnfv-logo.png" alt="OPNFV"> + <img src="testapi-ui/assets/img/opnfv-logo.png" alt="OPNFV"> </div> <div class="pull-left left openstack-intro__content"> <h1>Results Collection</h1> diff --git a/utils/test/testapi/3rd_party/static/testapi-ui/config.json b/utils/test/testapi/3rd_party/static/testapi-ui/config.json index c88d46c25..5d48c7b12 100644 --- a/utils/test/testapi/3rd_party/static/testapi-ui/config.json +++ b/utils/test/testapi/3rd_party/static/testapi-ui/config.json @@ -1 +1 @@ -{"testapiApiUrl": "http://10.62.105.17:9711"} +{"testapiApiUrl": "http://localhost:8000/api/v1"} diff --git a/utils/test/testapi/3rd_party/static/testapi-ui/shared/header/header.html b/utils/test/testapi/3rd_party/static/testapi-ui/shared/header/header.html index 78361b8a5..f2c49e86f 100644 --- a/utils/test/testapi/3rd_party/static/testapi-ui/shared/header/header.html +++ b/utils/test/testapi/3rd_party/static/testapi-ui/shared/header/header.html @@ -1,4 +1,4 @@ -<div class="heading"><a ui-sref="home"><img src="swagger/testapi-ui/assets/img/testapi-logo.png" alt="TestAPI"></a> +<div class="heading"><a ui-sref="home"><img src="testapi-ui/assets/img/testapi-logo.png" alt="TestAPI"></a> TestAPI </div> <nav class="navbar navbar-default" role="navigation" ng-controller="HeaderController as header"> diff --git a/utils/test/testapi/etc/config.ini b/utils/test/testapi/etc/config.ini index 77cc6c6ee..692e48897 100644 --- a/utils/test/testapi/etc/config.ini +++ b/utils/test/testapi/etc/config.ini @@ -8,6 +8,7 @@ dbname = test_results_collection [api] # Listening port +url = http://localhost:8000/api/v1 port = 8000 # With debug_on set to true, error traces will be shown in HTTP responses debug = True @@ -15,3 +16,52 @@ authenticate = False [swagger] base_url = http://localhost:8000 + +[ui] +url = http://localhost:8000 + +[osid] + +# OpenStackID Auth Server URI. (string value) +openstack_openid_endpoint = https://openstackid.org/accounts/openid2 + +# OpenStackID logout URI. (string value) +openid_logout_endpoint = https://openstackid.org/accounts/user/logout + +# Interaction mode. Specifies whether Openstack Id IdP may interact +# with the user to determine the outcome of the request. (string +# value) +openid_mode = checkid_setup + +# Protocol version. Value identifying the OpenID protocol version +# being used. This value should be "http://specs.openid.net/auth/2.0". +# (string value) +openid_ns = http://specs.openid.net/auth/2.0 + +# Return endpoint in Refstack's API. Value indicating the endpoint +# where the user should be returned to after signing in. Openstack Id +# Idp only supports HTTPS address types. (string value) +openid_return_to = /api/v1/auth/signin_return + +# Claimed identifier. This value must be set to +# "http://specs.openid.net/auth/2.0/identifier_select". or to user +# claimed identity (user local identifier or user owned identity [ex: +# custom html hosted on a owned domain set to html discover]). (string +# value) +openid_claimed_id = http://specs.openid.net/auth/2.0/identifier_select + +# Alternate identifier. This value must be set to +# http://specs.openid.net/auth/2.0/identifier_select. (string value) +openid_identity = http://specs.openid.net/auth/2.0/identifier_select + +# Indicates request for user attribute information. This value must be +# set to "http://openid.net/extensions/sreg/1.1". (string value) +openid_ns_sreg = http://openid.net/extensions/sreg/1.1 + +# Comma-separated list of field names which, if absent from the +# response, will prevent the Consumer from completing the registration +# without End User interation. The field names are those that are +# specified in the Response Format, with the "openid.sreg." prefix +# removed. Valid values include: "country", "email", "firstname", +# "language", "lastname" (string value) +openid_sreg_required = email,fullname diff --git a/utils/test/testapi/opnfv_testapi/router/url_mappings.py b/utils/test/testapi/opnfv_testapi/router/url_mappings.py index ebe59941a..7bd34300f 100644 --- a/utils/test/testapi/opnfv_testapi/router/url_mappings.py +++ b/utils/test/testapi/opnfv_testapi/router/url_mappings.py @@ -15,11 +15,11 @@ from opnfv_testapi.resources import project_handlers from opnfv_testapi.resources import result_handlers from opnfv_testapi.resources import scenario_handlers from opnfv_testapi.resources import testcase_handlers -import opnfv_testapi.resources.ui_handlers +from opnfv_testapi.ui import root +from opnfv_testapi.ui.auth import handlers as auth_handlers mappings = [ # GET /versions => GET API version - (r'/', opnfv_testapi.resources.ui_handlers.UIHandler), (r"/versions", handlers.VersionHandler), # few examples: @@ -54,7 +54,11 @@ mappings = [ (r"/api/v1/scenarios/([^/]+)", scenario_handlers.ScenarioGURHandler), # static path - (r'/(.*\.(css|png|gif|js|html|json))', + (r'/(.*\.(css|png|gif|js|html|json|map))', tornado.web.StaticFileHandler, {'path': config.Config().static_path}), + + (r'/', root.RootHandler), + (r'/api/v1/auth/signin', auth_handlers.SigninHandler), + (r'/api/v1/auth/signin_return', auth_handlers.SigninReturnHandler), ] diff --git a/utils/test/testapi/opnfv_testapi/ui/__init__.py b/utils/test/testapi/opnfv_testapi/ui/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/utils/test/testapi/opnfv_testapi/ui/__init__.py diff --git a/utils/test/testapi/opnfv_testapi/ui/auth/__init__.py b/utils/test/testapi/opnfv_testapi/ui/auth/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/utils/test/testapi/opnfv_testapi/ui/auth/__init__.py diff --git a/utils/test/testapi/opnfv_testapi/ui/auth/constants.py b/utils/test/testapi/opnfv_testapi/ui/auth/constants.py new file mode 100644 index 000000000..ec5975171 --- /dev/null +++ b/utils/test/testapi/opnfv_testapi/ui/auth/constants.py @@ -0,0 +1,14 @@ +# OpenID parameters +OPENID_MODE = 'openid.mode' +OPENID_NS = 'openid.ns' +OPENID_RETURN_TO = 'openid.return_to' +OPENID_CLAIMED_ID = 'openid.claimed_id' +OPENID_IDENTITY = 'openid.identity' +OPENID_REALM = 'openid.realm' +OPENID_NS_SREG = 'openid.ns.sreg' +OPENID_NS_SREG_REQUIRED = 'openid.sreg.required' +OPENID_NS_SREG_EMAIL = 'openid.sreg.email' +OPENID_NS_SREG_FULLNAME = 'openid.sreg.fullname' +OPENID_ERROR = 'openid.error' + +CSRF_TOKEN = 'csrf_token' diff --git a/utils/test/testapi/opnfv_testapi/ui/auth/handlers.py b/utils/test/testapi/opnfv_testapi/ui/auth/handlers.py new file mode 100644 index 000000000..511952dfd --- /dev/null +++ b/utils/test/testapi/opnfv_testapi/ui/auth/handlers.py @@ -0,0 +1,37 @@ +from six.moves.urllib import parse + +from opnfv_testapi.common import config +from opnfv_testapi.resources import handlers +from opnfv_testapi.ui.auth import constants as const +from opnfv_testapi.ui.auth import utils + + +CONF = config.Config() + + +class SigninHandler(handlers.GenericApiHandler): + def get(self): + csrf_token = utils.get_token() + return_endpoint = parse.urljoin(CONF.api_url, + CONF.osid_openid_return_to) + return_to = utils.set_query_params(return_endpoint, + {const.CSRF_TOKEN: csrf_token}) + + params = { + const.OPENID_MODE: CONF.osid_openid_mode, + const.OPENID_NS: CONF.osid_openid_ns, + const.OPENID_RETURN_TO: return_to, + const.OPENID_CLAIMED_ID: CONF.osid_openid_claimed_id, + const.OPENID_IDENTITY: CONF.osid_openid_identity, + const.OPENID_REALM: CONF.api_url, + const.OPENID_NS_SREG: CONF.osid_openid_ns_sreg, + const.OPENID_NS_SREG_REQUIRED: CONF.osid_openid_sreg_required, + } + url = CONF.osid_openstack_openid_endpoint + url = utils.set_query_params(url, params) + self.redirect(url=url, permanent=False) + + +class SigninReturnHandler(handlers.GenericApiHandler): + def get(self): + self.redirect(url=CONF.ui_url) diff --git a/utils/test/testapi/opnfv_testapi/ui/auth/utils.py b/utils/test/testapi/opnfv_testapi/ui/auth/utils.py new file mode 100644 index 000000000..c3912ad0c --- /dev/null +++ b/utils/test/testapi/opnfv_testapi/ui/auth/utils.py @@ -0,0 +1,23 @@ +import random +import string + +from six.moves.urllib import parse + + +def get_token(length=30): + """Get random token.""" + return ''.join(random.choice(string.ascii_lowercase) + for i in range(length)) + + +def set_query_params(url, params): + """Set params in given query.""" + url_parts = parse.urlparse(url) + url = parse.urlunparse(( + url_parts.scheme, + url_parts.netloc, + url_parts.path, + url_parts.params, + parse.urlencode(params), + url_parts.fragment)) + return url diff --git a/utils/test/testapi/opnfv_testapi/resources/ui_handlers.py b/utils/test/testapi/opnfv_testapi/ui/root.py index 4c14802c4..bba7a8632 100644 --- a/utils/test/testapi/opnfv_testapi/resources/ui_handlers.py +++ b/utils/test/testapi/opnfv_testapi/ui/root.py @@ -2,8 +2,7 @@ from opnfv_testapi.resources.handlers import GenericApiHandler from opnfv_testapi.common import config -class UIHandler(GenericApiHandler): - +class RootHandler(GenericApiHandler): def get_template_path(self): return config.Config().static_path diff --git a/utils/test/testapi/requirements.txt b/utils/test/testapi/requirements.txt index ee144d247..955ffc853 100644 --- a/utils/test/testapi/requirements.txt +++ b/utils/test/testapi/requirements.txt @@ -6,4 +6,5 @@ pbr>=1.6 setuptools>=16.0 tornado>=3.1,<=4.3 epydoc>=0.3.1 +six>=1.9.0 motor |