test_03_api_user.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. # -*- coding: utf-8 -*-
  2. """Test Apis."""
  3. import urllib
  4. import pytest
  5. from flask import current_app
  6. from .utils import *
  7. user_data = {
  8. 'email': u'test01@walle-web.io',
  9. 'password': u'Walle987',
  10. 'username': u'测试用户',
  11. }
  12. @pytest.mark.usefixtures('db')
  13. class TestApiUser:
  14. """api role testing"""
  15. uri_prefix = '/api/user'
  16. user_id = {}
  17. user_data = user_data
  18. user_name_2 = u'Tester'
  19. user_data_error = {
  20. 'email': u'user_error@walle-web.io',
  21. 'password': u'walle99',
  22. 'username': u'Tester',
  23. }
  24. user_data_2 = {
  25. 'email': u'test02@walle-web.io',
  26. 'password': u'Walle99999',
  27. 'username': u'Tester',
  28. }
  29. user_data_3 = {
  30. 'email': u'test03@walle-web.io',
  31. 'password': u'Walle99999',
  32. 'username': u'waller03',
  33. }
  34. user_data_4 = {
  35. 'email': u'test04@walle-web.io',
  36. 'password': u'Walle99999',
  37. 'username': u'waller04',
  38. }
  39. user_data_remove = {
  40. 'email': u'test_remove@walle-web.io',
  41. 'password': u'Walle987&^*',
  42. 'username': u'test_remove',
  43. }
  44. def test_create(self, user, testapp, client, db):
  45. """create successful."""
  46. # 1.error
  47. resp = client.post('%s/' % (self.uri_prefix), data=self.user_data_error)
  48. response_error(resp)
  49. # 2.create another user
  50. resp = client.post('%s/' % (self.uri_prefix), data=self.user_data)
  51. response_success(resp)
  52. del self.user_data['password']
  53. compare_req_resp(self.user_data, resp)
  54. self.user_data['id'] = resp_json(resp)['data']['id']
  55. # 3.create another user
  56. resp = client.post('%s/' % (self.uri_prefix), data=self.user_data_2)
  57. response_success(resp)
  58. del self.user_data_2['password']
  59. compare_req_resp(self.user_data_2, resp)
  60. self.user_data_2['id'] = resp_json(resp)['data']['id']
  61. # 4.create another user
  62. resp = client.post('%s/' % (self.uri_prefix), data=self.user_data_3)
  63. del self.user_data_3['password']
  64. # 5.create another user
  65. resp = client.post('%s/' % (self.uri_prefix), data=self.user_data_4)
  66. del self.user_data_4['password']
  67. def test_one(self, user, testapp, client, db):
  68. """item successful."""
  69. # Goes to homepage
  70. resp = client.get('%s/%d' % (self.uri_prefix, self.user_data['id']))
  71. response_success(resp)
  72. compare_req_resp(self.user_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. query = {
  76. 'page': 1,
  77. 'size': 1,
  78. }
  79. response = {
  80. 'count': 7,
  81. }
  82. resp = client.get('%s/?%s' % (self.uri_prefix, urlencode(query)))
  83. response_success(resp)
  84. resp_dict = resp_json(resp)
  85. compare_in(self.user_data_4, resp_dict['data']['list'].pop())
  86. compare_req_resp(response, resp)
  87. def test_get_list_query(self, user, testapp, client):
  88. """test list should create 2 users at least, due to test pagination, searching."""
  89. query = {
  90. 'page': 1,
  91. 'size': 1,
  92. 'kw': self.user_name_2
  93. }
  94. response = {
  95. 'count': 1,
  96. }
  97. resp = client.get('%s/?%s' % (self.uri_prefix, urlencode(query)))
  98. response_success(resp)
  99. resp_dict = resp_json(resp)
  100. compare_in(self.user_data_2, resp_dict['data']['list'].pop())
  101. compare_req_resp(response, resp)
  102. def test_get_update(self, user, testapp, client):
  103. """Login successful."""
  104. # 2.update
  105. user_data_2 = self.user_data_2
  106. user_data_2['username'] = 'Tester_edit'
  107. current_app.logger.error(user_data_2)
  108. resp = client.put('%s/%d' % (self.uri_prefix, self.user_data_2['id']), data=user_data_2)
  109. response_success(resp)
  110. compare_req_resp(user_data_2, resp)
  111. # 3.get it
  112. resp = client.get('%s/%d' % (self.uri_prefix, self.user_data_2['id']))
  113. response_success(resp)
  114. compare_req_resp(user_data_2, resp)
  115. def test_get_remove(self, user, testapp, client):
  116. """Login successful."""
  117. # 1.create another role
  118. resp = client.post('%s/' % (self.uri_prefix), data=self.user_data_remove)
  119. user_id = resp_json(resp)['data']['id']
  120. response_success(resp)
  121. # 2.delete
  122. resp = client.delete('%s/%d' % (self.uri_prefix, user_id))
  123. response_success(resp)
  124. # 3.get it
  125. resp = client.get('%s/%d' % (self.uri_prefix, user_id))
  126. response_error(resp)