質問するログイン新規登録

回答編集履歴

1

手元で挙動を見返して回答を整形(コードの変更点あり)

2021/12/05 16:06

投稿

attakei
attakei

スコア2740

answer CHANGED
@@ -1,8 +1,18 @@
1
- `User`オブジェクトが保持している`password`ではなく、あくまで保存用に不可逆変換したデータであって、生パスワードではないと思います。
1
+ ## 整理
2
- その上で、`client.login`側で求められているのは生パスワードであるため、`User.password`を渡しても不一致になるのではないでしょうか。
3
2
 
4
- 例えばこうする必要があるかなと。
3
+ 手元で挙動を見返した範囲ではコード上の問題点思われるのは次の2箇所です
5
4
 
5
+ ### `login`時に必要なのはユーザー名
6
+
7
+ 現状`self.cleint.login`でメールアドレスとパスワードを渡していますが、渡す必要があるのはユーザー名とパスワードです。
8
+
9
+ ### `password`に生パスワードを渡せていない
10
+
11
+ `User`オブジェクトが保持している`password`ではなく、あくまで保存用に不可逆変換したデータです。
12
+ `self.client.login`には生パスワードを渡す必要があります。
13
+
14
+ ## 回答となるコード例
15
+
6
16
  ```diff
7
17
  class LoggedInTestCase(TestCase):
8
18
  """各テストクラスで共通の事前準備処理をオーバーライドした独自TestCaseクラス"""
@@ -21,6 +31,6 @@
21
31
  password='user1234')
22
32
  # テスト用ユーザーでログインする
23
33
  - self.client.login(email=self.test_user.email, password=self.test_user.password)
24
- + # 生パスワードを直接指定する
34
+ + # ユーザー名と生パスワードを指定する
25
- + self.client.login(email=self.test_user.email, password='user1234')
35
+ + self.client.login(username=self.test_user.username, password='user1234')
26
36
  ```