test_05_api_space.py 6.5 KB

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