-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'feature/login-logout' into future/tweet
- Loading branch information
Showing
13 changed files
with
327 additions
and
51 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,3 @@ | ||
# from django.contrib import admin | ||
from django.contrib import admin | ||
|
||
from .models import User | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,16 @@ | ||
from django.contrib.auth import get_user_model | ||
from django.contrib.auth.forms import AuthenticationForm, UserCreationForm | ||
|
||
User = get_user_model() # こっちで先に変数代入する! | ||
User = get_user_model() | ||
|
||
|
||
class SignupForm(UserCreationForm): | ||
class Meta: | ||
model = User # model = get_user_model() は NG | ||
fields = ("username", "email") # Remove trailing whitespace | ||
model = User | ||
fields = ("username", "email") | ||
|
||
|
||
class LoginForm(AuthenticationForm): | ||
class Meta: | ||
model = User | ||
fields = ("username", "password") # Remove trailing whitespace | ||
|
||
|
||
# password1, password2というフィールドはUserCreationFormの方で設定されているため、 | ||
# fieldsの欄には、Userモデルの中にある、 | ||
# blankにはできない値であるusernameとemailをセットする。 | ||
fields = ("username", "password") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# Generated by Django 4.2.9 on 2024-02-16 11:46 | ||
|
||
from django.db import migrations | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
dependencies = [ | ||
("accounts", "0001_initial"), | ||
] | ||
|
||
operations = [ | ||
migrations.DeleteModel( | ||
name="Person", | ||
), | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,16 +5,294 @@ | |
|
||
from tweets.models import Tweet | ||
|
||
# from django.conf import settings | ||
|
||
|
||
User = get_user_model() | ||
Model = Tweet | ||
|
||
|
||
# class TestSignupView(TestCase): | ||
class TestSignupView(TestCase): | ||
def setUp(self): | ||
self.url = reverse("accounts:signup") | ||
|
||
# # Test Case 1 | ||
# def test_success_get(self): | ||
# response = self.client.get(self.url) | ||
# self.assertEqual(response.status_code, 200) | ||
# self.assertTemplateUsed(response, "accounts/signup.html") | ||
|
||
# Test Case 1-2,2-1 | ||
# def test_success_post(self): | ||
# valid_data = { | ||
# "username": "testuser", | ||
# "email": "[email protected]", | ||
# "password1": "testpassword", | ||
# "password2": "testpassword", | ||
# } | ||
# response = self.client.post(self.url, valid_data) | ||
# self.assertRedirects( | ||
# response, | ||
# reverse(settings.LOGIN_REDIRECT_URL), # 2-1 | ||
# status_code=302, | ||
# target_status_code=200, | ||
# ) | ||
# self.assertTrue(User.objects.filter(username=valid_data["username"]).exists()) | ||
# self.assertIn(SESSION_KEY, self.client.session) | ||
|
||
|
||
# # 異常系test | ||
# # Test Case 3 | ||
# def test_failure_post_with_empty_form(self): | ||
# invalid_data = { | ||
# "username": "", | ||
# "email": "", | ||
# "password1": "", | ||
# "password2": "", | ||
# } | ||
# response = self.client.post(self.url, invalid_data) | ||
# form = response.context["form"] | ||
|
||
# self.assertEqual(response.status_code, 200) | ||
# self.assertFalse(User.objects.filter(username=invalid_data["username"]).exists()) | ||
# self.assertFalse(form.is_valid()) | ||
# self.assertIn("このフィールドは必須です。", form.errors["username"]) | ||
# self.assertIn("このフィールドは必須です。", form.errors["email"]) | ||
# self.assertIn("このフィールドは必須です。", form.errors["password1"]) | ||
# self.assertIn("このフィールドは必須です。", form.errors["password2"]) | ||
|
||
# # Test Case 4 | ||
# def test_failure_post_with_empty_username(self): | ||
# print(self.url) | ||
# invalid_data = { | ||
# "username": "", | ||
# "email": "[email protected]", | ||
# "password1": "testpassword", | ||
# "password2": "testpassword", | ||
# } | ||
# response = self.client.post(self.url, invalid_data) | ||
# form = response.context["form"] | ||
|
||
# self.assertEqual(response.status_code, 200) | ||
# self.assertFalse(User.objects.filter(username=invalid_data["username"]).exists()) | ||
# self.assertFalse(form.is_valid()) | ||
# self.assertIn("このフィールドは必須です。", form.errors["username"]) | ||
|
||
# # Test Case 5 | ||
# def test_failure_post_with_empty_email(self): | ||
# invalid_data = { | ||
# "username": "testuser", | ||
# "email": "", | ||
# "password1": "testpassword", | ||
# "password2": "testpassword", | ||
# } | ||
# response = self.client.post(self.url, invalid_data) | ||
# form = response.context["form"] | ||
|
||
# self.assertEqual(response.status_code, 200) | ||
# self.assertFalse(User.objects.filter(username=invalid_data["username"]).exists()) | ||
# self.assertFalse(form.is_valid()) | ||
# self.assertIn("このフィールドは必須です。", form.errors["email"]) | ||
|
||
# # Test Case 6 | ||
# def test_failure_post_with_empty_password(self): | ||
# invalid_data = { | ||
# "username": "testuser", | ||
# "email": "[email protected]", | ||
# "password1": "", | ||
# "password2": "", | ||
# } | ||
# response = self.client.post(self.url, invalid_data) | ||
# form = response.context["form"] | ||
|
||
# self.assertEqual(response.status_code, 200) | ||
# # exist error | ||
# self.assertFalse(User.objects.filter(username=invalid_data["username"]).exists()) | ||
# # よくわからん | ||
# self.assertFalse(form.is_valid()) | ||
# # Error message | ||
# self.assertIn("このフィールドは必須です。", form.errors["password1"]) | ||
# self.assertIn("このフィールドは必須です。", form.errors["password2"]) | ||
|
||
# # Test Case 7 | ||
# def test_failure_post_with_duplicated_user(self): | ||
# invalid_data = { | ||
# "username": "tester", | ||
# "email": "[email protected]", | ||
# "password1": "testpassword", | ||
# "password2": "testpassword", | ||
# } | ||
# response = self.client.post(self.url, invalid_data) | ||
# form = response.context["form"] | ||
|
||
# self.assertEqual(response.status_code, 200) | ||
# self.assertTrue(User.objects.filter(username=invalid_data["username"]).exists()) | ||
# self.assertFalse(form.is_valid()) | ||
# self.assertIn("同じユーザー名が既に登録済みです。", form.errors["username"]) | ||
|
||
# # Test Case 8 | ||
# def test_failure_post_with_invalid_email(self): | ||
# invalid_data = { | ||
# "username": "testuser", | ||
# "email": "test", | ||
# "password1": "testpassword", | ||
# "password2": "testpassword", | ||
# } | ||
# response = self.client.post(self.url, invalid_data) | ||
# form = response.context["form"] | ||
|
||
# self.assertEqual(response.status_code, 200) | ||
# self.assertFalse(User.objects.filter(username=invalid_data["username"]).exists()) | ||
# self.assertFalse(form.is_valid()) | ||
# self.assertIn("有効なメールアドレスを入力してください。", form.errors["email"]) | ||
|
||
# # Test Case 9 | ||
# def test_failure_post_with_too_short_password(self): | ||
# invalid_data = { | ||
# "username": "testuser", | ||
# "email": "[email protected]", | ||
# "password1": "aaa", | ||
# "password2": "aaa", | ||
# } | ||
# response = self.client.post(self.url, invalid_data) | ||
# form = response.context["form"] | ||
|
||
# self.assertEqual(response.status_code, 200) | ||
# self.assertFalse(User.objects.filter(username=invalid_data["username"]).exists()) | ||
# self.assertFalse(form.is_valid()) | ||
# self.assertIn("このパスワードは短すぎます。最低 8 文字以上必要です。", form.errors["password2"]) | ||
|
||
# # Test Case 10 | ||
# def test_failure_post_with_password_similar_to_username(self): | ||
# invalid_data = { | ||
# "username": "testuser", | ||
# "email": "[email protected]", | ||
# "password1": "testuser", | ||
# "password2": "testuser", | ||
# } | ||
# response = self.client.post(self.url, invalid_data) | ||
# form = response.context["form"] | ||
|
||
# self.assertEqual(response.status_code, 200) | ||
# self.assertFalse(User.objects.filter(username=invalid_data["username"]).exists()) | ||
# self.assertFalse(form.is_valid()) | ||
# self.assertIn("このパスワードは ユーザー名 と似すぎています。", form.errors["password2"]) | ||
|
||
# # Test Case 11 | ||
# def test_failure_post_with_only_numbers_password(self): | ||
# invalid_data = { | ||
# "username": "testuser", | ||
# "email": "[email protected]", | ||
# "password1": "11111111", | ||
# "password2": "11111111", | ||
# } | ||
# response = self.client.post(self.url, invalid_data) | ||
# form = response.context["form"] | ||
|
||
# self.assertEqual(response.status_code, 200) | ||
# self.assertFalse(User.objects.filter(username=invalid_data["username"]).exists()) | ||
# self.assertFalse(form.is_valid()) | ||
# self.assertIn("このパスワードは数字しか使われていません。", form.errors["password2"]) | ||
|
||
# # Test Case 12 | ||
# def test_failure_post_with_mismatch_password(self): | ||
# invalid_data = { | ||
# "username": "testuser", | ||
# "email": "[email protected]", | ||
# "password1": "testpassword", | ||
# "password2": "testdayo", | ||
# } | ||
# response = self.client.post(self.url, invalid_data) | ||
# form = response.context["form"] | ||
|
||
# self.assertEqual(response.status_code, 200) | ||
# self.assertFalse(User.objects.filter(username=invalid_data["username"]).exists()) | ||
# self.assertFalse(form.is_valid()) | ||
# self.assertIn("確認用パスワードが一致しません。", form.errors["password2"]) | ||
|
||
|
||
# class TestLoginView(TestCase): | ||
# def setUp(self): | ||
# self.url = reverse(settings.LOGIN_URL) | ||
# self.user = User.objects.create_user( | ||
# username="testuser", | ||
# email="[email protected]", | ||
# password="testpassword", | ||
# ) | ||
|
||
# # Test Case 2-2 | ||
# def test_success_get(self): | ||
# response = self.client.get(self.url) | ||
# self.assertEqual(response.status_code, 200) | ||
# self.assertTemplateUsed(response, "accounts/login.html") | ||
|
||
# # Test Case 2-3 | ||
# def test_success_post(self): | ||
# valid_data = { | ||
# "username": "testuser", | ||
# "password": "testpassword", | ||
# } | ||
# response = self.client.post(self.url, valid_data) | ||
|
||
# self.assertRedirects( | ||
# response, | ||
# reverse(settings.LOGIN_REDIRECT_URL), | ||
# status_code=302, | ||
# target_status_code=200, | ||
# ) | ||
# self.assertIn(SESSION_KEY, self.client.session) | ||
|
||
# # Test Case 2-4 | ||
# def test_failure_post_with_not_exists_user(self): | ||
# invalid_data = { | ||
# "username": "testuser2", | ||
# "password": "testpassword", | ||
# } | ||
# response = self.client.post(self.url, invalid_data) | ||
# form = response.context["form"] | ||
|
||
# self.assertEqual(response.status_code, 200) | ||
# self.assertFalse(form.is_valid()) | ||
# self.assertNotIn(SESSION_KEY, self.client.session) | ||
# self.assertIn( | ||
# "正しいユーザー名とパスワードを入力してください。どちらのフィールドも大文字と小文字は区別されます。", | ||
# form.errors["__all__"], | ||
# ) | ||
|
||
# # Test Case 2-5 | ||
# def test_failure_post_with_empty_password(self): | ||
# invalid_data = { | ||
# "username": "testuser", | ||
# "password": "", | ||
# } | ||
# response = self.client.post(self.url, invalid_data) | ||
# form = response.context["form"] | ||
|
||
# self.assertEqual(response.status_code, 200) | ||
# self.assertFalse(form.is_valid()) | ||
# self.assertNotIn(SESSION_KEY, self.client.session) | ||
# self.assertIn("このフィールドは必須です。", form.errors["password"]) | ||
|
||
|
||
# class TestLogoutView(TestCase): | ||
# def setUp(self): | ||
# self.url = reverse("accounts:signup") | ||
# self.user = User.objects.create_user(username="tester", password="testpassword") | ||
# self.user = User.objects.create_user(username="testuser", password="testpassword") | ||
# self.client.login(username="testuser", password="testpassword") | ||
|
||
# # Test Case 2-6 | ||
# def test_success_post(self): | ||
# self.url = reverse("accounts:logout") | ||
# response = self.client.post(self.url) | ||
# self.assertRedirects( | ||
# response, | ||
# reverse(settings.LOGOUT_REDIRECT_URL), | ||
# status_code=302, | ||
# target_status_code=200, | ||
# ) | ||
# self.assertNotIn(SESSION_KEY, self.client.session) | ||
|
||
|
||
# # Test Case 1-1 | ||
# class TestUserProfileView(TestCase): | ||
# def test_success_get(self): | ||
# response = self.client.get(self.url) | ||
# self.assertEqual(response.status_code, 200) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.