test_08_api_task.py 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. # -*- coding: utf-8 -*-
  2. """Test Apis."""
  3. import urllib
  4. from walle.model.task import TaskModel
  5. from .factories import TestApiBase
  6. from .utils import *
  7. class TestApiTask(TestApiBase):
  8. """api role testing"""
  9. uri_prefix = '/api/task'
  10. server_id = {}
  11. # TODO 需要再准备一个是否需要开启审核的status单测
  12. task_data = {
  13. 'name': u'提交一个测试上线单',
  14. 'project_id': 1,
  15. 'servers': u'127.0.0.1,192.168.0.1',
  16. 'commit_id': u'a89eb23c',
  17. 'branch': u'master',
  18. 'file_transmission_mode': 0,
  19. 'file_list': u'*.log'
  20. }
  21. # should be equal to task_data_2.name
  22. task_name_2 = u'The Second bill'
  23. task_data_2 = {
  24. 'name': u'The Second Bill',
  25. 'project_id': 1,
  26. 'servers': u'1,2',
  27. 'commit_id': u'a89eb23c',
  28. 'branch': u'master',
  29. 'file_transmission_mode': 0,
  30. 'file_list': u'*.log'
  31. }
  32. task_data_2_update = {
  33. 'name': u'The Second Bill Edit',
  34. 'project_id': 1,
  35. 'servers': u'1,2',
  36. 'commit_id': u'a89eb23c',
  37. 'branch': u'master',
  38. 'file_transmission_mode': 0,
  39. 'file_list': u'*.log,*.txt'
  40. }
  41. task_data_remove = {
  42. 'name': u'A Task To Be Removed',
  43. 'project_id': 1,
  44. 'servers': u'1,2,3',
  45. 'commit_id': u'a89eb23c',
  46. 'branch': u'master',
  47. 'file_transmission_mode': 0,
  48. 'file_list': u'*.log'
  49. }
  50. def test_create(self, user, testapp, client, db):
  51. """create successful."""
  52. # 1.create another role
  53. resp = client.post('%s/' % (self.uri_prefix), data=self.task_data)
  54. response_success(resp)
  55. compare_req_resp(self.task_data, resp)
  56. self.task_data['id'] = resp_json(resp)['data']['id']
  57. # 2.create another role
  58. resp = client.post('%s/' % (self.uri_prefix), data=self.task_data_2)
  59. response_success(resp)
  60. compare_req_resp(self.task_data_2, resp)
  61. self.task_data_2['id'] = resp_json(resp)['data']['id']
  62. def test_one(self, user, testapp, client, db):
  63. """item successful."""
  64. # Goes to homepage
  65. resp = client.get('%s/%d' % (self.uri_prefix, self.task_data['id']))
  66. response_success(resp)
  67. compare_req_resp(self.task_data, resp)
  68. def test_get_list_page_size(self, user, testapp, client):
  69. """test list should create 2 users at least, due to test pagination, searching."""
  70. query = {
  71. 'page': 1,
  72. 'size': 1,
  73. }
  74. response = {
  75. 'count': 2,
  76. }
  77. resp = client.get('%s/?%s' % (self.uri_prefix, urlencode(query)))
  78. response_success(resp)
  79. resp_dict = resp_json(resp)
  80. compare_in(self.task_data_2, resp_dict['data']['list'].pop())
  81. compare_req_resp(response, resp)
  82. def test_get_list_query(self, user, testapp, client):
  83. """test list should create 2 users at least, due to test pagination, searching."""
  84. query = {
  85. 'page': 1,
  86. 'size': 1,
  87. 'kw': self.task_name_2
  88. }
  89. response = {
  90. 'count': 1,
  91. }
  92. resp = client.get('%s/?%s' % (self.uri_prefix, urlencode(query)))
  93. response_success(resp)
  94. resp_dict = resp_json(resp)
  95. compare_in(self.task_data_2, resp_dict['data']['list'].pop())
  96. compare_req_resp(response, resp)
  97. def test_get_update(self, user, testapp, client):
  98. """Login successful."""
  99. # 1.update
  100. resp = client.put('%s/%d' % (self.uri_prefix, self.task_data_2['id']), data=self.task_data_2_update)
  101. response_success(resp)
  102. compare_req_resp(self.task_data_2_update, resp)
  103. # 3.get it
  104. resp = client.get('%s/%d' % (self.uri_prefix, self.task_data_2['id']))
  105. response_success(resp)
  106. compare_req_resp(self.task_data_2_update, resp)
  107. def test_get_update_audit(self, user, testapp, client):
  108. """Login successful."""
  109. # 1.update
  110. resp = client.put('%s/%d/audit' % (self.uri_prefix, self.task_data_2['id']))
  111. response_success(resp)
  112. assert resp_json(resp)['data']['status'] == TaskModel.status_pass
  113. def test_get_update_reject(self, user, testapp, client):
  114. """Login successful."""
  115. # 1.update
  116. resp = client.put('%s/%d/reject' % (self.uri_prefix, self.task_data_2['id']))
  117. response_success(resp)
  118. assert resp_json(resp)['data']['status'] == TaskModel.status_reject
  119. def test_get_remove(self, user, testapp, client):
  120. """Login successful."""
  121. # 1.create another role
  122. resp = client.post('%s/' % (self.uri_prefix), data=self.task_data_remove)
  123. server_id = resp_json(resp)['data']['id']
  124. response_success(resp)
  125. # 2.delete
  126. resp = client.delete('%s/%d' % (self.uri_prefix, server_id))
  127. response_success(resp)
  128. # 3.get it
  129. resp = client.get('%s/%d' % (self.uri_prefix, server_id))
  130. response_error(resp)