115 lines
4.6 KiB
Python
115 lines
4.6 KiB
Python
import os
|
|
import sys
|
|
# Need to access identity module
|
|
sys.path.append(os.path.abspath(os.path.join(os.path.abspath(__file__),
|
|
'..', '..', '..', '..', 'keystone')))
|
|
import unittest
|
|
from webtest import TestApp
|
|
import httplib2
|
|
import json
|
|
from lxml import etree
|
|
|
|
from test_common import URL, get_token, get_tenant, get_user
|
|
from test_common import get_userdisabled, get_auth_token
|
|
from test_common import get_exp_auth_token, get_disabled_token
|
|
from test_common import delete_token, content_type, get_token_xml
|
|
|
|
|
|
class authentication_test(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.tenant = get_tenant()
|
|
self.token = get_token('joeuser', 'secrete', 'token')
|
|
self.user = get_user()
|
|
self.userdisabled = get_userdisabled()
|
|
self.auth_token = get_auth_token()
|
|
self.exp_auth_token = get_exp_auth_token()
|
|
self.disabled_token = get_disabled_token()
|
|
|
|
def tearDown(self):
|
|
delete_token(self.token, self.auth_token)
|
|
|
|
def test_a_authorize(self):
|
|
resp, content = get_token('joeuser', 'secrete', '')
|
|
self.assertEqual(200, int(resp['status']))
|
|
self.assertEqual('application/json', content_type(resp))
|
|
|
|
def test_a_authorize_xml(self):
|
|
resp, content = get_token_xml('joeuser', 'secrete', '', self.tenant)
|
|
self.assertEqual(200, int(resp['status']))
|
|
self.assertEqual('application/xml', content_type(resp))
|
|
|
|
def test_a_authorize_user_disabled(self):
|
|
header = httplib2.Http(".cache")
|
|
url = '%stoken' % URL
|
|
body = {"passwordCredentials": {"username": "disabled",
|
|
"password": "secrete"}}
|
|
resp, content = header.request(url, "POST", body=json.dumps(body),
|
|
headers={"Content-Type": "application/json"})
|
|
content = json.loads(content)
|
|
if int(resp['status']) == 500:
|
|
self.fail('IDM fault')
|
|
elif int(resp['status']) == 503:
|
|
self.fail('Service Not Available')
|
|
self.assertEqual(403, int(resp['status']))
|
|
self.assertEqual('application/json', content_type(resp))
|
|
|
|
def test_a_authorize_user_disabled_xml(self):
|
|
header = httplib2.Http(".cache")
|
|
url = '%stoken' % URL
|
|
body = '<?xml version="1.0" encoding="UTF-8"?> \
|
|
<passwordCredentials \
|
|
xmlns="http://docs.openstack.org/idm/api/v1.0" \
|
|
password="secrete" username="disabled" \
|
|
/>'
|
|
resp, content = header.request(url, "POST", body=body,
|
|
headers={"Content-Type": "application/xml",
|
|
"ACCEPT": "application/xml"})
|
|
content = etree.fromstring(content)
|
|
if int(resp['status']) == 500:
|
|
self.fail('IDM fault')
|
|
elif int(resp['status']) == 503:
|
|
self.fail('Service Not Available')
|
|
self.assertEqual(403, int(resp['status']))
|
|
self.assertEqual('application/xml', content_type(resp))
|
|
|
|
def test_a_authorize_user_wrong(self):
|
|
header = httplib2.Http(".cache")
|
|
url = '%stoken' % URL
|
|
body = {"passwordCredentials": {"username-w": "disabled",
|
|
"password": "secrete"}}
|
|
resp, content = header.request(url, "POST", body=json.dumps(body),
|
|
headers={"Content-Type": "application/json"})
|
|
content = json.loads(content)
|
|
if int(resp['status']) == 500:
|
|
self.fail('IDM fault')
|
|
elif int(resp['status']) == 503:
|
|
self.fail('Service Not Available')
|
|
self.assertEqual(400, int(resp['status']))
|
|
self.assertEqual('application/json', content_type(resp))
|
|
|
|
def test_a_authorize_user_wrong_xml(self):
|
|
header = httplib2.Http(".cache")
|
|
url = '%stoken' % URL
|
|
body = '<?xml version="1.0" encoding="UTF-8"?> \
|
|
<passwordCredentials \
|
|
xmlns="http://docs.openstack.org/idm/api/v1.0" \
|
|
password="secrete" username-w="disabled" \
|
|
/>'
|
|
resp, content = header.request(url, "POST", body=body,
|
|
headers={"Content-Type": "application/xml",
|
|
"ACCEPT": "application/xml"})
|
|
content = etree.fromstring(content)
|
|
if int(resp['status']) == 500:
|
|
self.fail('IDM fault')
|
|
elif int(resp['status']) == 503:
|
|
self.fail('Service Not Available')
|
|
self.assertEqual(400, int(resp['status']))
|
|
self.assertEqual('application/xml', content_type(resp))
|
|
|
|
def run():
|
|
unittest.main()
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|