/keystone/test/unit/test_server.py

https://github.com/griddynamics/keystone · Python · 88 lines · 68 code · 17 blank · 3 comment · 1 complexity · 3717846da8980e8dcced1a7bc6c5b1ca MD5 · raw file

  1. import unittest2 as unittest
  2. from StringIO import StringIO
  3. import datetime
  4. import webob
  5. from lxml import etree
  6. import json
  7. from keystone import utils
  8. from keystone.logic.types import auth
  9. import keystone.logic.types.fault as fault
  10. class TestServer(unittest.TestCase):
  11. '''Unit tests for server.py.'''
  12. request = None
  13. auth_data = None
  14. def setUp(self):
  15. environ = {'wsgi.url_scheme': 'http'}
  16. self.request = webob.Request(environ)
  17. self.auth_data = auth.ValidateData(auth.Token(datetime.date.today(),
  18. "2231312"), auth.User("id", "username", "12345", "aTenant"))
  19. #def tearDown(self):
  20. def test_is_xml_response(self):
  21. self.assertFalse(utils.is_xml_response(self.request))
  22. self.request.headers["Accept"] = "application/xml"
  23. self.request.content_type = "application/json"
  24. self.assertTrue(utils.is_xml_response(self.request))
  25. def test_send_result_xml(self):
  26. self.request.headers["Accept"] = "application/xml"
  27. response = utils.send_result(200, self.request, self.auth_data)
  28. self.assertTrue(response.headers['content-type'] ==
  29. "application/xml; charset=UTF-8")
  30. xml = etree.fromstring(response.unicode_body)
  31. user = xml.find("{http://docs.openstack.org/identity/api/v2.0}user")
  32. token = xml.find("{http://docs.openstack.org/identity/api/v2.0}token")
  33. self.assertTrue(user.get("username"), "username")
  34. self.assertTrue(user.get("id"), "id")
  35. self.assertTrue(user.get("tenantId"), '12345')
  36. self.assertTrue(token.get("id"), '2231312')
  37. self.assertTrue(token.get("expires"), datetime.date.today())
  38. def test_send_result_json(self):
  39. self.request.headers["Accept"] = "application/json"
  40. response = utils.send_result(200, self.request, self.auth_data)
  41. self.assertTrue(response.headers['content-type'] ==
  42. "application/json; charset=UTF-8")
  43. dict = json.loads(response.unicode_body)
  44. self.assertTrue(dict['access']['user']['id'], 'id')
  45. self.assertTrue(dict['access']['user']['username'], 'username')
  46. self.assertTrue(dict['access']['user']['tenantId'], '12345')
  47. self.assertTrue(dict['access']['token']['id'], '2231312')
  48. self.assertTrue(dict['access']['token']['expires'],
  49. datetime.date.today())
  50. def test_get_auth_token(self):
  51. self.request.headers["X-Auth-Token"] = "Test token"
  52. self.assertTrue(utils.get_auth_token(self.request), "Test Token")
  53. def test_get_normalized_request_content_exception(self):
  54. self.assertRaises(fault.IdentityFault,
  55. utils.get_normalized_request_content, None, self.request)
  56. def test_get_normalized_request_content_xml(self):
  57. self.request.environ["CONTENT_TYPE"] = "application/xml"
  58. auth.AuthWithPasswordCredentials("username", "password", "1")
  59. body = '<?xml version="1.0" encoding="UTF-8"?> \
  60. <auth xmlns="http://docs.openstack.org/identity/api/v2.0">\
  61. <passwordCredentials \
  62. xmlns="http://docs.openstack.org/identity/api/v2.0" \
  63. password="secret" username="disabled" \
  64. /></auth>'
  65. str = StringIO()
  66. str.write(body)
  67. self.request.environ["wsgi.input"] = str
  68. self.request.environ["CONTENT_LENGTH"] = str.len
  69. #TODO: I THINK THIS belongs in a test for auth.py.
  70. if __name__ == '__main__':
  71. unittest.main()