test_05_api_space.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. # -*- coding: utf-8 -*-
  2. """Test Apis."""
  3. import pytest
  4. from flask import current_app
  5. from utils import *
  6. @pytest.mark.usefixtures('db')
  7. class TestApiSpace:
  8. """api role testing"""
  9. uri_prefix = '/api/space'
  10. user_id = {}
  11. #: user list (1, 2, 3)
  12. space_data = {
  13. 'name': u'大数据',
  14. 'user_id': u'1',
  15. 'members': json.dumps([{"user_id": 2, "role": "MASTER"}, {"user_id": 3, "role": "DEVELOPER"}]),
  16. }
  17. space_name_2 = u'瓦力'
  18. space_data_2 = {
  19. 'name': u'瓦力',
  20. 'user_id': u'2',
  21. 'members': json.dumps([{"user_id": 3, "role": "MASTER"}, {"user_id": 1, "role": "DEVELOPER"}]),
  22. }
  23. space_data_remove = {
  24. 'name': u'瓦尔登',
  25. 'user_id': u'2',
  26. 'members': json.dumps([{"user_id": 1, "role": "MASTER"}, {"user_id": 3, "role": "DEVELOPER"}]),
  27. }
  28. def test_create(self, user, testapp, client, db):
  29. """create successful."""
  30. # 1.create project
  31. resp = client.post('%s/' % (self.uri_prefix), data=self.space_data)
  32. response_success(resp)
  33. # compare_req_resp(self.space_data, resp)
  34. current_app.logger.info(resp_json(resp)['data'])
  35. self.compare_member_req_resp(self.space_data, resp)
  36. self.space_data['space_id'] = resp_json(resp)['data']['id']
  37. """create successful."""
  38. # 1.create another project
  39. resp = client.post('%s/' % (self.uri_prefix), data=self.space_data_2)
  40. response_success(resp)
  41. self.compare_member_req_resp(self.space_data_2, resp)
  42. self.space_data_2['space_id'] = resp_json(resp)['data']['id']
  43. # 2.create another space
  44. # resp = client.post('%s/' % (self.uri_prefix), data=self.space_data_2)
  45. # space_data_2 = self.get_list_ids(self.space_data_2)
  46. #
  47. # response_success(resp)
  48. # compare_req_resp(space_data_2, resp)
  49. # self.space_data_2['space_id'] = resp_json(resp)['data']['space_id']
  50. def test_one(self, user, testapp, client, db):
  51. """item successful."""
  52. resp = client.get('%s/%d' % (self.uri_prefix, self.space_data['space_id']))
  53. response_success(resp)
  54. self.compare_member_req_resp(self.space_data, resp)
  55. # def test_get_list_page_size(self, user, testapp, client):
  56. # """test list should create 2 users at least, due to test pagination, searching."""
  57. #
  58. # query = {
  59. # 'page': 1,
  60. # 'size': 1,
  61. # }
  62. # response = {
  63. # 'count': 2,
  64. # }
  65. # resp = client.get('%s/?%s' % (self.uri_prefix, urllib.urlencode(query)))
  66. # response_success(resp)
  67. # resp_dict = resp_json(resp)
  68. #
  69. # res = resp_dict['data']['list'].pop()
  70. # # f.write(str(res))
  71. #
  72. # # compare_in(self.space_data_2, resp_dict['data']['list'].pop())
  73. # space_data_2 = self.get_list_ids(self.space_data_2)
  74. # del space_data_2['user_id']
  75. #
  76. # compare_in(space_data_2, res)
  77. # compare_req_resp(response, resp)
  78. #
  79. # def test_get_list_query(self, user, testapp, client):
  80. # """test list should create 2 users at least, due to test pagination, searching."""
  81. # query = {
  82. # 'page': 1,
  83. # 'size': 1,
  84. # 'kw': self.space_name_2
  85. # }
  86. # response = {
  87. # 'count': 1,
  88. # }
  89. # resp = client.get('%s/?%s' % (self.uri_prefix, urllib.urlencode(query)))
  90. # response_success(resp)
  91. # resp_dict = resp_json(resp)
  92. # space_data_2 = self.get_list_ids(self.space_data_2)
  93. # del space_data_2['user_id']
  94. #
  95. # compare_in(space_data_2, resp_dict['data']['list'].pop())
  96. # compare_req_resp(response, resp)
  97. #
  98. def test_get_update(self, user, testapp, client):
  99. """Login successful."""
  100. # 1.update
  101. space_data = self.space_data
  102. space_data['name'] = u'大数据平台'
  103. resp = client.put('%s/%d' % (self.uri_prefix, self.space_data['space_id']), data=space_data)
  104. response_success(resp)
  105. self.compare_member_req_resp(self.space_data, resp)
  106. # 1.update
  107. space_data_2 = self.space_data_2
  108. space_data_2['name'] = u'瓦力2.0'
  109. resp = client.put('%s/%d' % (self.uri_prefix, self.space_data_2['space_id']), data=space_data_2)
  110. response_success(resp)
  111. self.compare_member_req_resp(self.space_data_2, resp)
  112. # 2.get it
  113. resp = client.get('%s/%d' % (self.uri_prefix, self.space_data_2['space_id']))
  114. response_success(resp)
  115. response_success(resp)
  116. self.compare_member_req_resp(self.space_data_2, resp)
  117. # def test_get_remove(self, user, testapp, client):
  118. # """Login successful."""
  119. # # 1.create another role
  120. # resp = client.post('%s/' % (self.uri_prefix), data=self.space_data_remove)
  121. # space_id = resp_json(resp)['data']['space_id']
  122. # response_success(resp)
  123. #
  124. # # 2.delete
  125. # resp = client.delete('%s/%d' % (self.uri_prefix, space_id))
  126. # response_success(resp)
  127. #
  128. # # 3.get it
  129. # resp = client.get('%s/%d' % (self.uri_prefix, space_id))
  130. # response_error(resp)
  131. def compare_member_req_resp(self, request, response):
  132. for user_response in resp_json(response)['data']['members']:
  133. for user_request in json.loads(request['members']):
  134. if user_request['user_id'] == user_response['user_id']:
  135. assert user_request['role'] == user_response['role']