yutokyokutyo / rebuild_sample_app

https://railstutorial.jp/chapters/static_pages?version=5.0#cha-static_pages
https://rebuildsampleapp.herokuapp.com/
5 stars 0 forks source link

9章 #12

Closed yutokyokutyo closed 7 years ago

yutokyokutyo commented 7 years ago

9.1.1

コンソールを開き、データベースにある最初のユーザーを変数userに代入してください。その後、そのuserオブジェクトからrememberメソッドがうまく動くかどうか確認してみましょう。また、remember_tokenとremember_digestの違いも確認してみてください。

irb(main):001:0> user = User.first
  User Load (0.2ms)  SELECT  "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT ?  [["LIMIT", 1]]
=> #<User id: 1, name: "Yuto Kondo", email: "k.yuto.cre@gmail.com", created_at: "2017-04-01 08:11:37", updated_at: "2017-04-02 07:05:18", password_digest: "$2a$10$.Y0rWmKxkaw9jiUvWTKDdOTLKhdWVWbSRwSyeCY/N4m...", remember_digest: nil>
irb(main):002:0> user
=> #<User id: 1, name: "Yuto Kondo", email: "k.yuto.cre@gmail.com", created_at: "2017-04-01 08:11:37", updated_at: "2017-04-02 07:05:18", password_digest: "$2a$10$.Y0rWmKxkaw9jiUvWTKDdOTLKhdWVWbSRwSyeCY/N4m...", remember_digest: nil>
irb(main):003:0> user.remember
   (0.1ms)  begin transaction
  SQL (0.7ms)  UPDATE "users" SET "updated_at" = ?, "remember_digest" = ? WHERE "users"."id" = ?  [["updated_at", 2017-04-08 08:09:02 UTC], ["remember_digest", "$2a$10$utG5YZonO2SMh9hXkRKG2Oo/16Haba8OjVAXtMIU.P/IboeTlolvm"], ["id", 1]]
   (0.7ms)  commit transaction
=> true
yutokyokutyo commented 7 years ago
  1. ブラウザのcookieを調べ、ログイン後のブラウザではremember_tokenと暗号化されたuser_idがあることを確認してみましょう。

image

  1. コンソールを開き、リスト 9.6のauthenticated?メソッドがうまく動くかどうか確かめてみましょう。

渡されたトークンがダイジェストと一致したらtrueを返す def authenticated?(remember_token) BCrypt::Password.new(remember_digest).is_password?(remember_token) end

irb(main):012:0> user.authenticated?('IPvHZnU8_HXx5h0MfmdwNg')
=> true

記憶トークンとDBに既に保存されている remember_digest を比較してtrueが返ってきているので authenticated? メソッドがやろうとしていることが達成されている。OK!

yutokyokutyo commented 7 years ago

リスト 9.33にあるauthenticated?の式を削除すると、リスト 9.31の2つ目のテストで失敗することを確かめてみましょう (このテストが正しい対象をテストしていることを確認してみましょう)。

% rails t                                                                                                                        (git)-[advanced-login]
Running via Spring preloader in process 16051
Started with run options --seed 32346

 FAIL["test_currnet_user_returns_nil_when_remember_digest_is_wrong", SessionsHelperTest, 0.12392451199957577]
 test_currnet_user_returns_nil_when_remember_digest_is_wrong#SessionsHelperTest (0.12s)
        Expected #<User id: 762146111, name: "Michael Example", email: "michael@example.com", created_at: "2017-04-10 02:12:06", updated_at: "2017-04-10 02:12:06", password_digest: "$2a$04$JynPOON9zd5zC6wW2LMNEeMN6FZentyGbiSpkx91YoR...", remember_digest: "$2a$04$j45WDTw99qOPc6/jvj4cDeqKit6e2vPxUg1M6N4ECg8..."> to be nil.
        test/helpers/sessions_helper_test.rb:17:in `block in <class:SessionsHelperTest>'

  28/28: [=========================================================================================================] 100% Time: 00:00:01, Time: 00:00:01

Finished in 1.76818s
28 tests, 70 assertions, 1 failures, 0 errors, 0 skips
yutokyokutyo commented 7 years ago

heroku maintenance:on なるほどぉ便利!

image

yutokyokutyo commented 7 years ago

完!