test_08_api_task.py 4.9 KB

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