-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SchedulerControllerの認証方法とテストコードの見直し #6961
Comments
#6929 でも同じような不具合があることがわかりました。 スケジューラーがApplicationControllerを直接継承していた場合、今の実装だとスケジューラの実行結果が200になり、異常終了していることに気づけません。 |
本件については、下記PRで対応。 scheduler配下のパスにある定期処理について、実装を確認。 bootcamp/config/routes/scheduler.rb Lines 4 to 16 in 2e6e84b
SchedulerControllerを継承していないのは以下の2つだが、それぞれ既に対応中。
以下のパスについては定期処理のweb APIのテスト自体がないので、追加する必要がある。
|
本イシューについてはこのPRで対応することとし、Web APIのテストがない定期処理へのテスト追加は、下記のイシューに切り出しました。 |
こちらのPRで対応完了しましたのでこのイシューはクローズします。 |
https://bootcamp.fjord.jp/questions/1766#answer_6533 でコメントした内容です。
問題点1:環境変数TOKENが未設定だと、認証がパスしてしまう
bootcamp/app/controllers/scheduler_controller.rb
Line 11 in e660538
上記コードで環境変数TOKENが未設定かつ、GETパラメータのtokenが未指定だと、
nil == nil
になって認証がパスしてしまう。このせいで、tokenを指定しなくてもテストがパスしてしまっている。
例
bootcamp/test/system/notification/regular_events_test.rb
Line 70 in e660538
たとえば、以下のようなコードに変えて、TOKENが設定されていなければ常に認証NGとした方がセキュリティ的に安全。
(本番環境でも万が一のTOKEN設定漏れを防げる)
その上で、スケジューラーを呼び出す既存のテストコードをtoken認証する形式に修正する。
問題点2:ユーザー認証でスケジューラーを呼び出すテストコードがある
以下のテストコードではtoken認証ではなく、ユーザー認証でスケジューラーのURLを呼びだしてしまっている。
bootcamp/test/system/notification/questions_test.rb
Line 306 in 70bb35d
そのため、該当コントーラーがSchedulerControllerを継承していない問題を検知できていないので、token認証するテストコードに修正が必要。
The text was updated successfully, but these errors were encountered: