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