增加用户注册代码和API测试

This commit is contained in:
hohoTT 2015-08-03 18:45:26 +08:00
parent b3d5519987
commit 2a2ef36d14
4 changed files with 51 additions and 7 deletions

View File

@ -10,3 +10,9 @@ class UserLoginSerializer(serializers.Serializer):
class UsernameCheckSerializer(serializers.Serializer): class UsernameCheckSerializer(serializers.Serializer):
username = serializers.CharField(max_length=30) username = serializers.CharField(max_length=30)
class UserRegisterSerializer(serializers.Serializer):
username = serializers.CharField(max_length=30)
real_name = serializers.CharField(max_length=30)
password = serializers.CharField(max_length=30, min_length=6)

View File

@ -55,3 +55,26 @@ class UsernameCheckTest(APITestCase):
def test_username_does_not_exist(self): def test_username_does_not_exist(self):
response = self.client.post(self.url, data={"username": "testtest123"}) response = self.client.post(self.url, data={"username": "testtest123"})
self.assertEqual(response.data, {"code": 0, "data": False}) self.assertEqual(response.data, {"code": 0, "data": False})
class UserRegisterAPITest(APITestCase):
def setUp(self):
self.client = APIClient()
self.url = reverse("user_register_api")
def test_invalid_data(self):
data = {"username": "test", "real_name": "TT"}
response = self.client.post(self.url, data=data)
self.assertEqual(response.data["code"], 1)
def test_short_password(self):
data = {"username": "test", "real_name": "TT", "password": "qq"}
response = self.client.post(self.url, data=data)
self.assertEqual(response.data["code"], 1)
def test_same_username(self):
User.objects.create(username="aa", real_name="ww")
data = {"username": "aa", "real_name": "ww", "password": "zzzzzzz"}
response = self.client.post(self.url, data=data)
self.assertEqual(response.data, {"code": 1, "data": u"用户名已存在"})

View File

@ -6,7 +6,7 @@ from rest_framework.views import APIView
from utils.shortcuts import serializer_invalid_response, error_response, success_response from utils.shortcuts import serializer_invalid_response, error_response, success_response
from .models import User from .models import User
from .serializers import UserLoginSerializer, UsernameCheckSerializer from .serializers import UserLoginSerializer, UsernameCheckSerializer, UserRegisterSerializer
class UserLoginAPIView(APIView): class UserLoginAPIView(APIView):
@ -30,12 +30,26 @@ class UserLoginAPIView(APIView):
return serializer_invalid_response(serializer) return serializer_invalid_response(serializer)
class UserRegisterView(APIView): class UserRegisterAPIView(APIView):
def get(self, request):
pass
def post(self, request): def post(self, request):
pass """
用户注册json api接口
---
request_serializer: UserRegisterSerializer
"""
serializer = UserRegisterSerializer(data=request.DATA)
if serializer.is_valid():
data = serializer.data
try:
User.objects.get(username=data["username"])
return error_response(u"用户名已存在")
except User.DoesNotExist:
user = User.objects.create(username=data["username"], real_name=data["real_name"])
user.set_password(data["password"])
user.save()
return success_response(u"注册成功!")
else:
return serializer_invalid_response(serializer)
class UserChangePasswordView(APIView): class UserChangePasswordView(APIView):

View File

@ -3,7 +3,7 @@ from django.conf.urls import include, url
from django.contrib import admin from django.contrib import admin
from django.views.generic import TemplateView from django.views.generic import TemplateView
from account.views import UserLoginAPIView, UsernameCheckAPIView from account.views import UserLoginAPIView, UsernameCheckAPIView, UserRegisterAPIView
urlpatterns = [ urlpatterns = [
url("^$", TemplateView.as_view(template_name="oj/index.html"), name="index_page"), url("^$", TemplateView.as_view(template_name="oj/index.html"), name="index_page"),
@ -11,6 +11,7 @@ urlpatterns = [
url(r'^admin/$', TemplateView.as_view(template_name="admin/index.html"), name="admin_index_page"), url(r'^admin/$', TemplateView.as_view(template_name="admin/index.html"), name="admin_index_page"),
url(r'^login/$', TemplateView.as_view(template_name="oj/account/login.html"), name="user_login_page"), url(r'^login/$', TemplateView.as_view(template_name="oj/account/login.html"), name="user_login_page"),
url(r'^api/login/$', UserLoginAPIView.as_view(), name="user_login_api"), url(r'^api/login/$', UserLoginAPIView.as_view(), name="user_login_api"),
url(r'^api/register/$', UserRegisterAPIView.as_view(), name="user_register_api"),
url(r'^api/username_check/$', UsernameCheckAPIView.as_view(), name="username_check_api"), url(r'^api/username_check/$', UsernameCheckAPIView.as_view(), name="username_check_api"),
url(r'^problem/(?P<problem_id>\d+)/$', "problem.views.problem_page", name="problem_page"), url(r'^problem/(?P<problem_id>\d+)/$', "problem.views.problem_page", name="problem_page"),