From 0f1f7106b2bbd55ff599daf6d46fef6ff0047ad0 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Wed, 6 May 2015 03:12:58 +0000 Subject: [PATCH] Implement Key.authenticate --- app/models/key.rb | 6 ++++++ spec/models/key_spec.rb | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/app/models/key.rb b/app/models/key.rb index 80ffe5f..76da4dd 100644 --- a/app/models/key.rb +++ b/app/models/key.rb @@ -4,4 +4,10 @@ class Key < ActiveRecord::Base has_secure_token :token validates :name, presence: true + + class << self + def authenticate token + find_by_token token + end + end end diff --git a/spec/models/key_spec.rb b/spec/models/key_spec.rb index 0f0cfbf..05775e7 100644 --- a/spec/models/key_spec.rb +++ b/spec/models/key_spec.rb @@ -9,4 +9,20 @@ describe Key do key.save expect(key.token).to match /\A[\w\d]{24,}\z/ end + + describe '.authenticate' do + context 'when given token belong to existing key' do + before { key.save } + + it 'returns the key' do + expect(described_class.authenticate key.token).to eq key + end + end + + context 'when given token is unknown' do + it 'returns nil' do + expect(described_class.authenticate key.token).to be nil + end + end + end end