parent
95851f3a11
commit
513166847c
14 changed files with 114 additions and 1 deletions
@ -0,0 +1,3 @@ |
||||
from django.contrib import admin |
||||
|
||||
# Register your models here. |
||||
@ -0,0 +1,6 @@ |
||||
from django.apps import AppConfig |
||||
|
||||
|
||||
class AuthConfig(AppConfig): |
||||
name = 'apps.auth' |
||||
label = 'lilcity_auth' |
||||
@ -0,0 +1,8 @@ |
||||
from django import forms |
||||
|
||||
|
||||
class LearnerRegistrationForm(forms.Form): |
||||
first_name = forms.CharField() |
||||
last_name = forms.CharField() |
||||
email = forms.EmailField() |
||||
password = forms.CharField() |
||||
@ -0,0 +1,3 @@ |
||||
from django.db import models |
||||
|
||||
# Create your models here. |
||||
@ -0,0 +1,10 @@ |
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<title>Title</title> |
||||
</head> |
||||
<body> |
||||
|
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,47 @@ |
||||
from django.test import TestCase, Client |
||||
from django.urls import reverse |
||||
from django.contrib.auth import get_user_model |
||||
|
||||
|
||||
User = get_user_model() |
||||
|
||||
|
||||
class LearnerRegistrationTest(TestCase): |
||||
def setUp(self): |
||||
self.client = Client() |
||||
self.url = reverse("lilcity:registration-learner") |
||||
self.user_data = { |
||||
"email": "test@example.com", |
||||
"first_name": "Alice", |
||||
"last_name": "T", |
||||
"password": "12345" |
||||
} |
||||
|
||||
def test_get_html_form(self): |
||||
response = self.client.get(self.url) |
||||
self.assertEqual(response.status_code, 200) |
||||
self.assertEqual(response.templates[0].name, 'auth/registration-learner.html') |
||||
|
||||
def test_should_create_user(self): |
||||
self.assertEqual(User.objects.count(), 0) |
||||
|
||||
response = self.client.post(self.url, self.user_data) |
||||
|
||||
self.assertEqual(response.status_code, 201) |
||||
self.assertTrue(response.json()['success']) |
||||
|
||||
user = User.objects.get(email=self.user_data['email']) |
||||
self.assertEqual(user.username, self.user_data['email']) |
||||
self.assertEqual(user.first_name, self.user_data['first_name']) |
||||
self.assertEqual(user.last_name, self.user_data['last_name']) |
||||
|
||||
def test_invalid_data(self): |
||||
del self.user_data['email'] |
||||
|
||||
response = self.client.post(self.url, self.user_data) |
||||
|
||||
self.assertEqual(response.status_code, 400) |
||||
self.assertIn('email', response.json()) |
||||
|
||||
def test_should_redirect_main_page_when_user_not_anonymous(self): # todo |
||||
pass |
||||
@ -0,0 +1,7 @@ |
||||
from django.urls import path |
||||
|
||||
from . import views |
||||
|
||||
urlpatterns = [ |
||||
path('registration/learner/', views.LearnerRegistrationView.as_view(), name="registration-learner") |
||||
] |
||||
@ -0,0 +1,26 @@ |
||||
from django.views.generic import FormView |
||||
from django.http import JsonResponse |
||||
from django.contrib.auth import get_user_model |
||||
|
||||
from .forms import LearnerRegistrationForm |
||||
|
||||
|
||||
User = get_user_model() |
||||
|
||||
|
||||
class LearnerRegistrationView(FormView): |
||||
form_class = LearnerRegistrationForm |
||||
template_name = "auth/registration-learner.html" |
||||
|
||||
def form_valid(self, form): |
||||
first_name = form.cleaned_data['first_name'] |
||||
last_name = form.cleaned_data['last_name'] |
||||
email = form.cleaned_data['email'] |
||||
password = form.cleaned_data['password'] |
||||
|
||||
User.objects.create(username=email, email=email, first_name=first_name, last_name=last_name, password=password) |
||||
|
||||
return JsonResponse({"success": True}, status=201) |
||||
|
||||
def form_invalid(self, form): |
||||
return JsonResponse(form.errors.get_json_data(escape_html=True), status=400) |
||||
Loading…
Reference in new issue