Rails6 で Authlogic を使ったリクエストテストがうまくいかないので調べた
どうも!
大阪府松原市でウェブを中心としたソフトウェア開発を行っています。
コワーキングスペース松原ガレッジ管理人の五島です。
いやーちょっと暑くなってきましたね!
そんなときに少し面白い現象にハマっちゃったので、メモです!
環境
・Rails6 (6.1.3.2)
・Authlogic6 (6.4.1)
現象
テストコードの内容は
①ログインしてないときにはアクセスできないこと
②ログインしているときはアクセスできること
のような単純なテスト しかし、①は成功するのに②が失敗する。
200が返ってくるはずなのに403が返ってくるので、Authlogicが原因かな〜と試行錯誤したのが間違いでした。
カンの良い方はお気づきだと思われますが、Rails6 ではドメインのチェック機能が追加されています。
実際に追加されているプルリクはこちら
したがって Authlogic を使ってログイン処理を行う際に、cookie が発行されます。
その情報を使って次のページにアクセスする際に Blocked host エラーが発生してしまったということです。
つまり対策は、テスト実行時に指定されてるドメインをホワイトリストに登録すること
config.hosts << 'www.example.com'
rspec を実行している際に、response.body を見て気づきました。
403 だからと言って、 Authlogic のせいにしてすみません!
今後も精進していきます!