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

回答編集履歴

5

補足

2017/09/28 05:05

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -23,4 +23,5 @@
23
23
  $this->assertResponseOk(); // 入力画面に戻される
24
24
  $this->assertSession(null, 'Auth.User.id'); // セッションはない
25
25
  $this->assertResponseContains('メールアドレスまたはパスワードが違います。');
26
- ```
26
+ ```
27
+ 補足ですが、事前にフィクスチャなどでDB側にログインしようとしているユーザ情報が登録されている必要があります。

4

補足

2017/09/28 05:05

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -20,7 +20,7 @@
20
20
  'email' => 'test@example.jp',
21
21
  'password' => 'badpass'
22
22
  ]);
23
- $this->assertResponseOk();
23
+ $this->assertResponseOk(); // 入力画面に戻される
24
- $this->assertSession(null, 'Auth.User.id');
24
+ $this->assertSession(null, 'Auth.User.id'); // セッションはない
25
25
  $this->assertResponseContains('メールアドレスまたはパスワードが違います。');
26
26
  ```

3

誤字

2017/09/28 05:00

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ----
6
6
 
7
- *追記* 余談ですが、簡単なパスワード成功と失敗のテストを載せておきます。
7
+ **追記** 簡単なログインの成功と失敗のテストサンプル
8
8
 
9
9
  ```
10
10
  // ログイン成功

2

追記

2017/09/28 04:59

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -1,3 +1,26 @@
1
1
  `$this->session()`に認証した結果の情報を設定してアクセスしているので、テストコードとしてはリダイレクトされないで正しいと思いますよ。`$this->session()`をしないで`$this->get('/test/test');`をすれば、リダイレクトされると思います。
2
2
 
3
- パスワードが正しいかどうかは、認証の際にのみ確認されます。ログイン中かどうかは、sessionにAuthがあるかないかだけで判断されます。
3
+ パスワードが正しいかどうかは、認証の際にのみ確認されます。ログイン中かどうかは、sessionにAuthがあるかないかだけで判断されます。
4
+
5
+ ----
6
+
7
+ *追記* 余談ですが、簡単なパスワード成功と失敗のテストを載せておきます。
8
+
9
+ ```
10
+ // ログイン成功
11
+ $this->post('/users/login', [
12
+ 'email' => 'test@example.jp',
13
+ 'password' => 'okpass'
14
+ ]);
15
+ $this->assertResponseSuccess(); // リダイレクト
16
+ $this->assertSession(1, 'Auth.User.id'); // セッションがあるか
17
+
18
+ // ログイン失敗
19
+ $this->post('/users/login', [
20
+ 'email' => 'test@example.jp',
21
+ 'password' => 'badpass'
22
+ ]);
23
+ $this->assertResponseOk();
24
+ $this->assertSession(null, 'Auth.User.id');
25
+ $this->assertResponseContains('メールアドレスまたはパスワードが違います。');
26
+ ```

1

誤植

2017/09/28 04:58

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -1,3 +1,3 @@
1
- `$this->session()`に認証した結果の情報をしまってアクセスしているので、テストコードとしてはリダイレクトされないで正しいと思いますよ。`$this->session()`をしないで`$this->get('/test/test');`をすれば、リダイレクトされると思います。
1
+ `$this->session()`に認証した結果の情報を設定してアクセスしているので、テストコードとしてはリダイレクトされないで正しいと思いますよ。`$this->session()`をしないで`$this->get('/test/test');`をすれば、リダイレクトされると思います。
2
2
 
3
3
  パスワードが正しいかどうかは、認証の際にのみ確認されます。ログイン中かどうかは、sessionにAuthがあるかないかだけで判断されます。